mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-22 02:19:54 +02:00
Fixed damage rerolls
This commit is contained in:
parent
3dd968f0f1
commit
8b34fde8f6
4 changed files with 22 additions and 17 deletions
|
|
@ -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)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue