Files
fvtt-oath-hammer/module/models/party.mjs

39 lines
1.3 KiB
JavaScript

export default class OathHammerParty extends foundry.abstract.TypeDataModel {
static defineSchema() {
const { fields } = foundry.data
const requiredInteger = { required: true, nullable: false, integer: true }
const schema = {}
schema.notes = new fields.HTMLField({ required: false, nullable: true, initial: "" })
// Ordered list of member entries — position = marching order
schema.memberRefs = new fields.ArrayField(
new fields.SchemaField({
id: new fields.StringField({ required: true, nullable: false, blank: false }),
carriesLight: new fields.BooleanField({ initial: false }),
})
)
schema.treasury = new fields.SchemaField({
gp: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
sp: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
cp: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
})
schema.maxSlots = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
return schema
}
static migrateData(source) {
if (Array.isArray(source.memberRefs)) {
source.memberRefs = source.memberRefs.map(r =>
typeof r === "string" ? { id: r, carriesLight: false } : r
)
}
return super.migrateData(source)
}
static LOCALIZATION_PREFIXES = ["OATHHAMMER.Party"]
}