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

    Data model for Party Effect Link items — thin pointers to effects held on a Party actor.

    When a GM pushes an effect to all members of a party, the canonical ActiveEffect record lives on the Party actor document. Each member receives one BodyMindSoulPartyEffectLink item, which holds a single UUID reference to that canonical record via the targetEffectUuid field. The item's transferredEffects getter dereferences this UUID, returning the party-held effect so it appears in the member's own allApplicableEffects() collection without being copied into the member's own effects array.

    This pattern mirrors the existing gear-upgrade-socket dereferencing in item-item.mjs: like a socket item resolving to socketed upgrades, a party-effect-link item resolves to a party-held canonical record. The member's pointer item is a real document they own (can delete to opt out), while the actual effect definition remains on the Party for centralized management, origin-forwarding, and per-member independent stack counts.

    These items are hidden from the actor sheet's items tab (not in the explicit allow-list of item/feature/action/rune), keeping them invisible to the player UI.

    Hierarchy (View Summary)

    Index
    • get transferredEffects(): ActiveEffect[]

      Resolves the party-held effect this item points to, returning it so it appears in the owning actor's effective effects collection.

      If the target UUID is missing or the effect is no longer accessible, returns an empty array (graceful degradation — the effect simply stops applying, leaving the now-orphaned pointer item for manual cleanup).

      Returns ActiveEffect[]

      The referenced party-held effect, or an empty array if the target does not exist.

    • get transfersEffects(): boolean

      Party effect link items always transfer the effects they point to.

      Returns boolean

    • Convert the schema to a plain object.

      The built in toObject() method will ignore derived data when using Data Models. This additional method will instead use the spread operator to return a simplified version of the data.

      Returns object

      Plain object either via deepClone or the spread operator.

    • Returns { description: any; formula: any; isSocketable: any }