diff --git a/module/data/chat-message/chatDamageData.mjs b/module/data/chat-message/chatDamageData.mjs index 404cda43..231c03f2 100644 --- a/module/data/chat-message/chatDamageData.mjs +++ b/module/data/chat-message/chatDamageData.mjs @@ -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]); } diff --git a/module/data/fields/action/damageField.mjs b/module/data/fields/action/damageField.mjs index 25b3ba97..05d9f664 100644 --- a/module/data/fields/action/damageField.mjs +++ b/module/data/fields/action/damageField.mjs @@ -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( diff --git a/module/dice/damageRoll.mjs b/module/dice/damageRoll.mjs index 2ca04a06..3e99865d 100644 --- a/module/dice/damageRoll.mjs +++ b/module/dice/damageRoll.mjs @@ -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) {