Ignoring named rules

Back to working on my Handbook tonight. I’ve reached the point where (in the 2009 edition) I was suggesting using Armed by David Ratliff. It’s not compatible with 6L38, of course, but it has no I6 inclusions, so it’s within my capacity to fix it.

I’m stumped by only one bit:

It contains the line “ignore the can’t take people’s possessions rule;”. This is still the correct name of the rule, but I can’t find any mention in the Documentation of this usage of the word “ignore.” Possibly I’m just being dense, but that may be the root of the problem.

What is the correct current syntax for bypassing a named Check rule in this manner?

“Ignore” was part of the now-eliminated procedural rule machinery and can’t exactly be rewritten mechanically, but the new way of saying something like this is “The can’t take people’s possessions rule does nothing [when…].”

In this case I think you can replace:

Check taking something (this is the can't take it with you rule): if the noun is a thing and the holder of a noun is a person (called corpse) begin; if corpse is dead then ignore the can't take people's possessions rule; end if.

with

The take people's possessions rule does nothing when the noun is a thing and the holder of the noun is a dead person.

…though I’m not positive that you can cite the “noun” in a declaration like this.

You could also do this, maybe:

[code]This is the can only take dead people’s possessions rule:
if the noun is not a thing or the holder of the noun is not a dead person, follow the can’t take people’s possessions rule.

The can only take dead people’s possessions rule substitutes for the can’t take people’s possessions rule in the check taking rulebook.[/code]

“Substitutes” is new. It drops the new rule in the rulebook where the old rule was–but the old rule is still there, so we can call it from the new rule if it applies.

“Does nothing” and “substitutes” are go-to things for replacing procedural rules.

EDIT: Changed the new examples because they would’ve applied to taking corpses rather than taking corpses’ possessions. Oops.

Hmm. It’s not working yet. I found that I had to comment out one of your phrases to get it to compile…

[code]This is the can only take dead people’s possessions rule:
if the noun is not a thing or the holder of the noun is not a dead person, follow the can’t take people’s possessions rule.

The can only take dead people’s possessions rule substitutes for the can’t take people’s possessions rule[ in the check taking rulebook].[/code]
But alas, that produces a stack overflow error. At a guess, it’s running around in a circle trying to follow the original rule, then the new one, then the original one…

Substituting “abide by” for “follow” didn’t help. Commenting out “noun is not a dead thing or the” didn’t help. Other suggestions welcome.

I fixed it by copying the rule from Standard Rules and adding a check to it to make sure the owner is not dead (line 5). Here’s the new code, in case anyone is curious:

[code]Check an actor taking (this is the new can’t take people’s possessions rule):
let the local ceiling be the common ancestor of the actor with the noun;
let the owner be the not-counting-parts holder of the noun;
while the owner is not nothing and the owner is not the local ceiling:
if the owner is a person and the owner is not dead:
if the actor is the player:
say “[regarding the noun][Those] [seem] to belong to [the owner].” (A);
stop the action;
let the owner be the not-counting-parts holder of the owner;

The new can’t take people’s possessions rule is listed instead of the can’t take people’s possessions rule in the check taking rulebook.[/code]

Whoops. Looks like I didn’t check this stuff enough. “Substitutes for” and “does nothing” are documented in section 19.5 of Writing with Inform, but I was confused about the behavior of “substitutes for”; I guess it makes one rule replace another no matter how it’s called (unless there’s a condition attached), which would lead to the stack overflow error.

I wonder if “…is listed instead of the can’t take people’s possessions rule in the check taking rulebook” would work. I think that would have the behavior I described–that is, the new rule would sit in the check taking rulebook and get called for, well, checking taking, and the old rule would sit off to the side and could be called by the new rule.

Writing a new rule to completely replace the old one is the most direct way to make sure you accomplish what you want, though.

(BTW, if a phrase from something old refuses to compile and you can’t find it in the current documentation, a good place to look for it is the 6L02 changelog; you’ll find “ignore” here as one of the phrases that was removed with procedural rules.)