NOTE — This was already discussed somewhere (possibly in the mailing list) but I'm adding it here to make it a "formal" feature request/discussion on the topic.
ALAN's VERBs system is quite flexible thanks to the DOES [ONLY/BEFORE/AFTER] construct, allowing to exploit ONLY to supersede certain actions in special context (a given actor, location or object), and BEFORE/AFTER allow adding extra messages or actions to a verb execution (e.g. an extra printed message for certain things or locations, etc.).
The only limitation I see in the current system is the lack of an instruction that can arbitrarily interrupt the verb execution at any point of of the DOES [BEFORE/AFTER] chain.
Right now, one can only use CHECKs to prevent the action and print a message, but in some circumstances it might be desirable to allow the various DOES block to execute as normal, and have a specific DOES [BEFORE/AFTER] block interrupt the execution so that it does not go any further along the chain.
Surely, the current system covers the general and broader needs of most adventures. But contexts like a library or a big-sized adventure might introduce added complexity where the ability to ensure the execution interruption at a specific point (without preventing what comes before it) could be really useful.
It's also worth noting that most IF authoring system (which all have a very similar approach to verbs execution) do in fact provide the means to abort the execution — either by a specific keyword (e.g. Inform 7) or by returning true/false from the execution block (e.g. Hugo).
ALAN's VERBs system is quite flexible thanks to the
DOES [ONLY/BEFORE/AFTER]construct, allowing to exploitONLYto supersede certain actions in special context (a given actor, location or object), andBEFORE/AFTERallow adding extra messages or actions to a verb execution (e.g. an extra printed message for certain things or locations, etc.).The only limitation I see in the current system is the lack of an instruction that can arbitrarily interrupt the verb execution at any point of of the
DOES [BEFORE/AFTER]chain.Right now, one can only use
CHECKs to prevent the action and print a message, but in some circumstances it might be desirable to allow the variousDOESblock to execute as normal, and have a specificDOES [BEFORE/AFTER]block interrupt the execution so that it does not go any further along the chain.Surely, the current system covers the general and broader needs of most adventures. But contexts like a library or a big-sized adventure might introduce added complexity where the ability to ensure the execution interruption at a specific point (without preventing what comes before it) could be really useful.
It's also worth noting that most IF authoring system (which all have a very similar approach to verbs execution) do in fact provide the means to abort the execution — either by a specific keyword (e.g. Inform 7) or by returning true/false from the execution block (e.g. Hugo).