Game dialog tree middleware engine
The license is based on the XFree86 1.1 license. Basically:
Feel free. It would be nice of you to still credit me.
Check the "wish list" link on the top corner of this page.
I've thought of, and I've been asked, several things which seem impossible with this system, and I think they can be worked around with simple extensions and/or doing work on the game engine side.
Some examples;
Can be done by prefixing the answer and/or adding user data to the answer saying which answer it is, or changing the tools to force all questions to have certain number of answers, in certain order, or..
This is probably not a very common thing, so I'd just write special code to handle it. Apart from that, it can be kludged by saying "need:a,b not:c", "need:a,c not:b", "need:b,c not a", "need: a,b,c" with identical answers. Not pretty, but works.
Linked to question/answer tags and/or user data, handled by the engine.
User data.
These would require some slight additions to the d3 system, or some work on the game engine side.
This is a confused question.
In Monkey Island, there's several scenes where you're talking to several characters at the same time, but what you're actually having is just a single conversation. What the "questions" are are actually scripts, putting pieces of dialog on multiple character's lips.
The swordfights, and some other interesting bits in monkey island dialogs (like the bottles of beer song), are rather dynamic, and are thus not directly representative with d3.
That said, making the swordfights is entirely possible with d3 with some help from the game engine side. Basically the swordfights go like this:
One way to implement this with d3 would be to have a single card for comebacks (with a list of all possible comebacks, each shown only if certain tag is active), each leading to unique exit node. And the same for all insults. Next, a card for each insult with auto-forward to the comeback card, and so on.
Then you'd have the AI toss a question (d3_goto()), use d3 to figure out which answers are available, and when exit node is reached, the game engine would resolve whether the answer was correct.
Combining this with "normal" card handling would naturally need some more code, but that's basically how I'd approach it.
Comments, etc, appreciated, as always.