Added overrides to modifierTotal and total getters in DamageRoll to addin critical damage when applicable

This commit is contained in:
WBHarry 2026-07-19 17:24:53 +02:00
parent 14edc7f4ca
commit c0fe127df4
3 changed files with 13 additions and 3 deletions

View file

@ -7,6 +7,11 @@ export class ChatDamageData extends foundry.abstract.DataModel {
this._prepareRolls();
}
get isCritical() {
const roll = Roll.fromJSON(this.parent.parent._source.rolls[0]);
return roll.isCritical;
}
static defineSchema() {
const fields = foundry.data.fields;
@ -28,7 +33,7 @@ export class ChatDamageData extends foundry.abstract.DataModel {
}
_prepareRolls() {
this.main &&= Roll.fromData(this.main);
this.main &&= Roll.fromData({ ...this.main, options: { ...this.main.options, isCritical: this.isCritical } });
for (const key of Object.keys(this.resources)) {
this.resources[key] = Roll.fromData(this.resources[key]);
}

View file

@ -107,7 +107,7 @@ export default class DamageField extends fields.SchemaField {
if (configDamage.main) {
const multiplier = config.actionActor?.system.rules?.attack?.damage?.hpDamageMultiplier ?? 1;
const takenMultiplier = actor.system.rules?.attack?.damage?.hpDamageTakenMultiplier;
configDamage.main.total = Math.ceil(configDamage.main.total * multiplier * takenMultiplier);
configDamage.main.total = Math.ceil(config.damage.main.total * multiplier * takenMultiplier);
}
damagePromises.push(

View file

@ -8,7 +8,7 @@ export default class DamageRoll extends DHRoll {
}
get isCritical() {
return true;
return this.options.isCritical;
}
get modifierTotal() {
@ -16,6 +16,11 @@ export default class DamageRoll extends DHRoll {
return super.modifierTotal + criticalDamageBonus;
}
get total() {
const criticalDamageBonus = this.isCritical ? getCritDamageBonus(this.terms) : 0;
return super.total + criticalDamageBonus;
}
static DefaultDialog = DamageDialog;
static createRollInstance(config) {