Fixed so the damage calculation is correct. Fixed so the right tooltip is shown for attacks

This commit is contained in:
WBHarry 2025-12-01 16:25:59 +01:00
parent 8f917c3640
commit 51135b6a67
8 changed files with 48 additions and 32 deletions

View file

@ -161,6 +161,22 @@ export default class DamageField extends fields.SchemaField {
return formulaValue; return formulaValue;
} }
/**
* Return a display ready damage formula string
* Must be called within Action context or similar.
* @param {Array<object>} 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 * Prepare formulas for Damage Roll
* Must be called within Action context or similar. * Must be called within Action context or similar.

View file

@ -35,14 +35,8 @@ export default class RegisterHandlebarsHelpers {
return accum; return accum;
} }
static damageFormula(attack, actor) { static damageFormula(attack) {
const traitTotal = actor.system.traits?.[attack.roll.trait]?.value; return game.system.api.fields.ActionFields.DamageField.getFormulaString.bind(attack)(attack.damage.parts);
const instances = [
attack.damage.parts.map(x => Roll.replaceFormulaData(x.value.getFormula(), actor)).join(' + '),
traitTotal
].filter(x => x);
return instances.join(traitTotal > 0 ? ' + ' : ' - ');
} }
static formulaValue(formula, item) { static formulaValue(formula, item) {

View file

@ -64,9 +64,9 @@
</div> </div>
<ul class="items-sidebar-list"> <ul class="items-sidebar-list">
{{> 'daggerheart.inventory-item-compact' {{> 'daggerheart.inventory-item-compact'
item=document.system.attack item=document.system.attack
type='action' type='attack'
noCompendiumEdit=true noCompendiumEdit=true
}} }}
</ul> </ul>
</div> </div>

View file

@ -104,16 +104,16 @@
</div> </div>
<ul class="items-sidebar-list"> <ul class="items-sidebar-list">
{{#if document.system.usedUnarmed}} {{#if document.system.usedUnarmed}}
{{> 'daggerheart.inventory-item-compact' {{> 'daggerheart.inventory-item-compact'
item=document.system.usedUnarmed item=document.system.usedUnarmed
type='action' type='attack'
}} }}
{{/if}} {{/if}}
{{#each document.items as |item|}} {{#each document.items as |item|}}
{{#if item.system.equipped}} {{#if item.system.equipped}}
{{> 'daggerheart.inventory-item-compact' {{> 'daggerheart.inventory-item-compact'
item=item item=item
type=item.type type=item.type
}} }}
{{/if}} {{/if}}
{{/each}} {{/each}}

View file

@ -28,7 +28,7 @@
<ul class="items-list"> <ul class="items-list">
{{> 'daggerheart.inventory-item-compact' {{> 'daggerheart.inventory-item-compact'
item=document.system.attack item=document.system.attack
type='action' type='attack'
hideTooltip=true hideTooltip=true
}} }}
</ul> </ul>

View file

@ -44,7 +44,7 @@
</div> </div>
<div class="tooltip-information"> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.damage"}}</label> <label>{{localize "DAGGERHEART.GENERAL.damage"}}</label>
<div>{{damageFormula item.system.attack item}}</div> <div>{{damageFormula item.system.attack}}</div>
</div> </div>
</div> </div>

View file

@ -4,22 +4,28 @@
<div class="tooltip-description">{{{description}}}</div> <div class="tooltip-description">{{{description}}}</div>
<div class="tooltip-information-section spaced"> <div class="tooltip-information-section spaced">
<div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.Trait.single"}}</label> {{#if (lookup config.ACTOR.abilities attack.roll.trait)}}
{{#with (lookup config.ACTOR.abilities attack.roll.trait) as | trait |}} <div class="tooltip-information">
<div>{{localize trait.label}}</div> <label>{{localize "DAGGERHEART.GENERAL.Trait.single"}}</label>
{{/with}} {{#with (lookup config.ACTOR.abilities attack.roll.trait) as | trait |}}
</div> <div>{{localize trait.label}}</div>
<div class="tooltip-information"> {{/with}}
<label>{{localize "DAGGERHEART.GENERAL.range"}}</label> </div>
{{#with (lookup config.GENERAL.range attack.range) as | range |}} {{/if}}
<div>{{localize range.label}}</div>
{{/with}} {{#if (lookup config.GENERAL.range attack.range)}}
</div> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.range"}}</label>
{{#with (lookup config.GENERAL.range attack.range) as | range |}}
<div>{{localize range.label}}</div>
{{/with}}
</div>
{{/if}}
<div class="tooltip-information"> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.damage"}}</label> <label>{{localize "DAGGERHEART.GENERAL.damage"}}</label>
<div>{{{damageFormula attack parent}}}</div> <div>{{{damageFormula attack}}}</div>
</div> </div>
<div class="tooltip-information"> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.damageType"}}</label> <label>{{localize "DAGGERHEART.GENERAL.damageType"}}</label>

View file

@ -30,7 +30,7 @@
</div> </div>
<div class="tooltip-information"> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.damage"}}</label> <label>{{localize "DAGGERHEART.GENERAL.damage"}}</label>
<div>{{{damageFormula item.system.attack item.parent}}}</div> <div>{{{damageFormula item.system.attack}}}</div>
</div> </div>
<div class="tooltip-information"> <div class="tooltip-information">
<label>{{localize "DAGGERHEART.GENERAL.damageType"}}</label> <label>{{localize "DAGGERHEART.GENERAL.damageType"}}</label>