-
Notifications
You must be signed in to change notification settings - Fork 3
Allow Interrupting the VERBs' Execution Chain #16
Copy link
Copy link
Open
Labels
💡 feature requestNew feature requestNew feature request💡 limitationsCurrent limitations of ALAN Language, and possible solutionsCurrent limitations of ALAN Language, and possible solutions⭐ ALAN LangTopic: The ALAN Language and its instructions setTopic: The ALAN Language and its instructions set
Description
Activity
Metadata
Metadata
Assignees
Labels
💡 feature requestNew feature requestNew feature request💡 limitationsCurrent limitations of ALAN Language, and possible solutionsCurrent limitations of ALAN Language, and possible solutions⭐ ALAN LangTopic: The ALAN Language and its instructions setTopic: The ALAN Language and its instructions set
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).