import { getTier } from '../../helpers/utils.mjs'; import BaseDataItem from './base.mjs'; import ForeignDocumentUUIDField from '../fields/foreignDocumentUUIDField.mjs'; export default class DHClass extends BaseDataItem { /** @inheritDoc */ static get metadata() { return foundry.utils.mergeObject(super.metadata, { label: "TYPES.Item.class", type: "class", hasDescription: true, }); } /** @inheritDoc */ static defineSchema() { const fields = foundry.data.fields; return { ...super.defineSchema(), domains: new fields.ArrayField(new fields.StringField(), { max: 2 }), classItems: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item" }), ), evasion: new fields.NumberField({ initial: 0, integer: true }), features: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item" }), ), subclasses: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item", required: false, nullable: true, initial: undefined}), ), inventory: new fields.SchemaField({ take: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item", required: false, nullable: true, initial: undefined}), ), choiceA: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item", required: false, nullable: true, initial: undefined}), ), choiceB: new fields.ArrayField( new ForeignDocumentUUIDField({ type:"Item", required: false, nullable: true, initial: undefined}), ), }), characterGuide: new fields.SchemaField({ suggestedTraits: new fields.SchemaField({ agility: new fields.NumberField({ initial: 0, integer: true }), strength: new fields.NumberField({ initial: 0, integer: true }), finesse: new fields.NumberField({ initial: 0, integer: true }), instinct: new fields.NumberField({ initial: 0, integer: true }), presence: new fields.NumberField({ initial: 0, integer: true }), knowledge: new fields.NumberField({ initial: 0, integer: true }) }), suggestedPrimaryWeapon: new ForeignDocumentUUIDField({ type:"Item" }), suggestedSecondaryWeapon: new ForeignDocumentUUIDField({ type:"Item" }), suggestedArmor: new ForeignDocumentUUIDField({ type:"Item" }), }), multiclass: new fields.NumberField({ initial: null, nullable: true, integer: true }), }; } get multiclassTier() { return getTier(this.multiclass, true); } }