From e6bfe08d83c0e7cde379546d4af4247ab8a4de96 Mon Sep 17 00:00:00 2001 From: Dapoulp <74197441+Dapoulp@users.noreply.github.com> Date: Sat, 26 Jul 2025 15:49:02 +0200 Subject: [PATCH] Fix async/await roll postEvaluate (#417) * Fix async/await roll postEvaluate * Fixed DualityReroll DiceSoNice * Add chatDisplay: false to actors base attack * Add chatDisplay: false to downtime actions * Add Action Type Select item name in header --------- Co-authored-by: WBHarry --- module/config/generalConfig.mjs | 6 ++++++ module/data/actor/adversary.mjs | 1 + module/data/actor/character.mjs | 1 + module/data/actor/companion.mjs | 1 + module/data/fields/actionField.mjs | 5 ++++- module/dice/d20Roll.mjs | 6 +++--- module/dice/damageRoll.mjs | 4 ++-- module/dice/dhRoll.mjs | 4 ++-- module/dice/dualityRoll.mjs | 28 ++++++++++++++++------------ 9 files changed, 36 insertions(+), 20 deletions(-) diff --git a/module/config/generalConfig.mjs b/module/config/generalConfig.mjs index 2b20e742..de33eade 100644 --- a/module/config/generalConfig.mjs +++ b/module/config/generalConfig.mjs @@ -144,6 +144,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.tendToWounds.name'), img: 'icons/magic/life/cross-worn-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.hitPoints.id, value: { @@ -168,6 +169,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.clearStress.name'), img: 'icons/magic/perception/eye-ringed-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.stress.id, value: { @@ -192,6 +194,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.shortRest.repairArmor.name'), img: 'icons/skills/trades/smithing-anvil-silver-red.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.armorStack.id, value: { @@ -226,6 +229,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.tendToWounds.name'), img: 'icons/magic/life/cross-worn-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.hitPoints.id, value: { @@ -250,6 +254,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.clearStress.name'), img: 'icons/magic/perception/eye-ringed-green.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.stress.id, value: { @@ -274,6 +279,7 @@ export const defaultRestOptions = { name: game.i18n.localize('DAGGERHEART.APPLICATIONS.Downtime.longRest.repairArmor.name'), img: 'icons/skills/trades/smithing-anvil-silver-red.webp', actionType: 'action', + chatDisplay: false, healing: { applyTo: healingTypes.armorStack.id, value: { diff --git a/module/data/actor/adversary.mjs b/module/data/actor/adversary.mjs index ac65df41..08455dd3 100644 --- a/module/data/actor/adversary.mjs +++ b/module/data/actor/adversary.mjs @@ -62,6 +62,7 @@ export default class DhpAdversary extends BaseDataActor { img: 'icons/skills/melee/blood-slash-foam-red.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { diff --git a/module/data/actor/character.mjs b/module/data/actor/character.mjs index 3348ca59..289b5dba 100644 --- a/module/data/actor/character.mjs +++ b/module/data/actor/character.mjs @@ -94,6 +94,7 @@ export default class DhCharacter extends BaseDataActor { img: 'icons/skills/melee/unarmed-punch-fist-yellow-red.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { diff --git a/module/data/actor/companion.mjs b/module/data/actor/companion.mjs index 8e7a6a88..af17b790 100644 --- a/module/data/actor/companion.mjs +++ b/module/data/actor/companion.mjs @@ -53,6 +53,7 @@ export default class DhCompanion extends BaseDataActor { img: 'icons/creatures/claws/claw-bear-paw-swipe-brown.webp', _id: foundry.utils.randomID(), systemPath: 'attack', + chatDisplay: false, type: 'attack', range: 'melee', target: { diff --git a/module/data/fields/actionField.mjs b/module/data/fields/actionField.mjs index dd2b4dea..00197e53 100644 --- a/module/data/fields/actionField.mjs +++ b/module/data/fields/actionField.mjs @@ -175,7 +175,10 @@ export function ActionMixin(Base) { classes: ['daggerheart', 'dh-style'], content: await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/actionTypes/actionType.hbs', - { types: CONFIG.DH.ACTIONS.actionTypes } + { + types: CONFIG.DH.ACTIONS.actionTypes, + itemName: parent.parent?.name + } ), ok: { label: game.i18n.format('DOCUMENT.Create', { diff --git a/module/dice/d20Roll.mjs b/module/dice/d20Roll.mjs index bee7717c..ce400110 100644 --- a/module/dice/d20Roll.mjs +++ b/module/dice/d20Roll.mjs @@ -140,8 +140,8 @@ export default class D20Roll extends DHRoll { return modifiers; } - static async postEvaluate(roll, config = {}) { - const data = await super.postEvaluate(roll, config); + static postEvaluate(roll, config = {}) { + const data = super.postEvaluate(roll, config); if (config.targets?.length) { config.targets.forEach(target => { const difficulty = config.roll.difficulty ?? target.difficulty ?? target.evasion; @@ -184,7 +184,7 @@ export default class D20Roll extends DHRoll { static async reroll(rollString, _target, message) { let parsedRoll = game.system.api.dice.D20Roll.fromData(rollString); parsedRoll = await parsedRoll.reroll(); - const newRoll = await game.system.api.dice.D20Roll.postEvaluate(parsedRoll, { + const newRoll = game.system.api.dice.D20Roll.postEvaluate(parsedRoll, { targets: message.system.targets, roll: { advantage: message.system.roll.advantage?.type, diff --git a/module/dice/damageRoll.mjs b/module/dice/damageRoll.mjs index 6c99dae4..48313c5b 100644 --- a/module/dice/damageRoll.mjs +++ b/module/dice/damageRoll.mjs @@ -25,10 +25,10 @@ export default class DamageRoll extends DHRoll { config.roll = this.unifyDamageRoll(parts); } - static async postEvaluate(roll, config = {}) { + static postEvaluate(roll, config = {}) { return { ...roll, - ...(await super.postEvaluate(roll.roll, config)), + ...super.postEvaluate(roll.roll, config), damageTypes: [...(roll.damageTypes ?? [])], roll: roll.roll, type: config.type, diff --git a/module/dice/dhRoll.mjs b/module/dice/dhRoll.mjs index 3236710b..4bc1a5bd 100644 --- a/module/dice/dhRoll.mjs +++ b/module/dice/dhRoll.mjs @@ -47,7 +47,7 @@ export default class DHRoll extends Roll { static async buildEvaluate(roll, config = {}, message = {}) { if (config.evaluate !== false) await roll.evaluate(); - config.roll = await this.postEvaluate(roll, config); + config.roll = this.postEvaluate(roll, config); } static async buildPost(roll, config, message) { @@ -67,7 +67,7 @@ export default class DHRoll extends Roll { } else config.message = await this.toMessage(roll, config); } - static async postEvaluate(roll, config = {}) { + static postEvaluate(roll, config = {}) { return { total: roll.total, formula: roll.formula, diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index c229999e..8ad61996 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -166,8 +166,20 @@ export default class DualityRoll extends D20Roll { return modifiers; } - static async postEvaluate(roll, config = {}) { - const data = await super.postEvaluate(roll, config); + static async buildEvaluate(roll, config = {}, message = {}) { + await super.buildEvaluate(roll, config, message); + + await setDiceSoNiceForDualityRoll( + roll, + config.roll.advantage.type, + config.roll.hope.dice, + config.roll.fear.dice, + config.roll.advantage.dice + ); + } + + static postEvaluate(roll, config = {}) { + const data = super.postEvaluate(roll, config); data.hope = { dice: roll.dHope.denomination, @@ -198,14 +210,6 @@ export default class DualityRoll extends D20Roll { if (roll._rallyIndex && roll.data?.parent) roll.data.parent.deleteEmbeddedDocuments('ActiveEffect', [roll._rallyIndex]); - await setDiceSoNiceForDualityRoll( - roll, - data.advantage.type, - data.hope.dice, - data.fear.dice, - data.advantage.dice - ); - return data; } @@ -226,7 +230,7 @@ export default class DualityRoll extends D20Roll { options: { appearance: {} } }; - const diceSoNicePresets = await getDiceSoNicePresets(); + const diceSoNicePresets = await getDiceSoNicePresets(`d${term._faces}`, `d${term._faces}`); const type = target.dataset.type; if (diceSoNicePresets[type]) { diceSoNiceRoll.dice[0].options = diceSoNicePresets[type]; @@ -237,7 +241,7 @@ export default class DualityRoll extends D20Roll { await parsedRoll.evaluate(); - const newRoll = await game.system.api.dice.DualityRoll.postEvaluate(parsedRoll, { + const newRoll = game.system.api.dice.DualityRoll.postEvaluate(parsedRoll, { targets: message.system.targets, roll: { advantage: message.system.roll.advantage?.type,