import BaseDataItem from './base.mjs'; import { ActionField, ActionsField } from '../fields/actionField.mjs'; export default class DHFeature extends BaseDataItem { /** @inheritDoc */ static get metadata() { return foundry.utils.mergeObject(super.metadata, { label: 'TYPES.Item.feature', type: 'feature', hasDescription: true, hasResource: true, hasActions: true }); } /** @inheritDoc */ static defineSchema() { const fields = foundry.data.fields; return { ...super.defineSchema(), originItemType: new fields.StringField({ choices: CONFIG.DH.ITEM.featureTypes, nullable: true, initial: null }), originId: new fields.StringField({ nullable: true, initial: null }), identifier: new fields.StringField() }; } get spellcastingModifier() { let traitValue = 0; if (this.actor && this.originId && ['class', 'subclass'].includes(this.originItemType)) { if (this.originItemType === 'subclass') { traitValue = this.actor.system.traits[this.actor.items.get(this.originId).system.spellcastingTrait]?.value ?? 0; } else { const subclass = this.actor.system.multiclass.value?.id === this.originId ? this.actor.system.multiclass.subclass : this.actor.system.class.subclass; traitValue = this.actor.system.traits[subclass.system.spellcastingTrait]?.value ?? 0; } } return traitValue; } }