export default class DHDamageRoll extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; return { messageType: new fields.StringField({ initial: 'damage' }), title: new fields.StringField(), roll: new fields.DataField({}), targets: new fields.ArrayField( new fields.SchemaField({ id: new fields.StringField({ required: true }), actorId: new fields.StringField({}), name: new fields.StringField(), img: new fields.StringField(), hit: new fields.BooleanField({ initial: false }), saved: new fields.SchemaField({ result: new fields.NumberField(), success: new fields.BooleanField({ nullable: true, initial: null }) }) }) ), targetSelection: new fields.BooleanField({ initial: true }), hasSave: new fields.BooleanField({ initial: false }), isHealing: new fields.BooleanField({ initial: false }), onSave: new fields.StringField(), source: new fields.SchemaField({ actor: new fields.StringField(), item: new fields.StringField(), action: new fields.StringField(), message: new fields.StringField() }), directDamage: new fields.BooleanField({ initial: true }) }; } get messageTemplate() { return `systems/daggerheart/templates/ui/chat/${this.messageType}-roll.hbs`; } prepareDerivedData() { this.hasHitTarget = this.targets.filter(t => t.hit === true).length > 0; this.currentTargets = this.targetSelection !== true ? Array.from(game.user.targets).map(t => game.system.api.fields.ActionFields.TargetField.formatTarget(t) ) : this.targets; } }