From 8b34fde8f62a15d4bfde601c07824b89a2004669 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sat, 18 Jul 2026 18:22:51 +0200 Subject: [PATCH] Fixed damage rerolls --- module/applications/dialogs/tagTeamDialog.mjs | 10 +++++----- module/applications/ui/chatLog.mjs | 10 +++++----- module/data/chat-message/actorRoll.mjs | 15 ++++++++++----- module/data/chat-message/chatDamageData.mjs | 4 ++-- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/module/applications/dialogs/tagTeamDialog.mjs b/module/applications/dialogs/tagTeamDialog.mjs index 594b136f..be45762c 100644 --- a/module/applications/dialogs/tagTeamDialog.mjs +++ b/module/applications/dialogs/tagTeamDialog.mjs @@ -563,15 +563,15 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio } static async #rerollDamageDice(_, button) { - const { memberKey, damageKey, diceIndex, resultIndex } = button.dataset; + const { isResource, memberKey, damageKey, diceIndex, resultIndex } = button.dataset; const memberData = this.party.system.tagTeam.members[memberKey]; - await memberData.damageRollData.rerollDamageDie(damageKey, diceIndex, resultIndex); + await memberData.damageRollData.rerollDamageDie(isResource, damageKey, diceIndex, resultIndex); + const basePath = `system.tagTeam.members.${memberKey}.damageRollData`; + const updatePath = isResource ? `${basePath}.resources.${damageKey}` : `${basePath}.main`; this.updatePartyData( { - [`system.tagTeam.members.${memberKey}.damageRollData.types`]: { - [damageKey]: memberData.damageRollData.types[damageKey].toJSON() - } + [updatePath]: memberData.damageRollData.types[damageKey].toJSON() }, this.getUpdatingParts(button) ); diff --git a/module/applications/ui/chatLog.mjs b/module/applications/ui/chatLog.mjs index 1c462930..c6309e36 100644 --- a/module/applications/ui/chatLog.mjs +++ b/module/applications/ui/chatLog.mjs @@ -254,12 +254,12 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo const target = event.target.closest('[data-die-index]'); if (target.dataset.type === 'damage') { - const { damageType, dice, result } = target.dataset; - await message.system.damage.rerollDamageDie(damageType, dice, result); + const { isResource, damageType, dice, result } = target.dataset; + await message.system.damage.rerollDamageDie(isResource, damageType, dice, result); + + const updatePath = isResource ? `system.damage.resources.${damageType}` : 'system.damage.main'; await message.update({ - 'system.damage.types': { - [damageType]: message.system.damage.types[damageType].toJSON() - } + [updatePath]: message.system.damage.types[damageType].toJSON() }); } else { const rerollDice = message.system.roll.dice[target.dataset.dieIndex]; diff --git a/module/data/chat-message/actorRoll.mjs b/module/data/chat-message/actorRoll.mjs index 16c7f2b6..dd81952b 100644 --- a/module/data/chat-message/actorRoll.mjs +++ b/module/data/chat-message/actorRoll.mjs @@ -137,12 +137,17 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel { if (!this.damage.active) return; const rerolls = []; - const update = { system: { damage: { types: {} } } }; - for (const key of Object.keys(this.damage.types)) { - const type = this.damage.types[key]; - const reroll = await type.reroll(); + const update = { system: { damage: { main: null, resources: _replace({}) } } }; + if (this.damage.main) { + const reroll = await this.damage.main.reroll(); rerolls.push(reroll); - update.system.damage.types[key] = reroll.toJSON(); + update.system.damage.main = reroll.toJSON(); + } + + for (const key of Object.keys(this.damage.resources)) { + const reroll = await this.damage.resources[key].reroll(); + rerolls.push(reroll); + update.system.damage.resources[key] = reroll.toJSON(); } await triggerChatRollFx(rerolls); diff --git a/module/data/chat-message/chatDamageData.mjs b/module/data/chat-message/chatDamageData.mjs index b7679ee1..404cda43 100644 --- a/module/data/chat-message/chatDamageData.mjs +++ b/module/data/chat-message/chatDamageData.mjs @@ -34,8 +34,8 @@ export class ChatDamageData extends foundry.abstract.DataModel { } } - async rerollDamageDie(damageType, dice, resultIndex) { - const reroll = this.types[damageType]; + async rerollDamageDie(isResource, damageType, dice, resultIndex) { + const reroll = isResource ? this.resources[damageType] : this.main; const rerollDice = reroll.dice[dice]; await rerollDice.rerollResult(resultIndex); await reroll._evaluate();