Ich habe ein ähnliches Problem, ein Kollege von mir arbeitet derzeit daran.
Prinzipiell gibt es zwei Möglichkeiten.
1) nodebasiert
Die Methode, die wir wohl anwenden werden. Jeder Knoten ist dabei Text des NPCs, der mit einer beliebigen Anzahl von Antwortknoten verbunden werden kann, die wiederum auf NPC-Nodes verweisen. Übergänge von NPC- zu Antwort-Nodes können zusätzlich mit Bedingungen verknüpft werden (z.B. player.karma > 50), außerdem kann jeder Übergang Aktionen enthalten (give_NPC(someItem) etc.). Vorteil ist, dass man recht flexibel Rückwärtskanten hinzufügen kann und wild hin- und herspringen kann. Dafür geht die Übersicht irgendwann flöten. Hilfreich ist, wenn man Gesprächsteile in einem neuen Supernode vereinen kann, damit man nachher nicht den ganzen Bildschirm gefüllt hat
2) treebasiert
Es gibt einen Startknoten, jede Antwort führt zu einem Subtree, bis man irgendwann in den Blättern landet oder irgendeine Antwort dafür sorgt, dass man einige Ebenen zurückspringt. Ist sehr übersichtlich, dafür ist es nicht ganz so flexibel.
Brauchst du das für A8 oder für irgendwas externes? Eventuell wird das Ding nämlich in ein paar Wochen fertiggestellt und ich kann das bestimmt aus dem kompletten Editor extrahieren, sodass es wiederverwendbar ist.