Body, Mind & Soul — API Reference
    Preparing search index...

    ActiveEffect subtype that "ramps" via a numeric stack count.

    The stages map (TypedObjectField keyed by stringified threshold) holds discrete payloads — modifications, triggers, native AE changes, optional name/img — that are projected onto the live AE based on the highest threshold ≤ stackCount.

    Sparse keys are intentional: { 1, 2, 4 } means stack 3 floors down to the level-2 stage, and stack 5 stays on level-4.

    system.modifications and system.triggers are inherited from BodyMindSoulActiveEffect and act as the "always-on" baseline; the active stage's contributions are appended during prepareDerivedData, not substituted.

    Hierarchy (View Summary)

    Index
    _sortedTriggers: any[] | undefined
    auraLightConfig: any
    drawAppend: any
    modifications: any
    • get activeStage(): { stage: default; threshold: number } | null

      Highest-threshold stage whose key ≤ stackCount. Returns null when stackCount is 0 or no stage qualifies.

      Returns { stage: default; threshold: number } | null

    • get isSuppressed(): boolean

      A stackable effect with no active stage contributes nothing — including no native AE changes — so we tell Foundry to skip it. Toggleable-feature suppression from the parent class still applies (super check first).

      Returns boolean

    • get triggerConsumerType(): string

      Returns string

    • Get effects available for trigger outcomes (e.g., applyEffect). For ActiveEffects, returns sibling effects from the parent, excluding self.

      Returns { id: string; name: string }[]

    • Returns {
          conditionChoices: { [k: string]: any };
          conditionConfigFields: {};
          conditionConfigPartials: {};
          conditionsNeedValue: {};
          conditionValueHints: {};
          hookChoices: { [k: string]: any };
          localizedConditionsByHook: {};
          localizedSubConditionsByMetaType: {};
          metaConditions: {};
          outcomeChoices: { [k: string]: any };
          outcomeConfigPartials: {};
          scopeableConditions: {};
          targetScopeChoices: {};
      }

    • Project the active stage's contributions onto the surfaces actor / Foundry code reads:

      • this.modifications gets the stage's mods appended
      • this.triggers gets the stage's triggers appended
      • this.drawAppend appends the stage's text
      • the parent AE's changes array is replaced with baseline + stage changes
      • the parent AE's name/img/description are overlaid when the stage provides values

      stackCount === 0 keeps every projection inert, so isSuppressed (below) reports true and Foundry skips the effect entirely.

      Returns void

    • Returns {
          appendKeywords: MergeableArrayField;
          auraColor: any;
          auraDisposition: any;
          auraIncludeOwner: any;
          auraLightConfig: any;
          auraLightEnabled: any;
          auraRadiate: any;
          auraRange: any;
          auraShape: any;
          auraTargetEffectUuid: any;
          auraType: any;
          auraVisibility: any;
          changes: any;
          defaultDuration: any;
          defaultDurationUnit: any;
          drawAppend: any;
          isAura: any;
          isPassive: any;
          modifications: MergeableArrayField;
          triggers: TypedObjectField;
      }

    • Parameters

      • source: any

      Returns any

    • Build the shared triggers TypedObjectField schema.

      Returns TypedObjectField