nesting hints/goals in adv3lite hint system

I’m writing a hint system using adv3lite and it’s not working the way I think the docs are telling me it should.

In the Adv3Lite Manual (file:////lib/adv3Lite/docs/manual/hint.htm, I find this statment…

And in the Learning TADS3 with adv3Lite (file:////lib/adv3Lite/docs/learning/LearningT3Lite.pdf) document, I find this example…

+ Goal 'How do I get past the five-headed cat?'
    [
        'Why is the cat such a problem? ',
        'What else might keep its mouths occupied? ',
        'What do cats like to chase? ',
        mouseHint,
        'You\'ll need five mice, of course, one for each mouth. '
    ]
;
++ Hint 'Perhaps the cat would be distracted by mice. ' [mouseGoal];

So my expectation is that the hint system will show successively 3 goal text lines (“why is,” “what else,” and “what do”) then the Hint text “Perhaps…” which would then link to a new round of answers defined by [mouseGoal], and then go back to the “You’ll need” closing text.

But that’s not what I get.

I get the successive text displays, and the hint text, but my equivalent of “Perhaps the cat…” is dead text—no link, and the my equivalent of [mouseGoal] is never shown.

What am I missing?

Here’s an example in a testbed environment…

#charset "us-ascii"

#include <tads.h>
#include "advlite.h"

versionInfo: GameID
    IFID = '445C38A3-AD1B-4729-957A-F584600DE5C1'
    name = 'test'
    byline = 'by Jerry Ford'
    htmlByline = 'by <a href="mailto:jerry.o.ford@gmail.com">
                  Jerry Ford</a>'
    version = '1'
    authorEmail = 'Jerry Ford <jerry.o.ford@gmail.com>'
    desc = 'Testing three person conversation.'
    htmlDesc = 'Testing three person conversation.'

;

gameMain: GameMainDef
    initialPlayerChar = me
    paraBrksBtwnSubcontents = nil
   
;

me: Actor 'me' @livingRoom
    "The main man.<.p>"
    isHim = true
    person = 2
;

livingRoom: Room 'The Living Room' 
    "The living room"
;

topHintMenu: TopHintMenu 'Hints';

+ HintMenu 'Menu title'
;
++ Goal 'The question to be answered'
    [
        'first clue',
        'second clue',
        secondaryQuestion
    ]
    goalState = OpenGoal
;
+++ secondaryQuestion: Hint 'This hint should open another goal, but it
    doesn\'t' [theNewQuestion]; 

theNewQuestion: Goal 'Where is this goal?'
    [
        'Don\'t know.'
    ]
    goalState = OpenGoal
;

Jerry

There are two problems with your code, both with the theNewQuestion object.

First, you need to put to plus signs in front of it so that it’s located in the HintMenu (assuming you actually need an intermediate level HintMenu here, though in this example it’s not really necessary).

Second, it shouldn’t start out as an OpenGoal since if it does the secondaryHint object can’t open it!

If you define it thus:

++ theNewQuestion: Goal 'Where is this goal?'
    [
        'Don\'t know.'
    ] 
;

You should find all works as expected.

Alternatively you could dispense with the intermediate HintMenu object (unless you need it to divide up a much larger set of hints) and just do this:

topHintMenu: TopHintMenu 'Hints';

+ Goal 'The question to be answered'
    [
        'first clue',
        'second clue',
        secondaryQuestion
    ]
    goalState = OpenGoal
;

++ secondaryQuestion: Hint 'This hint should open another goal, but it
    doesn\'t' [theNewQuestion]; 

+ theNewQuestion: Goal 'Where is this goal?'
    [
        'Don\'t know.'
    ]
;

And you’ll find that works fine too.