import { SYSTEM } from "../config/system.mjs" export default class OathHammerEquipment extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields const requiredInteger = { required: true, nullable: false, integer: true } const schema = {} schema.description = new fields.HTMLField({ required: true, textSearch: true }) // Sub-category matching the rulebook sections (pp.90-96) schema.itemType = new fields.StringField({ required: true, initial: "misc", choices: SYSTEM.EQUIPMENT_TYPE_CHOICES }) schema.quantity = new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }) // Item slots occupied when carried. 0 = small item (no slots). schema.slots = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) schema.rarity = new fields.StringField({ required: true, initial: "common", choices: SYSTEM.RARITY_CHOICES }) // Light radius in feet — only relevant for light-source items (Candle/Lamp/Lantern/Torch) schema.lightRadius = new fields.NumberField({ required: false, nullable: true, initial: null, min: 0 }) schema.cost = new fields.NumberField({ required: true, nullable: false, initial: 0, min: 0 }) schema.currency = new fields.StringField({ required: true, initial: "gp", choices: SYSTEM.CURRENCY_CHOICES }) return schema } static migrateData(source) { if (typeof source.rarity === "number") { const map = { 0: "common", 1: "uncommon", 2: "rare", 3: "very-rare", 4: "legendary", 5: "legendary", 6: "legendary" } source.rarity = map[source.rarity] ?? "common" } return super.migrateData(source) } static LOCALIZATION_PREFIXES = ["OATHHAMMER.Equipment"] }