This is working in part, but there is a run-time error when it tries to reference the table that never got chosen if the user waits in silence.
Any ideas?
Spoiler for length
[spoiler]Include Simple Chat by Mark Tilford.
Include Glulx Entry Points by Emily Short.
when play begins:
forbid exiting on zero;
Talking to is an action applying to one visible thing.
Understand “talk to [someone]” as talking to.
Report talking to: say “You have nothing to say.”.
Lobby is a room. Lisa is a woman in Lobby.
Instead of talking to Lisa: run a conversation from Initial Lisa.
Initial Lisa, Remember, Forgot, Silence, Default, Goodbye are chat nodes.
Report giving text for Initial Lisa:
instead say “A woman looks up as you approach her. [line break] Do you remember me? [line break]”;
Carry out finding responses to Initial Lisa: link to Remember; link to Forgot; link to Silence;
start a 2000 millisecond timer;
Report giving link to Remember:
say “Yeah I remember you” instead.
Report giving text for Remember:
say "Lisa: I thought so [line break] " instead;
Carry out finding responses to Remember: link to Goodbye;
stop the timer;
Report giving link to Forgot:
say “No, but you seem familiar” instead.
Report giving text for Forgot:
say "Lisa: How could you not remember me?[line break] " instead;
Carry out finding responses to Forgot: link to Goodbye;
stop the timer;
Report giving link to Silence:
say “…” instead;
Report giving text for Silence:
say "Lisa: Haha, you’re speechless.[line break] " instead;
Carry out finding responses to Silence: link to Goodbye;
stop the timer;
A glulx timed activity rule:
run a conversation from Silence;
stop the timer;
re-request line event in main window;
Report giving link to Goodbye: instead say “I have to go”.
Report giving text for Goodbye:
instead say “Lisa: No matter, I’ll see you soon”;
To re-request line event in main window:
(- glk_request_line_event(gg_mainwin, buffer + WORDSIZE, INPUT_BUFFER_LEN - WORDSIZE, buffer–>0); -)
To cancel line input in the/-- main-window:
(- glk_cancel_line_event(gg_mainwin, gg_event); buffer–>0 = gg_event–>2; -)
To start a/-- (T - a number) millisecond/ms timer:
(- if (glk_gestalt(gestalt_Timer, 0)) glk_request_timer_events({T}); -)
To stop the/-- timer:
(- if (glk_gestalt(gestalt_Timer, 0)) glk_request_timer_events(0); -)[/spoiler]