"Yes" and "no" in 6M62

I’m trying to compile some of my old code in the new I7 version, but it’s throwing a syntax error at every definition which uses “yes” or “no” as a statement.

Definition: a room is known rather than unknown:
	if it is visited, yes;
	if it is familiar, yes;
	no.

Is there a way to get around this, or a new syntax for definitions?

This works by itself (if you add the line “A room can be familiar”). Is there something else in your game which defines “yes” and “no”?

Problem solved: it had to do with an obscure and unused do-nothing rulebook outcome declared in Disambiguation Control. It seems Inform no longer allows rulebook outcomes and phrases to share a name.

I’m still a bit confused as to what stops the extension from working, and I have no idea where to even begin addressing the issue. I removed the Bypass Disambiguate rules, but that only leads to abject failure.

EDIT: Solved the problem by removing another call to Bypass Disambiguate.

What stops it from working is that the original extension contains this line:

The bypass disambiguation rules have outcomes yes and no.

and in the new version of Inform, the rulebook outcomes “yes” and “no” glomp our use of “yes” and “no” everywhere else.

I’m guessing that it should work to simply rename the “yes” and “no” outcomes for bypass disambiguation. Like this:

[code]Chapter - bypass disambiguate

[
Bypass disambiguation rules allow us to use the old parser mechanism of favouring held objects in cases where it’s faster and less annoying.
By default we never do this.

Bypass disambiguation when smelling a rose: bypass.

[ note: actually, this doesn’t yet work, because it doesn’t copy in the action pattern. TO DO! ]

]

The bypass disambiguation rules are a rulebook.
The bypass disambiguation rules have outcomes bypass and don’t bypass.

Include(-

[ ChooseObjectsBypassDisambiguate rv;

	rv = FollowRulebook( (+bypass disambiguation rules+) );
	if (RulebookSucceeded() && ResultOfRule() == (+bypass outcome+)) 
	{

! print “(bypass disambig: Rulebook succeeded.)^”;

		rfalse;
	}

! print “(bypass disambig: Rulebook not succeeded.)^”;
rtrue;
];

-).[/code]

(Untested.) Though given Jon’s note that this isn’t properly implemented, it may be just as well to tear it out.

Yeah, that’s what I did: since Bypass Disambiguate doesn’t actually do anything at all I just commented out the one call to it.

The main problem is in the I6 stuff since the templates it’s altering have changed.