update all chat messages to render templates

This commit is contained in:
IrkTheImp 2025-05-29 21:51:54 -05:00
parent cc6c9a11bc
commit 6a1848760b
7 changed files with 130 additions and 112 deletions

View file

@ -774,7 +774,8 @@
"AbilityCheckTitle": "{ability} Check" "AbilityCheckTitle": "{ability} Check"
}, },
"AttackRoll": { "AttackRoll": {
"Title": "Attack - {attack}" "Title": "Attack - {attack}",
"RollDamage": "Roll Damage"
}, },
"DamageRoll": { "DamageRoll": {
"Title": "Damage - {damage}", "Title": "Damage - {damage}",

View file

@ -2,23 +2,6 @@ import DhpDualityRoll from '../data/dualityRoll.mjs';
import { DualityRollColor } from '../data/settings/Appearance.mjs'; import { DualityRollColor } from '../data/settings/Appearance.mjs';
export default class DhpChatMessage extends ChatMessage { 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() { async renderHTML() {
/* We can change to fully implementing the renderHTML function if needed, instead of augmenting it. */ /* We can change to fully implementing the renderHTML function if needed, instead of augmenting it. */
const html = await super.renderHTML(); const html = await super.renderHTML();

View file

@ -330,15 +330,19 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) {
); );
const cls = getDocumentClass('ChatMessage'); const cls = getDocumentClass('ChatMessage');
const systemData = {
roll: roll._formula,
total: roll._total,
modifiers: modifiers,
diceResults: diceResults
};
const msg = new cls({ const msg = new cls({
type: 'adversaryRoll', type: 'adversaryRoll',
system: { system: systemData,
roll: roll._formula, content: await foundry.applications.handlebars.renderTemplate(
total: roll._total, 'systems/daggerheart/templates/chat/adversary-roll.hbs',
modifiers: modifiers, systemData
diceResults: diceResults ),
},
content: 'systems/daggerheart/templates/chat/adversary-roll.hbs',
rolls: [roll] rolls: [roll]
}); });
@ -362,21 +366,25 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) {
})); }));
const cls = getDocumentClass('ChatMessage'); 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({ const msg = new cls({
type: 'adversaryRoll', type: 'adversaryRoll',
sound: CONFIG.sounds.dice, sound: CONFIG.sounds.dice,
system: { system: systemData,
title: button.dataset.name, content: await foundry.applications.handlebars.renderTemplate(
origin: this.document.id, 'systems/daggerheart/templates/chat/adversary-attack-roll.hbs',
roll: roll._formula, systemData
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',
rolls: [roll] rolls: [roll]
}); });

View file

@ -494,27 +494,33 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
); );
const cls = getDocumentClass('ChatMessage'); const cls = getDocumentClass('ChatMessage');
const msgData = {
type: 'dualityRoll', const systemContent = {
sound: CONFIG.sounds.dice, title: game.i18n.format('DAGGERHEART.Chat.DualityRoll.AbilityCheckTitle', {
system: { ability: game.i18n.localize(abilities[button.dataset.attribute].label)
title: game.i18n.format('DAGGERHEART.Chat.DualityRoll.AbilityCheckTitle', { }),
ability: game.i18n.localize(abilities[button.dataset.attribute].label) origin: this.document.id,
}), roll: roll._formula,
origin: this.document.id, modifiers: modifiers,
roll: roll._formula, hope: hope,
modifiers: modifiers, fear: fear,
hope: hope, advantage: advantage,
fear: fear, disadvantage: disadvantage
advantage: advantage,
disadvantage: disadvantage
},
user: game.user.id,
content: 'systems/daggerheart/templates/chat/duality-roll.hbs',
rolls: [roll]
}; };
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) { static async toggleMarks(_, button) {
@ -588,23 +594,28 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
evasion: x.actor.system.evasion 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 cls = getDocumentClass('ChatMessage');
const msg = new cls({ const msg = new cls({
type: 'dualityRoll', type: 'dualityRoll',
sound: CONFIG.sounds.dice, sound: CONFIG.sounds.dice,
system: { system: systemData,
title: weapon.name, content: await foundry.applications.handlebars.renderTemplate(
origin: this.document.id, 'systems/daggerheart/templates/chat/attack-roll.hbs',
roll: roll._formula, systemData
modifiers: modifiers, ),
hope: hope,
fear: fear,
advantage: advantage,
disadvantage: disadvantage,
damage: damage,
targets: targets
},
content: 'systems/daggerheart/templates/chat/attack-roll.hbs',
rolls: [roll] 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 card = this.document.items.find(x => x.uuid === button.dataset.key);
const cls = getDocumentClass('ChatMessage'); 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({ const msg = new cls({
type: 'abilityUse', type: 'abilityUse',
user: game.user.id, user: game.user.id,
content: 'systems/daggerheart/templates/chat/ability-use.hbs', content: await foundry.applications.handlebars.renderTemplate(
system: { 'systems/daggerheart/templates/chat/ability-use.hbs',
title: `${game.i18n.localize('DAGGERHEART.Chat.DomainCard.Title')} - ${capitalize(button.dataset.domain)}`, systemData
img: card.img, ),
name: card.name, system: systemData
description: card.system.effect,
actions: card.system.actions
}
}); });
cls.create(msg.toObject()); cls.create(msg.toObject());
@ -855,17 +870,21 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
const item = await fromUuid(button.dataset.id); const item = await fromUuid(button.dataset.id);
const cls = getDocumentClass('ChatMessage'); 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({ const msg = new cls({
type: 'abilityUse', type: 'abilityUse',
user: game.user.id, user: game.user.id,
content: 'systems/daggerheart/templates/chat/ability-use.hbs', content: await foundry.applications.handlebars.renderTemplate(
system: { 'systems/daggerheart/templates/chat/ability-use.hbs',
title: game.i18n.localize('DAGGERHEART.Chat.FeatureTitle'), systemData
img: item.img, ),
name: item.name, system: systemData
description: item.system.description,
actions: item.system.actions
}
}); });
cls.create(msg.toObject()); cls.create(msg.toObject());
@ -876,22 +895,26 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) {
const type = button.dataset.type; const type = button.dataset.type;
const cls = getDocumentClass('ChatMessage'); 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({ const msg = new cls({
type: 'abilityUse', type: 'abilityUse',
user: game.user.id, user: game.user.id,
system: { system: systemData,
title: content: await foundry.applications.handlebars.renderTemplate(
type === 'ancestry' 'systems/daggerheart/templates/chat/ability-use.hbs',
? game.i18n.localize('DAGGERHEART.Chat.FoundationCard.AncestryTitle') systemData
: 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'
}); });
cls.create(msg.toObject()); cls.create(msg.toObject());

View file

@ -246,22 +246,26 @@ export default class DhpActor extends Actor {
} }
const cls = getDocumentClass('ChatMessage'); 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({ const msg = new cls({
type: 'damageRoll', type: 'damageRoll',
user: game.user.id, user: game.user.id,
sound: CONFIG.sounds.dice, sound: CONFIG.sounds.dice,
system: { system: systemData,
title: game.i18n.format('DAGGERHEART.Chat.DamageRoll.Title', { damage: title }), content: await foundry.applications.handlebars.renderTemplate(
roll: rollString, 'systems/daggerheart/templates/chat/damage-roll.hbs',
damage: { systemData
total: rollResult.total, ),
type: damage.type
},
dice: dice,
modifiers: modifiers,
targets: targets
},
content: 'systems/daggerheart/templates/chat/damage-roll.hbs',
rolls: [roll] rolls: [roll]
}); });

View file

@ -164,7 +164,7 @@
</div> </div>
{{/if}} {{/if}}
<div class="dice-actions"> <div class="dice-actions">
<button class="duality-action" data-value="{{this.total}}" data-damage="{{this.damage.value}}" data-damage-type="{{this.damage.type}}" {{#if this.damage.disabled}}disabled{{/if}}><span>Roll Damage</span></button> <button class="duality-action" data-value="{{this.total}}" data-damage="{{this.damage.value}}" data-damage-type="{{this.damage.type}}" {{#if this.damage.disabled}}disabled{{/if}}><span>{{localize "DAGGERHEART.Chat.AttackRoll.RollDamage"}}</span></button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -23,7 +23,6 @@
</section> </section>
</div> </div>
</div> </div>
<div class="dice-total">{{this.damage.total}}</div> <div class="dice-total">{{this.damage.total}}</div>
<div class="dice-actions"> <div class="dice-actions">
<button class="damage-button" data-target-hit="true" {{#if (eq this.targets.length 0)}}disabled{{/if}}>{{localize "DAGGERHEART.Chat.DamageRoll.DealDamageToTargets"}}</button> <button class="damage-button" data-target-hit="true" {{#if (eq this.targets.length 0)}}disabled{{/if}}>{{localize "DAGGERHEART.Chat.DamageRoll.DealDamageToTargets"}}</button>