diff --git a/module/applications/sheets-configs/armorActiveEffectConfig.mjs b/module/applications/sheets-configs/armorActiveEffectConfig.mjs index ef407782..c70422b9 100644 --- a/module/applications/sheets-configs/armorActiveEffectConfig.mjs +++ b/module/applications/sheets-configs/armorActiveEffectConfig.mjs @@ -2,6 +2,7 @@ const { HandlebarsApplicationMixin, DocumentSheetV2 } = foundry.applications.api export default class ArmorActiveEffectConfig extends HandlebarsApplicationMixin(DocumentSheetV2) { static DEFAULT_OPTIONS = { + tag: 'form', classes: ['daggerheart', 'sheet', 'dh-style', 'active-effect-config', 'armor-effect-config'], form: { handler: this.updateForm, @@ -9,7 +10,8 @@ export default class ArmorActiveEffectConfig extends HandlebarsApplicationMixin( closeOnSubmit: false }, actions: { - addEffect: ArmorActiveEffectConfig.#addEffect + addEffect: ArmorActiveEffectConfig.#addEffect, + finish: ArmorActiveEffectConfig.#finish } }; @@ -18,7 +20,7 @@ export default class ArmorActiveEffectConfig extends HandlebarsApplicationMixin( tabs: { template: 'templates/generic/tab-navigation.hbs' }, details: { template: 'systems/daggerheart/templates/sheets/activeEffect/armor/details.hbs' }, settings: { template: 'systems/daggerheart/templates/sheets/activeEffect/armor/settings.hbs' }, - footer: { template: 'systems/daggerheart/templates/sheets/global/tabs/tab-form-footer.hbs' } + footer: { template: 'systems/daggerheart/templates/sheets/activeEffect/armor/footer.hbs' } }; static TABS = { @@ -47,7 +49,7 @@ export default class ArmorActiveEffectConfig extends HandlebarsApplicationMixin( return partContext; } - async updateForm(_event, _form, formData) { + static async updateForm(_event, _form, formData) { await this.document.update(formData.object); this.render(); } @@ -56,4 +58,8 @@ export default class ArmorActiveEffectConfig extends HandlebarsApplicationMixin( this.document.update({ 'system.changes': [...this.document.system.changes, {}] }); this.render(); } + + static #finish() { + this.close(); + } } diff --git a/module/data/activeEffect/armorEffect.mjs b/module/data/activeEffect/armorEffect.mjs index 31ce4dca..5c125cea 100644 --- a/module/data/activeEffect/armorEffect.mjs +++ b/module/data/activeEffect/armorEffect.mjs @@ -40,8 +40,8 @@ export default class ArmorEffect extends foundry.data.ActiveEffectTypeDataModel prepareBaseData() { for (const change of this.changes) { - change.key = 'system.armorTest'; - change.value = Math.max(change.max - change.marked, change.max); + change.key = 'system.armorScore.value'; + change.value = Math.min(change.max - change.marked, change.max); } } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index c79bb078..b5edbb23 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -62,7 +62,20 @@ export default class DhCharacter extends BaseDataActor { label: 'DAGGERHEART.GENERAL.proficiency' }), evasion: new fields.NumberField({ initial: 0, integer: true, label: 'DAGGERHEART.GENERAL.evasion' }), - armorScore: new fields.NumberField({ integer: true, initial: 0, label: 'DAGGERHEART.GENERAL.armorScore' }), + armorScore: new fields.SchemaField({ + value: new fields.NumberField({ + integer: true, + initial: 0, + min: 0, + label: 'DAGGERHEART.GENERAL.armorScore' + }), + max: new fields.NumberField({ + integer: true, + initial: 0, + min: 0, + label: 'DAGGERHEART.GENERAL.armorScore' + }) + }), damageThresholds: new fields.SchemaField({ severe: new fields.NumberField({ integer: true, @@ -665,14 +678,12 @@ export default class DhCharacter extends BaseDataActor { } } - const armor = this.armor; - this.armorScore = armor ? armor.system.baseScore : 0; this.damageThresholds = { - major: armor - ? armor.system.baseThresholds.major + this.levelData.level.current + major: this.armor + ? this.armor.system.baseThresholds.major + this.levelData.level.current : this.levelData.level.current, - severe: armor - ? armor.system.baseThresholds.severe + this.levelData.level.current + severe: this.armor + ? this.armor.system.baseThresholds.severe + this.levelData.level.current : this.levelData.level.current * 2 }; @@ -705,8 +716,7 @@ export default class DhCharacter extends BaseDataActor { this.attack.roll.trait = this.rules.attack.roll.trait ?? this.attack.roll.trait; this.resources.armor = { - value: this.armor?.system?.marks?.value ?? 0, - max: this.armorScore, + ...this.armorScore, isReversed: true }; diff --git a/module/documents/activeEffect.mjs b/module/documents/activeEffect.mjs index efe8efea..22a36653 100644 --- a/module/documents/activeEffect.mjs +++ b/module/documents/activeEffect.mjs @@ -139,6 +139,11 @@ export default class DhActiveEffect extends foundry.documents.ActiveEffect { /* Methods */ /* -------------------------------------------- */ + /**@inheritdoc */ + static applyChange(actor, change, options) { + super.applyChange(actor, change, options); + } + /**@inheritdoc*/ static applyChangeField(model, change, field) { if (this.system?.applyChangeField) diff --git a/templates/sheets/activeEffect/armor/footer.hbs b/templates/sheets/activeEffect/armor/footer.hbs new file mode 100644 index 00000000..761189ff --- /dev/null +++ b/templates/sheets/activeEffect/armor/footer.hbs @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/templates/sheets/activeEffect/armor/settings.hbs b/templates/sheets/activeEffect/armor/settings.hbs index 58a22d63..087cdef6 100644 --- a/templates/sheets/activeEffect/armor/settings.hbs +++ b/templates/sheets/activeEffect/armor/settings.hbs @@ -4,8 +4,8 @@