From 6a1848760bbabb974128ada5a6667d2a61a56b04 Mon Sep 17 00:00:00 2001 From: IrkTheImp Date: Thu, 29 May 2025 21:51:54 -0500 Subject: [PATCH] update all chat messages to render templates --- lang/en.json | 3 +- module/applications/chatMessage.mjs | 17 --- module/applications/sheets/adversary.mjs | 46 ++++--- module/applications/sheets/pc.mjs | 145 +++++++++++++---------- module/documents/actor.mjs | 28 +++-- templates/chat/attack-roll.hbs | 2 +- templates/chat/damage-roll.hbs | 1 - 7 files changed, 130 insertions(+), 112 deletions(-) diff --git a/lang/en.json b/lang/en.json index 684fa06f..f38646c8 100755 --- a/lang/en.json +++ b/lang/en.json @@ -774,7 +774,8 @@ "AbilityCheckTitle": "{ability} Check" }, "AttackRoll": { - "Title": "Attack - {attack}" + "Title": "Attack - {attack}", + "RollDamage": "Roll Damage" }, "DamageRoll": { "Title": "Damage - {damage}", diff --git a/module/applications/chatMessage.mjs b/module/applications/chatMessage.mjs index 5e10a683..a8cf6f50 100644 --- a/module/applications/chatMessage.mjs +++ b/module/applications/chatMessage.mjs @@ -2,23 +2,6 @@ import DhpDualityRoll from '../data/dualityRoll.mjs'; import { DualityRollColor } from '../data/settings/Appearance.mjs'; export default class DhpChatMessage extends ChatMessage { - constructor(data, options) { - super(data, options); - - if ( - data.type === 'dualityRoll' || - data.type === 'adversaryRoll' || - data.type === 'damageRoll' || - data.type === 'abilityUse' - ) { - this.#templateInjection(data); - } - } - - async #templateInjection(data) { - return await foundry.applications.handlebars.renderTemplate(data.content, data.system); - } - async renderHTML() { /* We can change to fully implementing the renderHTML function if needed, instead of augmenting it. */ const html = await super.renderHTML(); diff --git a/module/applications/sheets/adversary.mjs b/module/applications/sheets/adversary.mjs index 54827b84..2087ea0a 100644 --- a/module/applications/sheets/adversary.mjs +++ b/module/applications/sheets/adversary.mjs @@ -330,15 +330,19 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) { ); const cls = getDocumentClass('ChatMessage'); + const systemData = { + roll: roll._formula, + total: roll._total, + modifiers: modifiers, + diceResults: diceResults + }; const msg = new cls({ type: 'adversaryRoll', - system: { - roll: roll._formula, - total: roll._total, - modifiers: modifiers, - diceResults: diceResults - }, - content: 'systems/daggerheart/templates/chat/adversary-roll.hbs', + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/adversary-roll.hbs', + systemData + ), rolls: [roll] }); @@ -362,21 +366,25 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) { })); const cls = getDocumentClass('ChatMessage'); + const systemData = { + title: button.dataset.name, + origin: this.document.id, + roll: roll._formula, + advantageState, + total: roll._total, + modifiers: modifiers, + dice: dice, + targets: targets, + damage: { value: button.dataset.damage, type: button.dataset.damageType } + }; const msg = new cls({ type: 'adversaryRoll', sound: CONFIG.sounds.dice, - system: { - title: button.dataset.name, - origin: this.document.id, - roll: roll._formula, - advantageState, - total: roll._total, - modifiers: modifiers, - dice: dice, - targets: targets, - damage: { value: button.dataset.damage, type: button.dataset.damageType } - }, - content: 'systems/daggerheart/templates/chat/adversary-attack-roll.hbs', + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/adversary-attack-roll.hbs', + systemData + ), rolls: [roll] }); diff --git a/module/applications/sheets/pc.mjs b/module/applications/sheets/pc.mjs index 9e21edce..4a91b0e5 100644 --- a/module/applications/sheets/pc.mjs +++ b/module/applications/sheets/pc.mjs @@ -494,27 +494,33 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { ); const cls = getDocumentClass('ChatMessage'); - const msgData = { - type: 'dualityRoll', - sound: CONFIG.sounds.dice, - system: { - title: game.i18n.format('DAGGERHEART.Chat.DualityRoll.AbilityCheckTitle', { - ability: game.i18n.localize(abilities[button.dataset.attribute].label) - }), - origin: this.document.id, - roll: roll._formula, - modifiers: modifiers, - hope: hope, - fear: fear, - advantage: advantage, - disadvantage: disadvantage - }, - user: game.user.id, - content: 'systems/daggerheart/templates/chat/duality-roll.hbs', - rolls: [roll] + + const systemContent = { + title: game.i18n.format('DAGGERHEART.Chat.DualityRoll.AbilityCheckTitle', { + ability: game.i18n.localize(abilities[button.dataset.attribute].label) + }), + origin: this.document.id, + roll: roll._formula, + modifiers: modifiers, + hope: hope, + fear: fear, + advantage: advantage, + disadvantage: disadvantage }; - await cls.create(msgData); + const msg = new cls({ + type: 'dualityRoll', + sound: CONFIG.sounds.dice, + system: systemContent, + user: game.user.id, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/duality-roll.hbs', + systemContent + ), + rolls: [roll] + }); + + await cls.create(msg.toObject()); } static async toggleMarks(_, button) { @@ -588,23 +594,28 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { evasion: x.actor.system.evasion })); + const systemData = { + title: weapon.name, + origin: this.document.id, + roll: roll._formula, + modifiers: modifiers, + hope: hope, + fear: fear, + advantage: advantage, + disadvantage: disadvantage, + damage: damage, + targets: targets + }; + const cls = getDocumentClass('ChatMessage'); const msg = new cls({ type: 'dualityRoll', sound: CONFIG.sounds.dice, - system: { - title: weapon.name, - origin: this.document.id, - roll: roll._formula, - modifiers: modifiers, - hope: hope, - fear: fear, - advantage: advantage, - disadvantage: disadvantage, - damage: damage, - targets: targets - }, - content: 'systems/daggerheart/templates/chat/attack-roll.hbs', + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/attack-roll.hbs', + systemData + ), rolls: [roll] }); @@ -642,17 +653,21 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const card = this.document.items.find(x => x.uuid === button.dataset.key); const cls = getDocumentClass('ChatMessage'); + const systemData = { + title: `${game.i18n.localize('DAGGERHEART.Chat.DomainCard.Title')} - ${capitalize(button.dataset.domain)}`, + img: card.img, + name: card.name, + description: card.system.effect, + actions: card.system.actions + }; const msg = new cls({ type: 'abilityUse', user: game.user.id, - content: 'systems/daggerheart/templates/chat/ability-use.hbs', - system: { - title: `${game.i18n.localize('DAGGERHEART.Chat.DomainCard.Title')} - ${capitalize(button.dataset.domain)}`, - img: card.img, - name: card.name, - description: card.system.effect, - actions: card.system.actions - } + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + systemData + ), + system: systemData }); cls.create(msg.toObject()); @@ -855,17 +870,21 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const item = await fromUuid(button.dataset.id); const cls = getDocumentClass('ChatMessage'); + const systemData = { + title: game.i18n.localize('DAGGERHEART.Chat.FeatureTitle'), + img: item.img, + name: item.name, + description: item.system.description, + actions: item.system.actions + }; const msg = new cls({ type: 'abilityUse', user: game.user.id, - content: 'systems/daggerheart/templates/chat/ability-use.hbs', - system: { - title: game.i18n.localize('DAGGERHEART.Chat.FeatureTitle'), - img: item.img, - name: item.name, - description: item.system.description, - actions: item.system.actions - } + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + systemData + ), + system: systemData }); cls.create(msg.toObject()); @@ -876,22 +895,26 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const type = button.dataset.type; const cls = getDocumentClass('ChatMessage'); + const systemData = { + title: + type === 'ancestry' + ? game.i18n.localize('DAGGERHEART.Chat.FoundationCard.AncestryTitle') + : type === 'community' + ? game.i18n.localize('DAGGERHEART.Chat.FoundationCard.CommunityTitle') + : game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), + img: item.img, + name: item.name, + description: item.system.description, + actions: [] + }; const msg = new cls({ type: 'abilityUse', user: game.user.id, - system: { - title: - type === 'ancestry' - ? game.i18n.localize('DAGGERHEART.Chat.FoundationCard.AncestryTitle') - : type === 'community' - ? game.i18n.localize('DAGGERHEART.Chat.FoundationCard.CommunityTitle') - : game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), - img: item.img, - name: item.name, - description: item.system.description, - actions: [] - }, - content: 'systems/daggerheart/templates/chat/ability-use.hbs' + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + systemData + ) }); cls.create(msg.toObject()); diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 2fcde3c8..60f83c60 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -246,22 +246,26 @@ export default class DhpActor extends Actor { } const cls = getDocumentClass('ChatMessage'); + const systemData = { + title: game.i18n.format('DAGGERHEART.Chat.DamageRoll.Title', { damage: title }), + roll: rollString, + damage: { + total: rollResult.total, + type: damage.type + }, + dice: dice, + modifiers: modifiers, + targets: targets + }; const msg = new cls({ type: 'damageRoll', user: game.user.id, sound: CONFIG.sounds.dice, - system: { - title: game.i18n.format('DAGGERHEART.Chat.DamageRoll.Title', { damage: title }), - roll: rollString, - damage: { - total: rollResult.total, - type: damage.type - }, - dice: dice, - modifiers: modifiers, - targets: targets - }, - content: 'systems/daggerheart/templates/chat/damage-roll.hbs', + system: systemData, + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/damage-roll.hbs', + systemData + ), rolls: [roll] }); diff --git a/templates/chat/attack-roll.hbs b/templates/chat/attack-roll.hbs index ccc93087..4deaf45b 100644 --- a/templates/chat/attack-roll.hbs +++ b/templates/chat/attack-roll.hbs @@ -164,7 +164,7 @@ {{/if}}
- +
diff --git a/templates/chat/damage-roll.hbs b/templates/chat/damage-roll.hbs index 9097331d..7cee09ed 100644 --- a/templates/chat/damage-roll.hbs +++ b/templates/chat/damage-roll.hbs @@ -23,7 +23,6 @@ -
{{this.damage.total}}