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) {
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)
);

View file

@ -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];

View file

@ -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);

View file

@ -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();