Chimerror Productions

Quoll Work Thread, 2024-10-14 #3 - 2024-10-14 19:26

Tags: blog gamedev inform7 programming quoll testing text adventures

OK, I am at the end of my third work session after another break, and I think I finally have the basic scaffolding up, but I am going to have to do a bit of testing.

Up until now, the tutorials basically worked that there was only one possible action to advance them. For example, the Playerr and Ada would come in, ASK for the TUTORIAL, be asked to INSCRIBE a sigil, and then after they do that the tutorial ends and advances to the next one. It's generally been pretty simple to implement with the exiting structure of the Conversation Package by Eric Eve extension.

For this tutorial node, I now want the Playerr to have Ada ask her roommate, Taffany, about any of the topics I have for Taffany to expound on before I end the tutorial. So I already have rules for responding to this without being in the tutorial like:

Response for Taffany-Being when asked-or-told about Taffany-Being:
    say "TODO: Have Taffany-Being talk about themself.".

However, a complication to this is that when Ada is talking to Taffany during the tutorial, Taffany is in a special closed convnode for the tutorial, taffany-level-1-tutorial-1-taffany-tutorial. The convnode being closed means that topics that don't have a particular rule for that convnode are rejected and the Default Response is given.

My hope was that I could just give the Response rule a name and refer to it elsewhere:

Response for Taffany-Being when asked-or-told about Taffany-Being (this is the taffany conversing about taffany rule):
    say "TODO: Have Taffany-Being talk about themself.".

[...]

Response for taffany-level-1-tutorial-1-taffany-tutorial when asked-or-told about Taffany-Being:
    abide by the taffany conversing about taffany rule.

so that I only need to write the response in one place. However, given how the machinery of Conversation Package operates this does not work, even if I tell it to follow the rule instead of abide by. So instead, I have a bit of a hack using a text substitution:

To say taffany-converse-about-taffany:
    say "TODO: Have Taffany-Being talk about themself.".

Response for Taffany-Being when asked-or-told about Taffany-Being:
    say "[taffany-converse-about-taffany]".

[...]

Response for taffany-level-1-tutorial-1-taffany-tutorial when asked-or-told about Taffany-Being:
    say "[taffany-converse-about-taffany]".

This honestly works out because I did try to have an After conversing rule to then advance the tutorial, but in the end added the phrase have glitch conclude the gnbsp 1 taffany tutorial to just the taffany-level-1-tutorial-1-taffany-tutorial version of the rule.

Of course, I then have to do this with the other 3 topics that I have prepared for Taffany, complete with their own text substitutions and tests. And I just realized that I need to make sure all of those responses in some way make it clear to the Playerr/Ada what the optional puzzle to unlock the Knight Altars is, which may get a bit interesting...

This is all fine, I guess, but definitely feels less than ideal. Admittedly this is partially because Conversation Package is written using multiple different extensions that can in theory be used directly without the others. So the concept of talking to a character about something is different than talking to a closed convnode for that character about something is different. (Open convnodes don't have the same problem because they essentially add to what can be talked about, don't block off other topics.)

Maybe one day in the far future when I am no longer doing this within a tutorial, it'll be a little less clunky because I will be depending on closed convnodes to force the Playerr a certain way less, but for now... courage.

Jaycie “chimerror” Mitchell