Conversations framework
Conversing with NPCs in-game. There are quite a few object controllers that are used by this feature.
It's very important that we can perform specialized events for certain conversation options. The flow of a conversation is like a tree structure. It starts the player interacting with the NPC, who then starts the conversation with the root message.
Store the defined conversation flows in JSON or XML. We already use JSON, so we might as well go with that.
A radial handler must be added in order to kick off the conversation. Being out of range shouldn't be possible. Also, running too far away from the NPC should stop the conversation.
Comments (14)
-
reporter -
the NPC database contains a column about conversation_id
-
reporter Not seeing that anywhere. Which table?
-
my bad ... in the spawner tables
-
reporter I can't seem to find it in those, either. The column is named conversation_id?
-
oh well .. it used to have. i guess i removed it some time ago
-
reporter Alright. We'll just roll with the
creatureId
, then. -
remember that the same npc can be at multiple spots and have a different conversation for each location
-
reporter Okay, so we'll have to link it to the spawner somehow. That's probably for the best anyways.
-
reporter I really think we should find a way to link it to
creatureId
inAIObject
. TheAIObject
doesn't know which spawner it belongs to. -
reporter I'm thinking writing the conversations should perhaps be written as Groovy classes. We can make a conversation builder class so it's easy to do and there's a lot of flexibility.
We associate
creatureId
inAIObject
with a conversation class, as mentioned before. We can do this with radials. -
reporter -
assigned issue to
-
assigned issue to
-
- changed status to on hold
-
- changed milestone to Conversation
- Log in to comment
AIObject
has acreatureId
field, which we could use to link a specific NPC to a given conversation.