Out of curiosity, why is there a divide between group 2 and group 3 actions? It seems natural to me that actions like PUSH and SMELL could run after routines to provide custom messages, but that doesn’t work since they are group 3.
Short answer: After-routines are only called if the normal mechanics of an action could be performed, AKA the action “succeeded”. Group 3 actions have no “normal mechanics”, so they never succeed (note that the Group 3 default messages are either telling the player why they can’t/won’t perform the action, or that they do it and it’s pointless). The library wouldn’t know when to call an after-routine for a Group 3 action.
Whatever you would have wanted to do in an after-routine for a Group 3 action, you can do in a before-routine instead.
So group 2 is actions which the library can perform itself, like taking things, entering things, etc.
And group 3 is actions which the author must implement, since the library doesn’t know what pushing something is supposed to do.
Makes a lot more sense now ![]()
Correct.
The actions that are kind of edge-case, are the actions whose only mechanics are to print some information about the model world: Look, Examine, Search, Inventory. They do have built-in mechanics, but they don’t change anything about the model world. These actions are considered as Group 2 actions, so they do perform an after-stage. Wait could also be considered as one of these actions.