From 6d8d773a260d002013015e1bf7a306fc02c9ba6a Mon Sep 17 00:00:00 2001 From: WBHarry <89362246+WBHarry@users.noreply.github.com> Date: Sat, 6 Dec 2025 15:16:34 +0100 Subject: [PATCH] [Fix] 1325 - Weapon Tooltip Damage Formula (#1355) * Fixed so the damage calculation is correct. Fixed so the right tooltip is shown for attacks * Moved the damageFormula function to damageAction --- module/data/action/damageAction.mjs | 13 ++++++++ module/helpers/handlebarsHelper.mjs | 10 ++---- templates/sheets/actors/adversary/sidebar.hbs | 6 ++-- templates/sheets/actors/character/sidebar.hbs | 10 +++--- templates/sheets/actors/companion/details.hbs | 2 +- templates/ui/tooltip/adversary.hbs | 2 +- templates/ui/tooltip/attack.hbs | 32 +++++++++++-------- templates/ui/tooltip/weapon.hbs | 2 +- 8 files changed, 45 insertions(+), 32 deletions(-) diff --git a/module/data/action/damageAction.mjs b/module/data/action/damageAction.mjs index b4b3e17c..51735543 100644 --- a/module/data/action/damageAction.mjs +++ b/module/data/action/damageAction.mjs @@ -2,4 +2,17 @@ import DHBaseAction from './baseAction.mjs'; export default class DHDamageAction extends DHBaseAction { static extraSchemas = [...super.extraSchemas, 'damage', 'target', 'effects']; + + /** + * Return a display ready damage formula string + * @returns Formula string + */ + getDamageFormula() { + const strings = []; + for (const { value } of this.damage.parts) { + strings.push(Roll.replaceFormulaData(value.getFormula(), this.actor?.getRollData() ?? {})); + } + + return strings.join(' + '); + } } diff --git a/module/helpers/handlebarsHelper.mjs b/module/helpers/handlebarsHelper.mjs index 2aa72dfc..2faea830 100644 --- a/module/helpers/handlebarsHelper.mjs +++ b/module/helpers/handlebarsHelper.mjs @@ -35,14 +35,8 @@ export default class RegisterHandlebarsHelpers { return accum; } - static damageFormula(attack, actor) { - const traitTotal = actor.system.traits?.[attack.roll.trait]?.value; - const instances = [ - attack.damage.parts.map(x => Roll.replaceFormulaData(x.value.getFormula(), actor)).join(' + '), - traitTotal - ].filter(x => x); - - return instances.join(traitTotal > 0 ? ' + ' : ' - '); + static damageFormula(attack) { + return attack.getDamageFormula(); } static formulaValue(formula, item) { diff --git a/templates/sheets/actors/adversary/sidebar.hbs b/templates/sheets/actors/adversary/sidebar.hbs index cf724e7d..d2fca5f1 100644 --- a/templates/sheets/actors/adversary/sidebar.hbs +++ b/templates/sheets/actors/adversary/sidebar.hbs @@ -64,9 +64,9 @@ diff --git a/templates/sheets/actors/character/sidebar.hbs b/templates/sheets/actors/character/sidebar.hbs index 9ef3939a..7f470b0a 100644 --- a/templates/sheets/actors/character/sidebar.hbs +++ b/templates/sheets/actors/character/sidebar.hbs @@ -104,16 +104,16 @@