I am a complete sucker for varying my messages, or for making a wry parser riposte the first time but printing something more neutral on succeeding repetitions. Clearly, shuffled
and stopping
as embedded expressions are fundamental tools for accomplishing that in most applications.
Most TADS users quickly become aware, however, that verify
routines are called numerous times “behind the scenes” before the action is ultimately carried out upon entering a command. And every time that “invisible” verify
is called, the illogical message gets invisibly evaluated, causing the shuffled/stopping mechanisms to advance even though their results aren’t seen. Practically speaking, you can never do a [first response/subsequent response] setup in an illogical message. The shuffling ends up looking more like a call to rand
.
Does anyone have any neat solutions for this? I know that I thought about it a couple years ago, but I was feeling the crunch of trying to complete a massive game and left my investigations without having found anything really satisfactory.
If you’re really desperate for a first/subsequent, you can just use <.reveal> tags, but that gets cumbersome for wholesale use. A few times I made use of a custom <.ver> tag, where the illogical message was just the tag and its argument, and the conversationManager replaced the tag with a message property given by the tag argument. That way the actual message was not evaluated repeatedly.
But it had limitations, and was prohibitively cumbersome as well.
If anyone wants an academic challenge of how to effect what I’m asking for, I’d love to hear about it!