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

    Variable BMS_SCHEMA_HELPConst

    BMS_SCHEMA_HELP: {
        enums: {
            actionStyles: string[];
            arctypes: string[];
            attributes: string[];
            damageArctypes: string[];
            damageTypes: string[];
            dispositions: string[];
            hooks: {
                actionQueued: string;
                actionResolved: string;
                beforeCheck: string;
                cardDrawn: string;
                characterRested: string;
                checkRolled: string;
                combatDown: string;
                combatRound: string;
                combatTick: string;
                damageApplied: string;
                deckShuffled: string;
                effectExpired: string;
                effectQueued: string;
                effectToggled: string;
                featureDisabled: string;
                featureEnabled: string;
                geoSynergyChanged: string;
                itemExpired: string;
                itemUsed: string;
                kengaicGlyphRepaired: string;
                preCardDraw: string;
                rahmaricExpressionRestored: string;
                resourceChanged: string;
                restoreApplied: string;
                roundAdvanced: string;
                scryPerformed: string;
                tempStackConsumed: string;
                thisEffectApplied: string;
                weaponStruck: string;
            };
            iterators: string[];
            swingTypes: string[];
            vitals: string[];
        };
        examples: {
            basicAction: {
                name: string;
                system: {
                    actionStyle: string;
                    swings: {
                        duration: number;
                        negateTriggers: never[];
                        triggers: {
                            conditions: { type: string }[];
                            enabled: boolean;
                            iterator: string;
                            outcomes: { config: { amount: ...; type: ... }; type: string }[];
                        }[];
                        type: string;
                    }[];
                };
                type: string;
            };
            featureTrigger: {
                conditions: { type: string; value: string }[];
                enabled: boolean;
                hook: string;
                outcomes: { config: { message: string }; type: string }[];
            };
            saveAction: {
                name: string;
                system: {
                    actionStyle: string;
                    swings: {
                        duration: number;
                        negateTriggers: never[];
                        triggers: {
                            conditions: { type: string; value: string }[];
                            enabled: boolean;
                            iterator: string;
                            outcomes: { config: { amount: ...; type: ... }; type: string }[];
                        }[];
                        type: string;
                    }[];
                };
                type: string;
            };
        };
        hint: string;
        schema: {
            condition: {
                _description: string;
                target: string;
                type: string;
                value: string;
            };
            conditions: {
                actorDisposition: { description: string; valueFormat: string };
                always: {
                    applicableHooks: string;
                    description: string;
                    valueFormat: null;
                };
                attributeArchetype: { description: string; valueFormat: string };
                cardHadTrigger: { description: string; valueFormat: null };
                characterDisposition: { description: string; valueFormat: string };
                compelCheck: { description: string; valueFormat: string };
                damageAmount: { description: string; valueFormat: string };
                damageType: { description: string; valueFormat: string };
                everyNthTick: { description: string; valueFormat: string };
                isMarkedByOwner: { description: string; valueFormat: null };
                isThisCharacter: { description: string; valueFormat: null };
                minResolvingCount: { description: string; valueFormat: string };
                overflowAmount: { description: string; valueFormat: string };
                ownerInCombat: { description: string; valueFormat: null };
                ownerInSwing: { description: string; valueFormat: string };
                ownerIsResolving: { description: string; valueFormat: null };
                ownerResolvingType: { description: string; valueFormat: string };
                resistedAmount: { description: string; valueFormat: string };
                resourceName: { description: string; valueFormat: string };
                restoreAmount: { description: string; valueFormat: string };
                restType: { description: string; valueFormat: string };
                resultAbove: { description: string; valueFormat: string };
                resultBelow: { description: string; valueFormat: string };
                rollCheck: { description: string; valueFormat: string };
                script: { description: string; valueFormat: string };
                sideboardDrawsRemaining: { description: string; valueFormat: string };
                specificRound: { description: string; valueFormat: string };
                surgeUsed: { description: string; valueFormat: null };
                targetDisposition: { description: string; valueFormat: string };
                targetIsNotThisCharacter: { description: string; valueFormat: null };
                targetVital: { description: string; valueFormat: string };
                toResource: { description: string; valueFormat: string };
                wasCrit: { description: string; valueFormat: null };
                wasFromDeck: { description: string; valueFormat: string };
                wasNegate: { description: string; valueFormat: null };
                wasSideboardCard: { description: string; valueFormat: null };
            };
            featureTrigger: {
                _description: string;
                conditions: string;
                enabled: string;
                hook: string;
                outcomes: string;
            };
            outcome: {
                _description: string;
                config: string;
                target: string;
                type: string;
            };
            outcomes: {
                advanceSelf: { configFields: { amount: string }; description: string };
                applyDamage: {
                    configFields: { amount: string; layer: string; type: string };
                    description: string;
                };
                applyEffect: {
                    configFields: { duration: string; effectName: string; queue: string };
                    description: string;
                };
                applyRestore: {
                    configFields: { amount: string; targetKey: string };
                    description: string;
                };
                changeAttribute: {
                    configFields: {
                        amount: string;
                        arctype: string;
                        attribute: string;
                        field: string;
                        operation: string;
                    };
                    description: string;
                };
                changeResource: {
                    configFields: {
                        amount: string;
                        operation: string;
                        resourceKey: string;
                    };
                    description: string;
                };
                changeVital: {
                    configFields: {
                        amount: string;
                        field: string;
                        operation: string;
                        vital: string;
                    };
                    description: string;
                };
                chatMessage: { configFields: { message: string }; description: string };
                markActor: { configFields: { duration: string }; description: string };
                queueAction: {
                    configFields: { actionName: string; priority: string };
                    description: string;
                };
                rollDamage: {
                    configFields: { amount: string; type: string };
                    description: string;
                };
                script: { configFields: { code: string }; description: string };
                unmarkActor: { configFields: {}; description: string };
                useAction: { configFields: { actionName: string }; description: string };
            };
            swing: {
                _description: string;
                duration: string;
                negateTriggers: string;
                triggers: string;
                type: string;
            };
            swingTrigger: {
                _description: string;
                _note: string;
                conditions: string;
                enabled: string;
                iterator: string;
                outcomes: string;
            };
        };
        buildAction(
            opts?: { actionStyle?: string; name: string; swings: any[] },
        ): object;
    } = ...

    Runtime-accessible schema reference for Simulacrum and console-based document construction. Attach to game.bms.help in the init hook.

    Usage: game.bms.help.hint → quick-start description game.bms.help.schema.outcomes → all outcome types with config fields game.bms.help.examples.basicAction → copy-pasteable action object game.bms.help.buildAction({...}) → build a valid Item.create() payload

    Type Declaration

    • enums: {
          actionStyles: string[];
          arctypes: string[];
          attributes: string[];
          damageArctypes: string[];
          damageTypes: string[];
          dispositions: string[];
          hooks: {
              actionQueued: string;
              actionResolved: string;
              beforeCheck: string;
              cardDrawn: string;
              characterRested: string;
              checkRolled: string;
              combatDown: string;
              combatRound: string;
              combatTick: string;
              damageApplied: string;
              deckShuffled: string;
              effectExpired: string;
              effectQueued: string;
              effectToggled: string;
              featureDisabled: string;
              featureEnabled: string;
              geoSynergyChanged: string;
              itemExpired: string;
              itemUsed: string;
              kengaicGlyphRepaired: string;
              preCardDraw: string;
              rahmaricExpressionRestored: string;
              resourceChanged: string;
              restoreApplied: string;
              roundAdvanced: string;
              scryPerformed: string;
              tempStackConsumed: string;
              thisEffectApplied: string;
              weaponStruck: string;
          };
          iterators: string[];
          swingTypes: string[];
          vitals: string[];
      }
    • examples: {
          basicAction: {
              name: string;
              system: {
                  actionStyle: string;
                  swings: {
                      duration: number;
                      negateTriggers: never[];
                      triggers: {
                          conditions: { type: string }[];
                          enabled: boolean;
                          iterator: string;
                          outcomes: { config: { amount: ...; type: ... }; type: string }[];
                      }[];
                      type: string;
                  }[];
              };
              type: string;
          };
          featureTrigger: {
              conditions: { type: string; value: string }[];
              enabled: boolean;
              hook: string;
              outcomes: { config: { message: string }; type: string }[];
          };
          saveAction: {
              name: string;
              system: {
                  actionStyle: string;
                  swings: {
                      duration: number;
                      negateTriggers: never[];
                      triggers: {
                          conditions: { type: string; value: string }[];
                          enabled: boolean;
                          iterator: string;
                          outcomes: { config: { amount: ...; type: ... }; type: string }[];
                      }[];
                      type: string;
                  }[];
              };
              type: string;
          };
      }
      • basicAction: {
            name: string;
            system: {
                actionStyle: string;
                swings: {
                    duration: number;
                    negateTriggers: never[];
                    triggers: {
                        conditions: { type: string }[];
                        enabled: boolean;
                        iterator: string;
                        outcomes: { config: { amount: ...; type: ... }; type: string }[];
                    }[];
                    type: string;
                }[];
            };
            type: string;
        }

        A basic melee action with a 4-down foreswing that deals {{draw}} + 4 kinetic damage to each target, plus a 2-down backswing.

        Usage: Item.create(game.bms.help.examples.basicAction)

      • featureTrigger: {
            conditions: { type: string; value: string }[];
            enabled: boolean;
            hook: string;
            outcomes: { config: { message: string }; type: string }[];
        }

        A feature trigger that fires on bms.damageApplied for hostile targets. The feature itself must exist on an actor — this shows the trigger array entry.

      • saveAction: {
            name: string;
            system: {
                actionStyle: string;
                swings: {
                    duration: number;
                    negateTriggers: never[];
                    triggers: {
                        conditions: { type: string; value: string }[];
                        enabled: boolean;
                        iterator: string;
                        outcomes: { config: { amount: ...; type: ... }; type: string }[];
                    }[];
                    type: string;
                }[];
            };
            type: string;
        }

        A foreswing-only action using a targeted attribute save to halve damage.

    • hint: string
    • schema: {
          condition: {
              _description: string;
              target: string;
              type: string;
              value: string;
          };
          conditions: {
              actorDisposition: { description: string; valueFormat: string };
              always: {
                  applicableHooks: string;
                  description: string;
                  valueFormat: null;
              };
              attributeArchetype: { description: string; valueFormat: string };
              cardHadTrigger: { description: string; valueFormat: null };
              characterDisposition: { description: string; valueFormat: string };
              compelCheck: { description: string; valueFormat: string };
              damageAmount: { description: string; valueFormat: string };
              damageType: { description: string; valueFormat: string };
              everyNthTick: { description: string; valueFormat: string };
              isMarkedByOwner: { description: string; valueFormat: null };
              isThisCharacter: { description: string; valueFormat: null };
              minResolvingCount: { description: string; valueFormat: string };
              overflowAmount: { description: string; valueFormat: string };
              ownerInCombat: { description: string; valueFormat: null };
              ownerInSwing: { description: string; valueFormat: string };
              ownerIsResolving: { description: string; valueFormat: null };
              ownerResolvingType: { description: string; valueFormat: string };
              resistedAmount: { description: string; valueFormat: string };
              resourceName: { description: string; valueFormat: string };
              restoreAmount: { description: string; valueFormat: string };
              restType: { description: string; valueFormat: string };
              resultAbove: { description: string; valueFormat: string };
              resultBelow: { description: string; valueFormat: string };
              rollCheck: { description: string; valueFormat: string };
              script: { description: string; valueFormat: string };
              sideboardDrawsRemaining: { description: string; valueFormat: string };
              specificRound: { description: string; valueFormat: string };
              surgeUsed: { description: string; valueFormat: null };
              targetDisposition: { description: string; valueFormat: string };
              targetIsNotThisCharacter: { description: string; valueFormat: null };
              targetVital: { description: string; valueFormat: string };
              toResource: { description: string; valueFormat: string };
              wasCrit: { description: string; valueFormat: null };
              wasFromDeck: { description: string; valueFormat: string };
              wasNegate: { description: string; valueFormat: null };
              wasSideboardCard: { description: string; valueFormat: null };
          };
          featureTrigger: {
              _description: string;
              conditions: string;
              enabled: string;
              hook: string;
              outcomes: string;
          };
          outcome: {
              _description: string;
              config: string;
              target: string;
              type: string;
          };
          outcomes: {
              advanceSelf: { configFields: { amount: string }; description: string };
              applyDamage: {
                  configFields: { amount: string; layer: string; type: string };
                  description: string;
              };
              applyEffect: {
                  configFields: { duration: string; effectName: string; queue: string };
                  description: string;
              };
              applyRestore: {
                  configFields: { amount: string; targetKey: string };
                  description: string;
              };
              changeAttribute: {
                  configFields: {
                      amount: string;
                      arctype: string;
                      attribute: string;
                      field: string;
                      operation: string;
                  };
                  description: string;
              };
              changeResource: {
                  configFields: {
                      amount: string;
                      operation: string;
                      resourceKey: string;
                  };
                  description: string;
              };
              changeVital: {
                  configFields: {
                      amount: string;
                      field: string;
                      operation: string;
                      vital: string;
                  };
                  description: string;
              };
              chatMessage: { configFields: { message: string }; description: string };
              markActor: { configFields: { duration: string }; description: string };
              queueAction: {
                  configFields: { actionName: string; priority: string };
                  description: string;
              };
              rollDamage: {
                  configFields: { amount: string; type: string };
                  description: string;
              };
              script: { configFields: { code: string }; description: string };
              unmarkActor: { configFields: {}; description: string };
              useAction: { configFields: { actionName: string }; description: string };
          };
          swing: {
              _description: string;
              duration: string;
              negateTriggers: string;
              triggers: string;
              type: string;
          };
          swingTrigger: {
              _description: string;
              _note: string;
              conditions: string;
              enabled: string;
              iterator: string;
              outcomes: string;
          };
      }
      • condition: { _description: string; target: string; type: string; value: string }

        A single condition object

      • conditions: {
            actorDisposition: { description: string; valueFormat: string };
            always: { applicableHooks: string; description: string; valueFormat: null };
            attributeArchetype: { description: string; valueFormat: string };
            cardHadTrigger: { description: string; valueFormat: null };
            characterDisposition: { description: string; valueFormat: string };
            compelCheck: { description: string; valueFormat: string };
            damageAmount: { description: string; valueFormat: string };
            damageType: { description: string; valueFormat: string };
            everyNthTick: { description: string; valueFormat: string };
            isMarkedByOwner: { description: string; valueFormat: null };
            isThisCharacter: { description: string; valueFormat: null };
            minResolvingCount: { description: string; valueFormat: string };
            overflowAmount: { description: string; valueFormat: string };
            ownerInCombat: { description: string; valueFormat: null };
            ownerInSwing: { description: string; valueFormat: string };
            ownerIsResolving: { description: string; valueFormat: null };
            ownerResolvingType: { description: string; valueFormat: string };
            resistedAmount: { description: string; valueFormat: string };
            resourceName: { description: string; valueFormat: string };
            restoreAmount: { description: string; valueFormat: string };
            restType: { description: string; valueFormat: string };
            resultAbove: { description: string; valueFormat: string };
            resultBelow: { description: string; valueFormat: string };
            rollCheck: { description: string; valueFormat: string };
            script: { description: string; valueFormat: string };
            sideboardDrawsRemaining: { description: string; valueFormat: string };
            specificRound: { description: string; valueFormat: string };
            surgeUsed: { description: string; valueFormat: null };
            targetDisposition: { description: string; valueFormat: string };
            targetIsNotThisCharacter: { description: string; valueFormat: null };
            targetVital: { description: string; valueFormat: string };
            toResource: { description: string; valueFormat: string };
            wasCrit: { description: string; valueFormat: null };
            wasFromDeck: { description: string; valueFormat: string };
            wasNegate: { description: string; valueFormat: null };
            wasSideboardCard: { description: string; valueFormat: null };
        }
      • featureTrigger: {
            _description: string;
            conditions: string;
            enabled: string;
            hook: string;
            outcomes: string;
        }

        A feature/effect trigger (hook-based)

      • outcome: { _description: string; config: string; target: string; type: string }

        A single outcome object

      • outcomes: {
            advanceSelf: { configFields: { amount: string }; description: string };
            applyDamage: {
                configFields: { amount: string; layer: string; type: string };
                description: string;
            };
            applyEffect: {
                configFields: { duration: string; effectName: string; queue: string };
                description: string;
            };
            applyRestore: {
                configFields: { amount: string; targetKey: string };
                description: string;
            };
            changeAttribute: {
                configFields: {
                    amount: string;
                    arctype: string;
                    attribute: string;
                    field: string;
                    operation: string;
                };
                description: string;
            };
            changeResource: {
                configFields: {
                    amount: string;
                    operation: string;
                    resourceKey: string;
                };
                description: string;
            };
            changeVital: {
                configFields: {
                    amount: string;
                    field: string;
                    operation: string;
                    vital: string;
                };
                description: string;
            };
            chatMessage: { configFields: { message: string }; description: string };
            markActor: { configFields: { duration: string }; description: string };
            queueAction: {
                configFields: { actionName: string; priority: string };
                description: string;
            };
            rollDamage: {
                configFields: { amount: string; type: string };
                description: string;
            };
            script: { configFields: { code: string }; description: string };
            unmarkActor: { configFields: {}; description: string };
            useAction: { configFields: { actionName: string }; description: string };
        }
      • swing: {
            _description: string;
            duration: string;
            negateTriggers: string;
            triggers: string;
            type: string;
        }

        A single swing object within an action's swings array

      • swingTrigger: {
            _description: string;
            _note: string;
            conditions: string;
            enabled: string;
            iterator: string;
            outcomes: string;
        }

        A trigger attached directly to a swing

    • buildAction: function
      • Build a valid Item.create()-ready payload for an action item.

        Parameters

        • opts: { actionStyle?: string; name: string; swings: any[] } = {}
          • OptionalactionStyle?: string

            "", "resource", "slots", "rahmara"

          • name: string

            Item name

          • swings: any[]

            Array of simplified swing descriptors: { duration: Number, type: "foreswing"|"backswing"|"mezzoswing"|"hold"|"movement", damageFormula?: string, // e.g. "{{draw}} + 4" damageType?: string, // e.g. "slash" damageLayer?: string, // "health"|"shields"|"tempHp"|"sanity" (optional) iterator?: string, // "owner"|"eachTarget"|"eachTemplate" (default "eachTarget") extraTriggers?: Array, // additional raw trigger objects to merge in }

        Returns object

        Payload suitable for Item.create()

        const payload = game.bms.help.buildAction({
        name: "Sweeping Blow",
        swings: [
        { duration: 5, type: "foreswing", damageFormula: "{{draw}} + 2", damageType: "bludgeon" },
        { duration: 3, type: "backswing" },
        ]
        });
        await Item.create(payload);