From 51135b6a679436bf08e320689d1e06d2055b4bb8 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Mon, 1 Dec 2025 16:25:59 +0100 Subject: [PATCH] Fixed so the damage calculation is correct. Fixed so the right tooltip is shown for attacks --- module/data/fields/action/damageField.mjs | 16 ++++++++++ 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, 48 insertions(+), 32 deletions(-) diff --git a/module/data/fields/action/damageField.mjs b/module/data/fields/action/damageField.mjs index bb81c702..a7e313f1 100644 --- a/module/data/fields/action/damageField.mjs +++ b/module/data/fields/action/damageField.mjs @@ -161,6 +161,22 @@ export default class DamageField extends fields.SchemaField { return formulaValue; } + /** + * Return a display ready damage formula string + * Must be called within Action context or similar. + * @param {Array} parts Damage Parts + * @param {object} data Action getRollData + * @returns Formula string + */ + static getFormulaString(parts) { + const strings = []; + for (const { value } of parts) { + strings.push(Roll.replaceFormulaData(value.getFormula(), this.actor?.getRollData() ?? {})); + } + + return strings.join(' + '); + } + /** * Prepare formulas for Damage Roll * Must be called within Action context or similar. diff --git a/module/helpers/handlebarsHelper.mjs b/module/helpers/handlebarsHelper.mjs index 2aa72dfc..05f33b11 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 game.system.api.fields.ActionFields.DamageField.getFormulaString.bind(attack)(attack.damage.parts); } 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 @@