/* -------------------------------------------- */ /* Base Models */ /* -------------------------------------------- */ const fields = foundry.data.fields; export default class Stat extends foundry.abstract.DataModel { static defineSchema() { return { id: new fields.StringField({ required: true, initial: "statID"}), name: new fields.StringField({ required: true, intial: "Stat"}), die: new fields.NumberField({ required: true, nullable: false, initial: "d4"}), modifiers: new fields.ArrayField({ required: true, type: Modifier, default: []}), modifier: new fields.NumberField({required: true, integer: true, initial: 0}) }; } } export class Modifier extends foundry.abstract.DataModel { static defineSchema() { return { statID: new fields.StringField({ required: true, initial: "statID"}), name: new fields.StringField({ required: true, initial: "Modifier"}), value: new fields.NumberField({ required: true, integer: true, initial: 0}), }; } Modifier(statID,name,value) { this.statID = statID; this.name = name; this.value = value; }; } /* -------------------------------------------- */ /* Effect Models */ /* -------------------------------------------- */ export class Effect extends foundry.abstract.DataModel { static defineSchema() { return { description: new fields.StringField({ required: true, initial: "A EffectDescription" }), modifier: new fields.EmbeddedDataField(Modifier, { required: true, nullable: true, default: null}), }; } } export class Flaw extends foundry.abstract.DataModel { static defineSchema() { return { name: new fields.StringField({ required: true, initial: "Flaw"}), description: new fields.StringField({ required: true, initial: "A FlawDescription" }) }; } } export class Strength extends Effect { static defineSchema() { return { ...super.defineSchema(), name: new fields.StringField({ required: true, initial: "Strength"}) }; } }