From 081ebf5bb363c9a9f52eddd1dd9a85e911b5694b Mon Sep 17 00:00:00 2001 From: Dapoolp Date: Thu, 10 Jul 2025 16:26:48 +0200 Subject: [PATCH] Relocate Damage Reduction --- module/config/itemConfig.mjs | 2 +- module/data/actor/base.mjs | 3 ++- module/data/actor/character.mjs | 4 ---- module/documents/actor.mjs | 6 +++--- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/module/config/itemConfig.mjs b/module/config/itemConfig.mjs index cdc8a235..ed77310c 100644 --- a/module/config/itemConfig.mjs +++ b/module/config/itemConfig.mjs @@ -395,7 +395,7 @@ export const armorFeatures = { img: 'icons/magic/defensive/barrier-shield-dome-pink.webp', changes: [ { - key: 'system.bonuses.damageReduction.magical', + key: 'system.resistance.magical.reduction', mode: 2, value: '@system.armorScore' } diff --git a/module/data/actor/base.mjs b/module/data/actor/base.mjs index e5e38716..e81acc44 100644 --- a/module/data/actor/base.mjs +++ b/module/data/actor/base.mjs @@ -41,7 +41,8 @@ export default class BaseDataActor extends foundry.abstract.TypeDataModel { if(this.metadata.hasResistances) schema.resistance = new fields.SchemaField({ physical: resistanceField(), - magical: resistanceField() + magical: resistanceField(), + resistance: new fields.NumberField({ integer: true, initial: 0 }) }) return schema; } diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index b4dada8f..d26e368a 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -101,10 +101,6 @@ export default class DhCharacter extends BaseDataActor { levelData: new fields.EmbeddedDataField(DhLevelData), bonuses: new fields.SchemaField({ armorScore: new fields.NumberField({ integer: true, initial: 0 }), - damageReduction: new fields.SchemaField({ - physical: new fields.NumberField({ integer: true, initial: 0 }), - magical: new fields.NumberField({ integer: true, initial: 0 }) - }), damageThresholds: new fields.SchemaField({ severe: new fields.NumberField({ integer: true, initial: 0 }), major: new fields.NumberField({ integer: true, initial: 0 }) diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 533a91e0..2b3d99c9 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -510,10 +510,10 @@ export default class DhpActor extends Actor { calculateDamage(baseDamage, type) { if (Hooks.call(`${CONFIG.DH.id}.preCalculateDamage`, this, baseDamage, type) === false) return null; - if(this.system.resistance[type].immunity) return 0; - if(this.system.resistance[type].resistance) baseDamage = Math.ceil(baseDamage / 2); + if(this.system.resistance[type]?.immunity) return 0; + if(this.system.resistance[type]?.resistance) baseDamage = Math.ceil(baseDamage / 2); - const flatReduction = this.system.bonuses.damageReduction[type]; + const flatReduction = this.system.resistance[type].reduction; const damage = Math.max(baseDamage - (flatReduction ?? 0), 0); const hpDamage = this.convertDamageToThreshold(damage);