diff --git a/module/data/action/baseAction.mjs b/module/data/action/baseAction.mjs index 828ff129..998fe0ab 100644 --- a/module/data/action/baseAction.mjs +++ b/module/data/action/baseAction.mjs @@ -241,7 +241,7 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel selectedRollMode: game.settings.get('core', 'rollMode'), data: this.getRollData(), evaluate: this.hasRoll, - resourceUpdates: new ResourceUpdateMap(this.actor.uuid) + resourceUpdates: new ResourceUpdateMap(this.actor) }; DHBaseAction.applyKeybindings(config); @@ -332,11 +332,12 @@ export default class DHBaseAction extends ActionMixin(foundry.abstract.DataModel } export class ResourceUpdateMap extends Map { - #actorUuid; + #actor; - constructor(actorUuid) { + constructor(actor) { super(); - this.#actorUuid = actorUuid; + + this.#actor = actor; } addResources(resources) { @@ -361,9 +362,8 @@ export class ResourceUpdateMap extends Map { } async updateResources() { - const actor = await foundry.utils.fromUuid(this.#actorUuid); - if (actor) { - const target = actor.system.partner ?? actor; + if (this.#actor) { + const target = this.#actor.system.partner ?? this.#actor; await target.modifyResource(this.#getResources()); } } diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index 2d3933d6..3b00dd7c 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -226,7 +226,7 @@ export default class DualityRoll extends D20Roll { await DualityRoll.dualityUpdate(config); } - static async automateHopeFear(config) { + static async addDualityResourceUpdates(config) { const automationSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation); const hopeFearAutomation = automationSettings.hopeFear; if ( @@ -289,7 +289,7 @@ export default class DualityRoll extends D20Roll { } } - await DualityRoll.automateHopeFear(config); + await DualityRoll.addDualityResourceUpdates(config); if (!config.roll.hasOwnProperty('success') && !config.targets?.length) return; @@ -341,16 +341,17 @@ export default class DualityRoll extends D20Roll { const tagTeamSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.TagTeamRoll); + const actor = message.system.source.actor ? await foundry.utils.fromUuid(message.system.source.actor) : null; const config = { source: { actor: message.system.source.actor ?? '' }, targets: message.system.targets, tagTeamSelected: Object.values(tagTeamSettings.members).some(x => x.messageId === message._id), roll: newRoll, rerolledRoll: message.system.roll, - resourceUpdates: new ResourceUpdateMap(message.system.source.actor ?? '') + resourceUpdates: new ResourceUpdateMap(actor) }; - await DualityRoll.automateHopeFear(config); + await DualityRoll.addDualityResourceUpdates(config); await config.resourceUpdates.updateResources(); return { newRoll, parsedRoll }; diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 6340e7f4..3e1a9eca 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -478,7 +478,7 @@ export default class DhpActor extends Actor { async diceRoll(config) { config.source = { ...(config.source ?? {}), actor: this.uuid }; config.data = this.getRollData(); - config.resourceUpdates = new ResourceUpdateMap(this.uuid); + config.resourceUpdates = new ResourceUpdateMap(this); const rollClass = config.roll.lite ? CONFIG.Dice.daggerheart['DHRoll'] : this.rollClass; return await rollClass.build(config); }