mwg API
    Preparing search index...

    Interface MwlHookDeclaration

    What a hook says about the attributes its own [hook] calls carry. A hook's name is checked at compile time already; without this its attributes are not, so a typo in one of a command hook's 18 modes is only discovered at the moment the scenario runs it.

    The declaration is the hook's, not the tag's: MWG checks [hook] invocations, where every attribute but name belongs to the hook. A hook= attribute on a condition-bearing tag ([victory] hook=predicate:holds value=3) keeps that tag's own schema and this does not apply, since value there is the condition's to define.

    interface MwlHookDeclaration {
        attributes?: Readonly<Record<string, MwlAttributeType>>;
        id: string;
        openAttributes?: MwlValueType;
    }
    Index
    attributes?: Readonly<Record<string, MwlAttributeType>>

    fixed attributes, name -> value type; an attribute not named here is unknown

    id: string

    the type:name id, the same string MwlHookRegistry keys an implementation by

    openAttributes?: MwlValueType

    when set, any attribute name is accepted and every value is checked as this type