Using both 'report' and 'after' for an action?

Hi,
It seems like only one of the report or after blocks run for an action, while from the manual it looked like both would be run. For example in this case:

The Garden is a room.
The ball is a thing in the Garden.



Throwing is an action applying to one touchable thing.
Understand "throw [thing]" as throwing.

After throwing:
	say "After!";

Report throwing:
	say "Reporting!"

For the throw ball command, only “After!” is printed.
I would like for both “After!” and “Reporting!” to be printed, any way to do this?

Thanks!

1 Like

I’m really just guessing here, but the documentation says that ‘after’ stops the action, so maybe it doesn’t give ‘report’ a chance to do anything? I’ve noticed it does the same thing with ‘look’, and typing ‘rules on’ shows it doesn’t get checked.

It would also parallel ‘instead’, because ‘instead’ completely eliminates the middle stage of actions, so maybe ‘after’ replaces the ‘after’ portion. I’ve had this issue come up before, and it is frustrating. Someone smarter may answer you better!

2 Likes

“After” rules succeed by default, which stops any further rules from running. You can override this by saying “continue the action” at the end of your After rule.

4 Likes

By default the After rulebook stops the action if it completes, so if an After rule runs and exits with success or failure, the Report rulebook will never be reached.

You can overrule this default behaviour by using the phrase ‘continue the action’ (which exits the rule without invoking success or failure) at the end of your After rule:

After throwing:
    say "After!";
    continue the action;

‘Continue the action’ also works for Instead rules (which by default end in failure and terminate the action) should you need to move on to the rest of the action from Instead

See § 7.5. After rules in the Documentation.

3 Likes

“Instead” rules also pre-empt the check stage (where Inform’s “common sense” rules prevent a player taking something she already holds, for example.)

e.g. The book is a thing in the test room.

If the player tried the command “open book” then the game would complain that “the book isn’t something you can open” (because the game author didn’t give it that property.) An Instead rule pre-empts that check, so you can write:

Instead of opening the book, say “You flip through the book, but it seems filled with unamusing nonsense, fit only for reciting to seagulls or politicians.”

This allows the game to give a simple response without having to set up all the internal machinery of the book being “openable” and tracking the state etc.

2 Likes