PunyInform v3.5 comes with a new extension: ext_talk_menu.h
The talk menu extension can be used with PunyInform (which can target Z-code v3-v8.) as well as the Inform 6 standard library (when targeting Z-code v5-v8. Glulx support may come later.).
This extension uses no objects to describe conversation topics, but a single array.
Each talkable NPC has its own section of the array, consisting of a number of topics. Each topic can have an ID, which can be used to activate or inactivate the topic. When a topic is picked by the player, it becomes “stale”, meaning it won’t show up as an option anymore. Additionaly, the author can specify that picking the topic should lead to other topics being activated, flags being set and routines being run.
Full docs can be found at https://github.com/johanberntsson/PunyInform/wiki/Manual#talk_menu
The extension can be found under lib
and an example game that uses it can be found under howto
, at https://github.com/johanberntsson/PunyInform