This is great illustration of the brilliance of Inform 7.
I understand the appeal of Dialog -- Inform 7 can be really awkward for traditional programming constructs -- but I think I'd rather write ZIL if I'm going back to the usual control structures and OOP-style messaging.
https://www.linusakesson.net/dialog/craverly/craverly_side_b...
https://www.linusakesson.net/dialog/craverly/index.php