From 3eaaab53a5e104cc54497fde9b127d45b92f1e10 Mon Sep 17 00:00:00 2001 From: JimCanE <6275508-jimcane@users.noreply.gitlab.com> Date: Fri, 23 May 2025 17:21:08 +0200 Subject: [PATCH] feat(armorItem): add base thresholds to armor --- lang/en.json | 7 +++- module/data/armor.mjs | 79 +++++++++++++++++++++----------------- templates/sheets/armor.hbs | 5 +++ 3 files changed, 55 insertions(+), 36 deletions(-) diff --git a/lang/en.json b/lang/en.json index 7708e08b..83943b62 100644 --- a/lang/en.json +++ b/lang/en.json @@ -910,7 +910,12 @@ "Armor": { "BaseScore": "Base Score", "Feature": "Feature", - "Description": "Description" + "Description": "Description", + "BaseThresholds": { + "Base": "Base Thresholds", + "Major": "Major Threshold", + "Severe": "Severe Threshold" + } }, "Class": { "Tabs": { diff --git a/module/data/armor.mjs b/module/data/armor.mjs index 27fc83c4..26cb5985 100644 --- a/module/data/armor.mjs +++ b/module/data/armor.mjs @@ -1,40 +1,49 @@ export default class DhpArmor extends foundry.abstract.TypeDataModel { - static defineSchema() { - const fields = foundry.data.fields; - return { - baseScore: new fields.NumberField({ initial: 1, integer: true }), - feature: new fields.StringField({ choices: SYSTEM.ITEM.armorFeatures, integer: false, blank:true}), - marks: new fields.SchemaField({ - max: new fields.NumberField({ initial: 6, integer: true }), - value: new fields.NumberField({ initial: 0, integer: true }), - }), - description: new fields.HTMLField({}), - } - } + static defineSchema() { + const fields = foundry.data.fields; + return { + baseScore: new fields.NumberField({ initial: 1, integer: true }), + feature: new fields.StringField({ + choices: SYSTEM.ITEM.armorFeatures, + integer: false, + blank: true, + }), + marks: new fields.SchemaField({ + max: new fields.NumberField({ initial: 6, integer: true }), + value: new fields.NumberField({ initial: 0, integer: true }), + }), + baseThresholds: new fields.SchemaField({ + major: new fields.NumberField({ initial: 0, integer: true }), + severe: new fields.NumberField({ initial: 0, integer: true }), + }), + description: new fields.HTMLField({}), + }; + } - get featureInfo() { - return this.feature ? CONFIG.daggerheart.ITEM.armorFeatures[this.feature] : null; - } + get featureInfo() { + return this.feature + ? CONFIG.daggerheart.ITEM.armorFeatures[this.feature] + : null; + } - prepareDerivedData(){ - if(this.parent.parent){ - this.applyLevels(); - } + prepareDerivedData() { + if (this.parent.parent) { + this.applyLevels(); } + } - // Currently bugged as it double triggers. Should get fixed in an updated foundry version. - applyLevels(){ - // let armorBonus = 0; - // for(var level in this.parent.parent.system.levelData.levelups){ - // var levelData = this.parent.parent.system.levelData.levelups[level]; - // for(var tier in levelData){ - // var tierData = levelData[tier]; - // if(tierData){ - // armorBonus += Object.keys(tierData.armorOrEvasionSlot).filter(x => tierData.armorOrEvasionSlot[x] === 'armor').length; - // } - // } - // } - - // this.marks.max += armorBonus; - } -} \ No newline at end of file + // Currently bugged as it double triggers. Should get fixed in an updated foundry version. + applyLevels() { + // let armorBonus = 0; + // for(var level in this.parent.parent.system.levelData.levelups){ + // var levelData = this.parent.parent.system.levelData.levelups[level]; + // for(var tier in levelData){ + // var tierData = levelData[tier]; + // if(tierData){ + // armorBonus += Object.keys(tierData.armorOrEvasionSlot).filter(x => tierData.armorOrEvasionSlot[x] === 'armor').length; + // } + // } + // } + // this.marks.max += armorBonus; + } +} diff --git a/templates/sheets/armor.hbs b/templates/sheets/armor.hbs index 4cf4ee9b..aee89005 100644 --- a/templates/sheets/armor.hbs +++ b/templates/sheets/armor.hbs @@ -11,6 +11,11 @@
{{formField systemFields.baseScore value=source.system.baseScore label=(localize "DAGGERHEART.Sheets.Armor.BaseScore") }} {{formField systemFields.feature value=source.system.feature label=(localize "DAGGERHEART.Sheets.Armor.Feature") localize=true blank=""}} +
+

{{localize "DAGGERHEART.Sheets.Armor.BaseThresholds.Base"}}

+ {{ formField systemFields.baseThresholds.fields.major value=source.system.baseThresholds.major label=(localize "DAGGERHEART.Sheets.Armor.BaseThresholds.Major") }}/ + {{ formField systemFields.baseThresholds.fields.severe value=source.system.baseThresholds.severe label=(localize "DAGGERHEART.Sheets.Armor.BaseThresholds.Severe") }} +

{{localize "DAGGERHEART.Sheets.Armor.Description"}}

{{formInput systemFields.description value=source.system.description enriched=source.system.description localize=true toggled=true}}