Great suggestions, but theres one problem with the disappearance of NPCs happening in the “last” dialogue: there’s no way to know what is a “last dialogue”.
Suppose you have an NPC with default and alternative. The alternative happens when variable X is true. You’re assuming that once X is true and alternative is read, thats the last dialogue, but variable X can be set back to false (via lever for instance). What is someone wants to make a game where you have to set X back to false to read default again? In that case, default should be last and this developer would complain that they want the NPC to disappear after reading default the second time.
Or even yet, what if there’s an NPC with default, choice and alternative, where alternative is set by X being true, but the developer wants the NPC to disappear if the player talks to NPC while X is false, right after the choice. That would not happen if I consider alternative the last dialog, even if alternative is not triggered.
Or even: what would happen if we introduce unlimited ammount of dialogues (as has been suggested by the community)?
I think that by limiting disappearance to the first dialogue the engine just caps all divergent scenarious of “when should the NPC disappear”. It also caps possibilities, but (I think that) for a minimalistic engine, possibilities should emerge from creative workarounds, not by features.
I was considering one “disappear” checkbox per dialogue, but I also do not want the engine to look bloated and scare new users. (to me it already looks kinda intimidating, we’re actually thinking of ways to improve the UI).