Just out of curiosity: why is the every turn rule not referring to the actual current action?
Lab is a room.
The magic table is an enterable supporter in the lab.
Description of the table is "description: [current action]."
Instead of entering the table:
try examining the table.
After doing something:
say "after rule: [current action].".
Every turn:
say "every turn rule: [current action].".
test me with "x table / enter table".
This results in:
Release 1 / Serial number 260726 / Inform 7 v10.1.2 / D
If I’m understanding your intent, it might help to preserve the last successful action for what you are trying to do:
Last successful action is a stored action that varies.
First after doing something:
now last successful action is the current action;
continue the action.
Every turn:
say "every turn rule: [last successful action]."
That’s pretty much exactly what I was trying to do, and how I was trying to do it!
The idea was to provide specific feedback when the player performs the same action twice in a row, even if the player’s input is dispatched to a different action with an instead rule. Unfortunately, it didn’t work in my context because not all instead rules result in a different action. Sometimes only text is output, and then no further after rules are executed. I was hoping there might be a simple or relatively straightforward solution that didn’t involve making too many changes to the existing code.
Although Phil’s answer is the correct one to the question, I’m marking yours as the solution because it’ll probably be helpful if anyone else wants to solve a similar problem.
In that case you could also set the “last successful action” in a “Before doing something” rule, so that if no action succeeded, then it records the most recent action started.
You should probably rename the variable if you do that, though.