I’ve got an Actor with a talking state, and on the talking state I have several top level topics, one of which has a ConvNode, which in turn has a TellTopic. Like this:
I’ve tried commenting various things out, and the error seems to show up if and only if the line introducing the ConvNode is present. As long as it’s commented, it runs fine (at least at first), and as soon as I introduce it, the game crashes on startup. What can I do about this? Thank you!
I suspect the problem may be due to your locating the ConvNode in the AskForTopic instead of directly in the Actor (in other words, I suspect there should only be one + sign before the ConvNode).
actor.endConversation(endConvActor) seems to work as well. The issue is, it doesn’t seem to actually end the conversation at all? Like, the player is still somehow in conversation with the actor.
Without digging into some reading, I can’t be sure where Lite and adv3 differ on the handling of conversation stuff. In adv3 you usually have to use a |.convnode nil| tag to end the node… I’m not sure what you mean about them ending after one turn, unless you have set yours to act that way (or that is a default of Lite that I’m not aware of)
if you trigger him to close the door and become hidden again and stuff, you can still talk to him as if he’s still there by saying stuff like tell about foobar. Additionally, when you knock on his door again and he appears again, when you say talk to man, it says you’re already in conversation with him
yeah I just checked Learning TADS 3 and ConvNodes in adv3Lite work in the reverse way to adv3 it seems, you have to explicitly write DefaultAnyTopic responses and stuff that explicitly call <.convstay> if you want them to stick around for longer than one turn.
I’m just hiding and unhiding him. He’s technically in the room same room as you no matter what, since you’re talking to him through his half-open door, while standing in the hallway, so it seemed unnecessarily complicated to actually have a room for the interior of his apartment.
At first glance I’m curious that sayGoodbye displays the ByeTopic, and sets gActor interlocutor to nil, but I don’t see anything about changing the otherActor’s state back to non-conv.
The only place in the Lite library where I see currentInterlocutor = nil is in the takeTurn method of the Actor. If the game thinks your actor can still see your PC, it won’t end the conversation? Do you have to set currentInterlocutor = nil manually in special situations (like closing the door)?