diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index ae597270..481c745e 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -638,15 +638,21 @@ export default class CharacterSheet extends DHBaseActorSheet { ability: abilityLabel }) }); - - setTimeout(() => { - this.consumeResource(result?.costs); - }, 50); + + this.consumeResource(result?.costs); } + // Remove when Action Refactor part #2 done async consumeResource(costs) { if (!costs?.length) return; - const usefulResources = foundry.utils.deepClone(this.actor.system.resources); + const usefulResources = { + ...foundry.utils.deepClone(this.actor.system.resources), + fear: { + value: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Resources.Fear), + max: game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).maxFear, + reversed: false + } + }; const resources = game.system.api.fields.ActionFields.CostField.getRealCosts(costs).map(c => { const resource = usefulResources[c.key]; return { diff --git a/module/dice/dhRoll.mjs b/module/dice/dhRoll.mjs index 126a7944..695c94a4 100644 --- a/module/dice/dhRoll.mjs +++ b/module/dice/dhRoll.mjs @@ -222,26 +222,27 @@ export const registerRollDiceHooks = () => { ) return; - const actor = await fromUuid(config.source.actor), - updates = []; + const actor = await fromUuid(config.source.actor); + let updates = []; if (!actor) return; - if (config.roll.isCritical || config.roll.result.duality === 1) updates.push({ key: 'hope', value: 1 }); - if (config.roll.isCritical) updates.push({ key: 'stress', value: -1 }); - if (config.roll.result.duality === -1) updates.push({ key: 'fear', value: 1 }); + if (config.roll.isCritical || config.roll.result.duality === 1) updates.push({ key: 'hope', value: 1, total: -1, enabled: true }); + if (config.roll.isCritical) updates.push({ key: 'stress', value: -1, total: 1, enabled: true }); + if (config.roll.result.duality === -1) updates.push({ key: 'fear', value: 1, total: -1, enabled: true }); if (config.rerolledRoll) { if (config.rerolledRoll.isCritical || config.rerolledRoll.result.duality === 1) - updates.push({ key: 'hope', value: -1 }); - if (config.rerolledRoll.isCritical) updates.push({ key: 'stress', value: 1 }); - if (config.rerolledRoll.result.duality === -1) updates.push({ key: 'fear', value: -1 }); + updates.push({ key: 'hope', value: -1, total: 1, enabled: true }); + if (config.rerolledRoll.isCritical) updates.push({ key: 'stress', value: 1, total: -1, enabled: true }); + if (config.rerolledRoll.result.duality === -1) updates.push({ key: 'fear', value: -1, total: 1, enabled: true }); } if (updates.length) { const target = actor.system.partner ?? actor; if (!['dead', 'unconscious'].some(x => actor.statuses.has(x))) { - setTimeout(() => { + if(config.rerolledRoll) target.modifyResource(updates); - }, 50); + else + config.costs = [...(config.costs ?? []), ...updates]; } } @@ -254,5 +255,7 @@ export const registerRollDiceHooks = () => { const currentCombatant = game.combat.combatants.get(game.combat.current?.combatantId); if (currentCombatant?.actorId == actor.id) ui.combat.setCombatantSpotlight(currentCombatant.id); } + + return; }); }; diff --git a/module/documents/chatMessage.mjs b/module/documents/chatMessage.mjs index 398bfcbe..9b878776 100644 --- a/module/documents/chatMessage.mjs +++ b/module/documents/chatMessage.mjs @@ -72,7 +72,7 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { if(!game.user.isGM) { const applyButtons = html.querySelector(".apply-buttons"); - applyButtons.remove(); + applyButtons?.remove(); if(!this.isAuthor && !this.speakerActor?.isOwner) { const buttons = html.querySelectorAll(".ability-card-footer > .ability-use-button"); buttons.forEach(b => b.remove());