From c37fb9b04955cffa3ff823718c3eca9ac02e05d4 Mon Sep 17 00:00:00 2001 From: Nikhil Nagarajan Date: Fri, 12 Dec 2025 10:16:54 -0500 Subject: [PATCH] Massive Damage incoming. Over 9000. --- lang/en.json | 5 +++++ module/data/settings/VariantRules.mjs | 7 +++++++ module/documents/actor.mjs | 4 ++++ module/helpers/utils.mjs | 5 +++-- templates/settings/variant-rules.hbs | 7 +++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lang/en.json b/lang/en.json index d2386744..52c68a4a 100755 --- a/lang/en.json +++ b/lang/en.json @@ -1801,6 +1801,7 @@ "plural": "Costs" }, "Damage": { + "massive": "Massive", "severe": "Severe", "major": "Major", "minor": "Minor", @@ -2517,6 +2518,10 @@ "actionTokens": { "enabled": { "label": "Enabled" }, "tokens": { "label": "Tokens" } + }, + "massiveDamage":{ + "title":"Massive Damage", + "enabled": { "label": "Enabled" } } } }, diff --git a/module/data/settings/VariantRules.mjs b/module/data/settings/VariantRules.mjs index ad7d707a..41c63be2 100644 --- a/module/data/settings/VariantRules.mjs +++ b/module/data/settings/VariantRules.mjs @@ -39,6 +39,13 @@ export default class DhVariantRules extends foundry.abstract.DataModel { label: 'DAGGERHEART.CONFIG.Range.close.name' }), far: new fields.NumberField({ required: true, initial: 60, label: 'DAGGERHEART.CONFIG.Range.far.name' }) + }), + massiveDamage: new fields.SchemaField({ + enabled: new fields.BooleanField({ + required: true, + initial: false, + label: 'DAGGERHEART.SETTINGS.VariantRules.FIELDS.massiveDamage.enabled.label' + }) }) }; } diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 8999fdd8..86982758 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -761,6 +761,10 @@ export default class DhpActor extends Actor { } convertDamageToThreshold(damage) { + const massiveDamageEnabled=game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).massiveDamage.enabled; + if (massiveDamageEnabled && damage >= (this.system.damageThresholds.severe * 2)) { + return 4; + } return damage >= this.system.damageThresholds.severe ? 3 : damage >= this.system.damageThresholds.major ? 2 : 1; } diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 39d5298d..396ed2fa 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -198,7 +198,7 @@ foundry.dice.terms.Die.prototype.selfCorrecting = function (modifier) { }; export const getDamageKey = damage => { - return ['none', 'minor', 'major', 'severe', 'any'][damage]; + return ['none', 'minor', 'major', 'severe', 'massive','any'][damage]; }; export const getDamageLabel = damage => { @@ -211,7 +211,8 @@ export const damageKeyToNumber = key => { minor: 1, major: 2, severe: 3, - any: 4 + massive: 4, + any: 5 }[key]; }; diff --git a/templates/settings/variant-rules.hbs b/templates/settings/variant-rules.hbs index 5cc5c90c..df7accb3 100644 --- a/templates/settings/variant-rules.hbs +++ b/templates/settings/variant-rules.hbs @@ -22,6 +22,13 @@ +
+ +
+ {{formGroup settingFields.schema.fields.massiveDamage.fields.enabled value=settingFields._source.massiveDamage.enabled localize=true}} +
+
+