Fixed damage rerolls

This commit is contained in:
WBHarry 2026-07-18 18:22:51 +02:00
parent 3dd968f0f1
commit 8b34fde8f6
4 changed files with 22 additions and 17 deletions

View file

@ -563,15 +563,15 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
} }
static async #rerollDamageDice(_, button) { 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]; 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( this.updatePartyData(
{ {
[`system.tagTeam.members.${memberKey}.damageRollData.types`]: { [updatePath]: memberData.damageRollData.types[damageKey].toJSON()
[damageKey]: memberData.damageRollData.types[damageKey].toJSON()
}
}, },
this.getUpdatingParts(button) this.getUpdatingParts(button)
); );

View file

@ -254,12 +254,12 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo
const target = event.target.closest('[data-die-index]'); const target = event.target.closest('[data-die-index]');
if (target.dataset.type === 'damage') { if (target.dataset.type === 'damage') {
const { damageType, dice, result } = target.dataset; const { isResource, damageType, dice, result } = target.dataset;
await message.system.damage.rerollDamageDie(damageType, dice, result); await message.system.damage.rerollDamageDie(isResource, damageType, dice, result);
const updatePath = isResource ? `system.damage.resources.${damageType}` : 'system.damage.main';
await message.update({ await message.update({
'system.damage.types': { [updatePath]: message.system.damage.types[damageType].toJSON()
[damageType]: message.system.damage.types[damageType].toJSON()
}
}); });
} else { } else {
const rerollDice = message.system.roll.dice[target.dataset.dieIndex]; const rerollDice = message.system.roll.dice[target.dataset.dieIndex];

View file

@ -137,12 +137,17 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel {
if (!this.damage.active) return; if (!this.damage.active) return;
const rerolls = []; const rerolls = [];
const update = { system: { damage: { types: {} } } }; const update = { system: { damage: { main: null, resources: _replace({}) } } };
for (const key of Object.keys(this.damage.types)) { if (this.damage.main) {
const type = this.damage.types[key]; const reroll = await this.damage.main.reroll();
const reroll = await type.reroll();
rerolls.push(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); await triggerChatRollFx(rerolls);

View file

@ -34,8 +34,8 @@ export class ChatDamageData extends foundry.abstract.DataModel {
} }
} }
async rerollDamageDie(damageType, dice, resultIndex) { async rerollDamageDie(isResource, damageType, dice, resultIndex) {
const reroll = this.types[damageType]; const reroll = isResource ? this.resources[damageType] : this.main;
const rerollDice = reroll.dice[dice]; const rerollDice = reroll.dice[dice];
await rerollDice.rerollResult(resultIndex); await rerollDice.rerollResult(resultIndex);
await reroll._evaluate(); await reroll._evaluate();