Override and extend the basic :class:Item implementation

Hierarchy (view full)

Constructors

Properties

Accessors

Methods

Constructors

  • Parameters

    • Rest...args: [data?: ItemDataConstructorData, context?: Context<ActorPF>]

    Returns ItemPF

Properties

_memoryVariables: undefined | null | {}
actions: any

A Collection of ItemActions.

changes: undefined | Collection<any>
links: undefined | Record<string, ItemPF>

An object containing links to other items.

scriptCalls: any
system: Readonly<{
    hasActions: true;
    hasChanges: true;
    hasIdentifier: true;
    isPhysical: boolean;
    subtypeName: false;
}> = ...

A static object holding system-specific metadata applicable to all instances of this Document class.

Type declaration

  • hasActions: true

    Whether this item has actions.

  • hasChanges: true

    Whether this item has changes and change flags.

  • hasIdentifier: true

    Whether this item receives an identifier.

  • isPhysical: boolean

    Whether this item is a physical one, possessing properties like quantity or weight.

  • subtypeName: false

    Subtype name should be used as default name.

Accessors

  • get allDamageSources(): undefined | ItemChange[]
  • Generic damage source retrieval for default action, includes default conditionals and other item specific modifiers.

    Returns undefined | ItemChange[]

    All relevant changes, or undefined if action was not found.

  • get attackSources(): undefined | object[]
  • Return attack sources for default action.

    Returns undefined | object[]

    Array of value and label pairs for attack bonus sources on the main attack.

  • get effect(): null | ActiveEffect
  • An active effect associated with this item.

    Returns null | ActiveEffect

    • Most item types don't have associated effect.
  • get hasChanges(): any
  • Whether the item is tangible physical object in reality.

    Returns any

    • You can utilize this with raw data via CONFIG.Item.documentClasses[type]?.isPhysical
  • get isActive(): boolean
  • Is the item is fully functional.

    This returns composite result of if the item is equipped, has quantity, is not disabled, is not out of charges, etc. and is not representative if the item can be set active or not via setActive.

    Returns boolean

  • get isPhysical(): any
  • Whether the item is tangible physical object in reality.

    Returns any

    • You can utilize this with raw data via CONFIG.Item.documentClasses[type]?.isPhysical
  • get memoryVariables(): string[]
  • Returns string[]

    The keys of data variables to memorize between updates, for e.g. determining the difference in update.

  • get isPhysical(): boolean
  • Whether the item is tangible physical object in reality.

    Returns boolean

    • You can utilize this with raw data via CONFIG.Item.documentClasses[type]?.isPhysical

