Skip to content

Allow Interrupting the VERBs' Execution Chain #16

Description

@tajmone

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    💡 feature requestNew feature request💡 limitationsCurrent limitations of ALAN Language, and possible solutions⭐ ALAN LangTopic: The ALAN Language and its instructions set

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions