From 56d0776811dc283cbb600127b4189e98407cdba3 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sat, 8 Nov 2025 21:58:29 +0100 Subject: [PATCH] Added visible modifier to GroupRoll leader result --- module/applications/ui/chatLog.mjs | 15 +++++++++------ module/data/chat-message/groupRoll.mjs | 8 ++++++++ templates/ui/chat/groupRoll.hbs | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/module/applications/ui/chatLog.mjs b/module/applications/ui/chatLog.mjs index 0b9a9f23..6b05fe74 100644 --- a/module/applications/ui/chatLog.mjs +++ b/module/applications/ui/chatLog.mjs @@ -225,8 +225,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo }) }); - const renderData = { system: foundry.utils.deepClone(message.system) }; - foundry.utils.setProperty(renderData.system, `${path}.result`, result.roll); + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.result`, result.roll); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; const updatedContent = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', @@ -280,8 +281,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo }) }); - const renderData = { system: foundry.utils.deepClone(message.system) }; - foundry.utils.setProperty(renderData.system, `${path}.result`, { ...result.roll, rerolled: true }); + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.result`, { ...result.roll, rerolled: true }); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; const updatedContent = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', @@ -312,8 +314,9 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo return ui.notifications.warn(game.i18n.localize('DAGGERHEART.UI.Notifications.noActorOwnership')); } - const renderData = { system: foundry.utils.deepClone(message.system) }; - foundry.utils.setProperty(renderData.system, `${path}.manualSuccess`, Boolean(success)); + const newMessageData = foundry.utils.deepClone(message.system); + foundry.utils.setProperty(newMessageData, `${path}.manualSuccess`, Boolean(success)); + const renderData = { system: new game.system.api.models.chatMessages.config.groupRoll(newMessageData) }; const updatedContent = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/ui/chat/groupRoll.hbs', diff --git a/module/data/chat-message/groupRoll.mjs b/module/data/chat-message/groupRoll.mjs index 0ca5faff..a5308323 100644 --- a/module/data/chat-message/groupRoll.mjs +++ b/module/data/chat-message/groupRoll.mjs @@ -9,6 +9,14 @@ export default class DHGroupRoll extends foundry.abstract.TypeDataModel { members: new fields.ArrayField(new fields.EmbeddedDataField(GroupRollMemberField)) }; } + + get totalModifier() { + return this.members.reduce((acc, m) => { + if (m.manualSuccess === null) return acc; + + return acc + (m.manualSuccess ? 1 : -1); + }, 0); + } } class GroupRollMemberField extends foundry.abstract.DataModel { diff --git a/templates/ui/chat/groupRoll.hbs b/templates/ui/chat/groupRoll.hbs index 54c62ca9..11d08d2d 100644 --- a/templates/ui/chat/groupRoll.hbs +++ b/templates/ui/chat/groupRoll.hbs @@ -53,7 +53,7 @@ {{localize "DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle" ability=(localize (concat "DAGGERHEART.CONFIG.Traits." system.leader.trait ".name"))}} - {{system.leader.result.total}} + {{system.leader.result.total}}{{#unless (isNullish system.totalModifier)}} {{#if (gte system.totalModifier 0)}}+{{else}}-{{/if}} {{positive system.totalModifier}}{{/unless}} {{localize "DAGGERHEART.GENERAL.withThing" thing=system.leader.result.result.label}}