// SPDX-FileCopyrightText: 2021 Johannes Loher // SPDX-FileCopyrightText: 2021 Gesina Schwalbe // // SPDX-License-Identifier: MIT import { getGame } from "../../utils/utils"; import type { ItemType } from "./item-data-source"; declare global { interface DocumentClassConfig { Item: typeof DS4Item; } // eslint-disable-next-line @typescript-eslint/no-namespace namespace Hooks { interface StaticCallbacks { "ds4.rollItem": (item: DS4Item) => void; } } } /** * The Item class for DS4 */ export class DS4Item extends Item { /** An object that tracks the changes to the data model which were applied by active effects */ overrides: Record<string, unknown> = {}; override prepareDerivedData(): void { this.data.data.rollable = false; } isNonEquippedEuipable(): boolean { return "equipped" in this.data.data && !this.data.data.equipped; } /** * The number of times that active effect changes originating from this item should be applied. */ get activeEffectFactor(): number | undefined { return 1; } /** * The list of item types that are rollable. */ static get rollableItemTypes(): ItemType[] { return ["weapon", "spell"]; } /** * Roll a check for an action with this item. * @param options - Additional options to customize the roll */ // eslint-disable-next-line @typescript-eslint/no-unused-vars async roll(options: { speaker?: { token?: TokenDocument; alias?: string } } = {}): Promise<void> { throw new Error(getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type })); } }