At the very simplest level, conversations in Janthus will be structure in this way:
1. Player X initiates a conversation with NPC Y.
2. Every sentence transmitted from Player X gets piped through a list of ResponseParsers, which uses regular expressions to determine if its the correct response provider for the given sentence, and the world/player state.
3. A response is either simple, in that it provides text response to the user,
4. Or its complex in that it expects the next sentence from the user to be one thing or another.
5. Conversations will carry state, and the parsers that are available for response may be whittled down depending on the flow of the conversation.
I hope to make this as data-driven as possible, so conversations can be stored in a conveniently editable form such as text file or something (in XML, json, whatever).
Another significant problem to solve is how to express giving things or taking things from an NPC will happen in the context of a conversation...