I6 inclusions: in-game messages about window, parent, stream

Well, what I was thinking was something like this.

Change Parser Letter H to something looking like this:

Include (- .GiveError; ! RD: If we hit a parser error while processing disambiguation, that means we failed to understand ! RD: the answer to the question as a disambiguation response. ! RD: So we reprocess that as a new command. if (processing_disambiguation == 1) { print "I couldn't understand that as a response to the question, so I am treating that as a new command. (This should be a library message.)"; ! RD: now since we've given up on processing this as a disambiguation command ! RD: we reset the flags to note that we aren't processing a disambiguation anymore ! RD NEW COMMENT: and set another flag so instead of trying to read a command on the next turn, we just read in the secondary buffer processing_disambiguation = 0; asked_for_disambiguation = 0; new_magic_flag = 1; ! RD NEW COMMENT: I'm guessing I need to do rtrue here to get this to stop nicely without printing anything rtrue; } ! RD: That's the end of the Responsive Disambiguation code ! RD: if we weren't processing disambiguation, we give a parser error as usual etype = best_etype; if (actor ~= player) { if (usual_grammar_after ~= 0) { verb_wordnum = usual_grammar_after; jump AlmostReParse; } wn = verb_wordnum; special_word = NextWord(); if (special_word == comma_word) { special_word = NextWord(); verb_wordnum++; } parser_results-->ACTION_PRES = ##Answer; parser_results-->NO_INPS_PRES = 2; parser_results-->INP1_PRES = actor; parser_results-->INP2_PRES = 1; special_number1 = special_word; actor = player; consult_from = verb_wordnum; consult_words = num_words-consult_from+1; rtrue; } -)

where, instead of the stuff where I tried to reparse when I hit a parser error while disambiguating, I just set a flag “new_magic_flag” and end quietly. (At least I think “rtrue” ends quietly; surely there must be some way to end quietly at this point. If worst comes to worst I could write a rule for printing a parser error that suppresses all output when new_magic_flag is set.) New comments in there are marked with “RD NEW COMMENT:”.

And then I would do a For reading a command rule something like this, where “reprocessing a failed disambiguation” translates the I6 variable your_magic_flag (I might need to be more careful about truth states versus number variables there):

For reading a command when reprocessing a failed disambiguation is true: change the player's command to [the contents of buffer2, however I can access them; or possibly I can have Parser Letter H copy buffer2 into buffer and then change the layer's command to the contents of buffer, if that's easier].

So I’m not actually trying to do “for reading a command” on the disambig input. The sequence is supposed to be like this:
player inputs “x board”
game asks for disambiguation
player inputs “jump”
game attempts to process “x jump board” as usual
command fails to parse, sending us to Parser Letter H
that code in parser letter H sets new_magic_flag/reprocessing a failed disambiguation, and prints the message saying it’s trying to reparse the disambiguation
the input loop ends, and we go to the next one, which calls the Reading A Command activity as usual
our new For Reading A Command rule runs and reads in “jump” from buffer2 (or wherever we managed to store it)
the parser runs on “jump”
this gets processed into the jumping activity, as usual.

Does that make more sense? I don’t think I’m trying to do the impossible thing.