I may need to email Eric Eve about this, but I figured I’d start here, on the off-chance that someone may have a wonderful suggestion.
One of the things a player ran into in my Comp game is that after the wizard is asleep, commands that are not understood by the parser will always trigger his DefaultAnyTopic. This happens because the Actor’s ActorState mechanism is still active. Here’s an example from my test game. First the output:
The Lab
A not entirely sterile room filled with bubbling retorts, oscilloscopes, and discarded candy wrappers.
You can see a trash can, a duck, a hammer, and a plank here.
A hamster is curled in the corner, snoring gently.
>talk to hamster
You now have the hamster’s attention.
>whistle at duck
The hamster is snoring. Best leave him alone.
The line, “You now have the hamster’s attention,” indicates that the hamster’s conversation nodes have been activated. In the test scenario, that’s a second problem, but we can ignore that. The problem is the last response. Here’s the code:
+ hamster: Actor 'hamster; cute little; rodent critter'
"It's cuddly. "
;
++ hamsterSnoozing: ActorState
isInitState = true
specialDesc = "A hamster is curled in the corner, snoring gently. "
stateDesc = "Not unlike the proverbial dormouse, the hamster appears to be
fast asleep. "
;
+++DefaultAnyTopic
"The hamster is snoring. Best leave him alone. "
;
I tried replacing the DefaultAnyTopic with a DefaultAskTellTopic and a DefaultGiveShowTopic, but that doesn’t help. The parser still tries to route the not-understood input to the hamster, but because he no longer has a DefaultAnyTopic, now the response to “whistle at duck” is, “The hamster does not respond.” Arrggh!
I don’t know enough about adv3Lite’s internals to figure this out. Stepping through stuff in Workbench is possible, but extremely tedious. Also humbling, when you realize the library goes through easily a hundred calls to methods before the output is printed.