Can a check rule "try anonymously?"

Consider this scenario:

[code]
Test is a room.

A person has an object called the instrument played.

Bob is a man in Test.

Persuasion rule for asking bob to try doing something: Persuasion succeeds.

Playing is an action applying to one thing. Understand “play [something]” as playing.

The drum set is a thing in Test. Understand “drums” as the drum set. The snare drum is a part of the drum set. The kick drum is a part of the drum set.

Check an actor playing the instrument played of the person asked (This is the can’t play what’s being played rule):
if the person asked is the player, say “You’re already playing that.”;
stop the action.

Check an actor playing the drum set (This is the play the kick drum by default rule):
Try the actor playing the kick drum instead.

Carry out an actor playing something:
Now the instrument played of the person asked is the noun.

Report an actor playing something:
say “[The person asked] [if the person asked is yourself]are[otherwise]is[end if] now playing [the noun].”

Unsuccessful attempt by Bob playing something:
if the reason the action failed is the can’t play what’s being played rule:
say “Bob is already playing that.”;
otherwise:
say “Bob isn’t sure why he can’t do that.”

test me with “play snare/g/bob, play snare/bob,play drums/bob, play kick/bob,play drums”[/code]

In most cases, Bob’s success or failure will be reported correctly. But when the “play the kick drum by default rule” triggers a failed action, the reason the action failed is not the rule that stopped the action, but the rule that triggered the failed action. What I want instead is something like “anonymously abide by the check rules” that attempts the entire action - Before rules, Instead rules, etc. - so we actually know the real reason why the action failed. Is there a way to do that?

Eh, you’d have to unstick the action-processing rules to shoehorn it into there, for just that one little case, so it isn’t worth it. Better might be to break out your problem rule: Check an actor playing the drum set (This is the play the kick drum by default rule): Try the actor playing the kick drum; rule succeeds.
And maybe also specifically set the reason the action failed to whatever if the “rule succeeds” doesn’t clear it up.

But how do I know what to set the reason the action failed to? And won’t it get reset as soon as the check rule exits?

Oh I see, you’re needing the variable after all of that is complete. I should read closely.

With your particular example, you’re not changing the action so Check an actor playing the drum set (This is the play the kick drum by default rule): change the noun to the kick drum. works fine. Otherwise, make a new variable to save away the reason the action failed right after the Try statement, then use a First Unsuccessful attempt by when that variable isn’t the little-used do nothing rule: now the reason the action failed is that variable.

Now why didn’t I think of that? Thanks.