Avoiding spoilers in disambiguation [solved]

The following piece of code shows a problem where Inform being helpful actually spoils something for the player. I don’t want the player to know about Big A before he finds Big A, but Inform shows its disambiguation right away. (Ok, they could figure that from my own error message, but the important thing is, I want to zap the parentheses in the test case below.)

[code]“Big A” by Andrew Schultz

room 1 is a room. room 2 is east of room 1. room 3 is east of room 2. Big A is a person in room 2. Big Bob is a person in room 3.

recalling is an action applying to one visible thing. understand “recall [any thing]” as recalling. does the player mean recalling Big A: it is likely.

carry out recalling:
if location of noun is unvisited:
say “I have no idea what you’re talking about.” instead;
otherwise:
say “You get your Proust on. Or Prizzoust, if you’re funky like that. Sorry, dat.”;
say “[description of noun]”;
if noun is big a:
say “But, oh, by the way…did you see ‘(Big A)’ when you recalled Big A?”;
say “I have no idea what you’re talking about.” instead;

description of Big A is “Full of awesomeness and as good-looking as ever.”. description of player is “As good-looking as ever, but not quite as good-looking as Big A.”. description of Big Bob is “Nowhere near as good-looking as Big A.”

test a with “recall a time far in the past/recall a/recall big a/recall big bob/recall bob/recall big”[/code]

Is the only solution here to make Big A privately-named, then use Eric Eve’s Epistemology (or something like it) to say:

(understand “Big A” as big-a if big-a is known)? Or is there a way to work into the parser to hide the parenthetical disambiguation for certain things?

Also, is there any way to detect keywords that expose this sort of disambiguation spoiler from the i6/i7 source? For instance, Bob doesn’t trip things, but Big A does. Testing shows other common words do & I’m wondering where I could check for myself. Standard rules didn’t turn much up and I don’t understand much of the reserved i6t files.

You can use the clarifying a parser’s choice activity to suppress these parentheses:

 Rule for clarifying the parser's choice of Big A when room 2 is unvisited [or 'of an unknown person' or whatever]: do nothing.

EDIT: I guess the reason Big Bob doesn’t trip things up is because of your does the player mean rule, which tells the game to choose Big A over Big Bob whenever there is a choice between the two.

Great, thanks! Once you mentioned that, I went back and checked. Section 17.28. Actually, the outline for section 17 seems to show a lot of holes in my knowledge–stuff I’d find useful. So I have some good reading ahead.

You’re using “recall [any thing]”, which seems contrary to the outcome you want. Isn’t there stuff in Epistemology to let you write verbs that cover only known things?

Yes, there is. I wanted to try to keep the size of the sample code down, though, and unfortunately that made my example seem less than rigorous. I’m also not generally sure of how to go about discussing extensions, or even which ones are common knowledge and which aren’t.

So while my main question was about zapping the disambiguation report, yeah, my in-game example probably needs to be much more robust than this one.

Whenever disambiguation is triggered, it lists all possible choices. This can be frustrating if there are two likely choices and then some unlikely ones, although one could imagine the reasons for designing it that way. Nevertheless, I often find myself wishing there were an “eliminate X from the match list” option for disambiguation.