Methods

  • Internal

    Test if specified link can be created.

    Parameters

    • type: string

      The type of link.

    • item: Item

      The target item to link to.

    Returns boolean

    Whether a link to the item is possible here.

  • Internal

    Parameters

    • type: string

      The type of link.

    • item: object

      The target item to link to.

    • uuid: string

      The link identifier for the item.

    Returns any[]

    An array to insert into this item's link data.

  • Parameters

    • data: object

      Creation data

    • context: object

      Creation context options

    • userId: string

      Triggering user ID

    Returns void

  • Parameters

    • context: object

      Delete context options

    • userId: string

      Triggering user

    Returns void

  • Parameters

    • changed: object

      Changed data

    • context: object

      Context

    • userId: string

      Triggering user ID

    Returns void

  • Internal

    Parameters

    • data: object

      Creation data

    • context: object

      Context

    • user: User

      Triggering user

    Returns Promise<void>

  • Prepare data potentially dependent on other items.

    This should be run at in Item.prepareDerivedData() if no actor is present, or in actor's prepareDerivedData after document preparation is done.

    Parameters

    • final: boolean = false

      Is this final call to this?

    Returns void

  • Internal

    Parameters

    • changed: object

      Changed data

    • context: object

      Context

    • user: User

      Triggering user

    Returns Promise<void>

  • Internal

    Fake DataModel-like behaviour

    Ensure numeric bits remain numbers

    Parameters

    • system: object

      System data

    Returns void

  • Internal

    Recharges item's uses, if any.

    Parameters

    • options: {
          exact: boolean;
          period: undefined | string;
          rollData: undefined | object;
      } = {}

      Options

      • exact: boolean

        Exact time period only

      • period: undefined | string

        Recharge only if matching this time period

      • rollData: undefined | object

        Roll data

    Returns undefined | object

    • Update data or undefined if no update is needed.
  • Internal

    Recharges item's uses, if any.

    Parameters

    • options: {
          exact: undefined | boolean;
          maximize: undefined | boolean;
          period: undefined | string;
          rollData: undefined | object;
          value: undefined | number;
      } = {}

      Options

      • exact: undefined | boolean

        Match only exact time period

      • maximize: undefined | boolean

        Maximize instead of using recharge formula

      • period: undefined | string

        Recharge only if it matches this time period

      • rollData: undefined | object

        Roll data instance

      • value: undefined | number

        Set charges to specific value

    Returns Promise<undefined | object>

    • Update data or undefined if no update is necessary.
  • Internal

    Transform given data so it becomes valid update data within parent item.

    This can, for example, be used to generate batched update to the real item.

    Parameters

    • data: object

      Update data

    • Optionaloptions: {
          recursive: undefined | boolean;
      } = {}

      Additional options

      • recursive: undefined | boolean

        Create data recursively, meant for the real item document.

    Returns object

    • Transformed update data
    _transformContainerUpdateData({ name: "new name" })
    // => { system: { items: { [itemID]: { name: "new name" } } } }
  • Generic charge addition (or subtraction) function that either adds charges or quantity, based on item data.

    Parameters

    • value: number

      The amount of charges to add.

    Returns Promise<void | ItemPF>

    Updated document or undefined if no update is possible.

  • Sets a boolean flag on this item.

    Parameters

    • flagName: string

      The name/key of the flag to set.

    • context: object = {}

      Update context

    Returns Promise<boolean>

    Whether something was changed.

  • Creates a link to another item.

    Parameters

    • type:
          | "children"
          | "charges"
          | "supplement"
          | "classAssociatons"

      The type of link.

    • item: Item

      The target item to link into this.

    • OptionalextraData: object

      Additional data to store int he link

    Returns boolean

    • Whether a link was created.
  • Display the chat card for an Item as a message in chat

    Parameters

    • OptionalaltChatData: object = {}

      Optional data that will be merged into the chat data object.

    • Optionaloptions: {
          token: undefined | TokenDocument;
      } = {}

      Additional options.

      • token: undefined | TokenDocument

        Relevant token if any.

    Returns Promise<void | ChatMessage>

    Chat message instance if one was created.

  • Executes all script calls on this item of a specified category.

    Parameters

    • category: string

      The category of script calls to call.

    • OptionalextraParams: Record<string, any> = {}

      A dictionary of extra parameters to pass as variables for use in the script.

    • Optionalshared: object = {}

      Shared data object

    Returns Promise<object>

    The shared object between calls which may have been given data.

  • Attack sources for a specific action.

    Parameters

    • actionId: string

      Action ID

    • Optionaloptions: {
          rollData: undefined | object;
      } = {}

      Additional options

      • rollData: undefined | object

        Roll data instance

    Returns undefined | object[]

    Array of value and label pairs for attack bonus sources on the main attack, or undefined if the action is missing.

  • Generates lists of change targets this item can have.

    Parameters

    • target: string

      The target key, as defined in PF1.buffTargets.

    Returns Record<string, string>

    A list of changes

  • Item specific conditional targets.

    Parameters

    • target: string

      Conditional target

    • result: Record<string, string>

      Result key to label mapping.

    Returns void

  • Finds, filters and alters changes relevant to a context, and returns the result (as an array)

    Parameters

    • context:
          | "mattack"
          | "nattack"
          | "rattack"
          | "tattack"
          | "wdamage"
          | "mwdamage"
          | "rwdamage"
          | "twdamage"
          | "rdamage"
          | "mdamage"
          | "ndamage"
          | "sdamage"
          | "tdamage" = ...

      The given context.

    Returns ItemChange[]

    • The matching changes.
    • Always returns empty array if no actor is present.
  • Get default charge cost for all actions.

    Parameters

    • Optionaloptions: {
          rollData: undefined | object;
      } = {}

      Additional options

      • rollData: undefined | object

        Roll data instance

    Returns number

    Number for default cost.

  • Get full description.

    Parameters

    • options: {
          body: undefined | boolean;
          chatcard: undefined | boolean;
          data: undefined | object;
          header: undefined | boolean;
          isolated: undefined | boolean;
          rollData: undefined | object;
      } = {}

      Item type dependant options for rendering the description.

      • body: undefined | boolean

        Include main description body if such exists.

      • chatcard: undefined | boolean

        Instruct template to render chat card in mind.

      • data: undefined | object

        Template data for rendering

      • header: undefined | boolean

        Include header if such exists.

      • isolated: undefined | boolean
      • rollData: undefined | object

        Roll data for transforming description

    Returns string

    • Full description.
  • Description Data

    Parameters

    • options: {
          isolated: undefined | boolean;
          rollData: undefined | object;
      } = {}

      Additional options

      • isolated: undefined | boolean

        Include extra data to reflect it not being so easily available in context.

      • rollData: undefined | object

        Roll data instance

    Returns object

    • Description context data
  • Parameters

    • flagName: string

      The name/key of the flag to get.

    Returns undefined | string | number

    The value stored in the flag.

  • Get all item dictionary flags as array of objects.

    Returns Record<string, any>

    • All dictionary flags
  • Returns labels for this item

    Parameters

    • Optionaloptions: {
          actionId: undefined | string;
          isolated: any;
          rollData: undefined | object;
      } = {}

      Additional options

      • actionId: undefined | string

        ID of one of this item's actions to get labels for; defaults to first action

      • isolated: any
      • rollData: undefined | object

        Roll data to use.

    Returns Record<string, string>

    This item's labels

  • Get item links of type

    Parameters

    • type: string

      Link type

    • includeLinkData: boolean = false

      Include link data, return value changes from item array to object array

    • Optionaloptions: {
          _results: undefined | Set<any>;
          recursive: undefined | boolean;
      } = {}

      Additional options

      • _results: undefined | Set<any>

        Internal use only.

      • recursive: undefined | boolean

        Retrieved linked items recursively.

    Returns object[] | Item[]

    • Linked items, or objects with linked items and additional data
  • Retrieve list of linked items for a type, synchronously. Intended mainly for fetching child or charge links quickly.

    Parameters

    • type: string

      Link type, e.g. "children", "charges", or "classAssociations"

    • Optionaloptions: {
          _results: undefined | Set<string>;
          recursive: undefined | boolean;
      } = {}

      Additional options

      • _results: undefined | Set<string>

        Internal use only

      • recursive: undefined | boolean

        Retrieve links recursively.

    Returns object[] | Item[]

    Linked items or their compendium index data

    const childItems = item.getLinkedItemsSync("children");
    
  • Parameters

    • Optionalweapon: boolean = true

      Get proficiency as a weapon. Armor otherwise.

    Returns boolean

    • Whether or not the owner of the item is proficient.
    • If item type does not support proficiency.

    PF1 v10

  • Determines the starting data for an ActiveEffect based off this item.

    Parameters

    • options: {
          rollData: object;
      } = {}

      Additional options

      • rollData: object

        Roll data

    Returns object

    • Active Effect creation data
  • Per item type chat data.

    Parameters

    • data: ChatData

      A partial of a chat data object that can be modified to add per item type data.

    • labels: Record<string, any>

      The labels for this item.

    • props: string[]

      Additional property strings

    • rollData: object

      A rollData object to be used for checks

    • Optionaloptions: {
          actionId: undefined | string;
          chatcard: undefined | boolean;
      } = {}

      Additional options

      • actionId: undefined | string

        Action this pertains to, if any.

      • chatcard: undefined | boolean

        Is this for a chat card?

    Returns void

  • Parameters

    • flagName: string

      The name/key of the flag on this item.

    Returns boolean

    Whether the flag was found on this item.

  • Recharges item's uses, if any.

    Parameters

    • options: {
          commit: undefined | boolean;
          context: undefined | object;
          exact: undefined | boolean;
          maximize: undefined | boolean;
          period:
              | undefined
              | "round"
              | "minute"
              | "hour"
              | "day"
              | "week"
              | "any";
          rollData: undefined | object;
          value: undefined | number;
      } = {}

      Options

      • commit: undefined | boolean

        Commit update directly. If false, returns the update data instead.

      • context: undefined | object

        Update context

      • exact: undefined | boolean

        Use exact time period. Otherwise "week" for example will also recharge items with "day" period.

      • maximize: undefined | boolean

        Recharge to full regardless of recharge formula.

      • period:
            | undefined
            | "round"
            | "minute"
            | "hour"
            | "day"
            | "week"
            | "any"

        Recharge period. Use "any" to ignore item's configuration.

      • rollData: undefined | object

        Roll data instance to use for formulas.

      • value: undefined | number

        Recharge to specific value, respecting maximum and minimum bounds.

    Returns Promise<undefined | object | ItemPF>

    • Promise for the update, update data object, or undefined (no update needed).
  • Removes a boolean flag from this item.

    Parameters

    • flagName: string

      The name/key of the flag to remove.

    • context: object = {}

      Update context

    Returns Promise<boolean>

    Whether something was changed.

  • Removes a dictionary flag from this item.

    Parameters

    • flagName: string

      The name/key of the flag to remove.

    • context: object = {}

      Update context

    Returns Promise<boolean>

    Whether something was changed.

  • Removes all link references to an item.

    Parameters

    • uuid: string

      The UUID of the item to remove links to.

    • Optionaloptions: {
          commit: undefined | boolean;
      } = {}

      Additional options

      • commit: undefined | boolean

        Commit changes to database. If false, resulting update data is returned instead.

    Returns Promise<undefined | object | Item>

    • Updated document, update data, or undefined
  • Set item's active state.

    Parameters

    • active: boolean

      Active state

    • Optionalcontext: object

      Optional update context

    Returns Promise<ItemPF>

    • Update promise if item type supports the operation.
    • If item does not support the operation.
  • Sets a dictionary flag value on this item.

    Parameters

    • flagName: string

      The name/key of the flag to set.

    • value: string | number

      The flag's new value.

    • context: object = {}

      Update context

    Returns Promise<boolean>

    Whether something was changed.

  • Parameters

    • data: object

      Update data

    • context: object = {}

      Context

    Returns Promise<Item>

    • Updated item
  • Use an attack, using SharedActionData

    Parameters

    • options: {
          actionId: undefined | string;
          chatMessage: undefined | boolean;
          cost: undefined | number;
          dice: undefined | string;
          ev: undefined | null | Event;
          options: undefined | UseOptions;
          rollMode: undefined | string;
          skipDialog: undefined | boolean;
          token: undefined | TokenDocument;
      } = {}

      Options

      • actionId: undefined | string

        The ID of the action to use, defaults to the first action

      • chatMessage: undefined | boolean

        Whether to send a chat message for this action

      • cost: undefined | number

        Cost override. Replaces charge cost or slot cost as appropriate.

      • dice: undefined | string

        The base dice to roll for this action

      • ev: undefined | null | Event

        The event that triggered the use, if any

      • options: undefined | UseOptions

        Additional use options.

      • rollMode: undefined | string

        The roll mode to use for the chat message

      • skipDialog: undefined | boolean

        Whether to skip the dialog for this action

      • token: undefined | TokenDocument

        Token this action is for, if any.

    Returns Promise<void | ActionUse | SharedActionData>

    • Action use, shared data, or nothing.
    • On some invalid inputs.
  • Protected

    Adjust temporary item before creation

    Parameters

    • Optionalitem: ItemPF

      Temporary document

    • Optionaldata: object

      Creation data

    • Optionaloverride: boolean = false

      Override values even if defined

    Returns void

  • Internal

    Determine whether a given change set affects size

    Parameters

    • data: object

      Item data

    Returns boolean

    • Contains size targeting change
  • Internal

    Determine whether a given change set affect senses

    Parameters

    • changes: object

      An object containing changeFlags and changes to be inspected.

    Returns boolean

    • Vision alteration detected
  • Internal

    Chat card actions

    Parameters

    • action: string

      Button action ID

    • options: {
          button: undefined | Element;
          event: undefined | Event;
          item: undefined | ItemPF;
      } = {}

      Additional options

      • button: undefined | Element

        Button element

      • event: undefined | Event

        Triggering event

      • item: undefined | ItemPF

        Item associated with card

    Returns any

    • ???
  • On-Create Operation

    Post-create processing so awaiting the original operation has all secondary updates completed when it returns.

    Parameters

    • documents: Document[]

      Documents

    • operation: any

      Operations and context data

    • user: User

      Triggering user

    Returns Promise<void>

  • On-Delete Operation

    Post-delete processing so awaiting the original operation has all secondary updates completed when it returns.

    Parameters

    • documents: Document[]

      Documents

    • operation: any

      Operations and context data

    • user: User

      Triggering user

    Returns Promise<void>

  • On-Update Operation

    Post-update processing so awaiting the original operation has all secondary updates completed when it returns.

    Parameters

    • documents: Document[]

      Documents

    • operation: any

      Operations and context data

    • user: User

      Triggering user

    Returns Promise<void>

  • Item create dialog.

    Parameters

    • data: object = {}

      Initial form data

    • Optionalcontext: {
          options: undefined | object;
          pack: undefined | null | string;
          parent: undefined | null | Actor;
          types: undefined | string[];
      } = {}

      Additional options.

      • options: undefined | object

        Dialog context options.

      • pack: undefined | null | string

        Pack ID parameter passed to Item.create() options

      • parent: undefined | null | Actor

        Parent parameter passed to Item.create() options

      • types: undefined | string[]

        Item types to limit creation choices to.

    Returns Promise<null | Item>

    Synchronized with Foundry VTT v12.331

  • Override to provide naming by subType potential.

    Parameters

    • context: {
          pack: undefined | null | string;
          parent: undefined | null | Document;
          type: undefined | string;
      } = {}

      Context where the name would be used

      • pack: undefined | null | string

        Pack this would be within

      • parent: undefined | null | Document

        Parent document

      • type: undefined | string

        Type

    Returns string

    Synced with Foundry v12.331