chroma_solstice/dialogable.lua

16 lines
598 B
Lua
Raw Normal View History

2026-08-08 00:09:44 -04:00
-- Dialogable: a mixin that makes any Entity subclass talkable. `include` it and
-- give the entity a `self.book` (an Ink book); bumping the entity then opens the
-- modal Dialogue. npcs, signs, artifacts — anything you can talk to — are just
-- Dialogables. For now an entity carries one book; later it can swap books as it
-- progresses. All it does is route a bump to the dialogue manager.
Dialogable = {}
function Dialogable:onBump()
2026-08-12 12:27:52 -04:00
if self.book then
local wasOpen = Dialogue.isOpen()
Dialogue.open(self.book)
if Sound and not wasOpen then Sound.jabber() end
end
2026-08-08 00:09:44 -04:00
return true
end