diff --git a/module/applications/chatMessage.mjs b/module/applications/chatMessage.mjs index fb4cc613..5e10a683 100644 --- a/module/applications/chatMessage.mjs +++ b/module/applications/chatMessage.mjs @@ -1,19 +1,28 @@ import DhpDualityRoll from '../data/dualityRoll.mjs'; import { DualityRollColor } from '../data/settings/Appearance.mjs'; -export default class DhpChatMesssage extends ChatMessage { - async renderHTML() { - if ( - this.type === 'dualityRoll' || - this.type === 'adversaryRoll' || - this.type === 'damageRoll' || - this.type === 'abilityUse' - ) { - this.content = await foundry.applications.handlebars.renderTemplate(this.content, this.system); - } +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(); + if ( this.type === 'dualityRoll' && game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.appearance).dualityColorScheme === diff --git a/module/applications/deathMove.mjs b/module/applications/deathMove.mjs index af4a0c9c..ea2c86e6 100644 --- a/module/applications/deathMove.mjs +++ b/module/applications/deathMove.mjs @@ -47,12 +47,15 @@ export default class DhpDeathMove extends HandlebarsApplicationMixin(Application const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/deathMove.hbs', { - player: this.actor.name, - title: game.i18n.localize(this.selectedMove.name), - img: this.selectedMove.img, - description: game.i18n.localize(this.selectedMove.description) - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/deathMove.hbs', + { + player: this.actor.name, + title: game.i18n.localize(this.selectedMove.name), + img: this.selectedMove.img, + description: game.i18n.localize(this.selectedMove.description) + } + ) }); cls.create(msg.toObject()); diff --git a/module/applications/downtime.mjs b/module/applications/downtime.mjs index f1da7678..49d8b1ab 100644 --- a/module/applications/downtime.mjs +++ b/module/applications/downtime.mjs @@ -70,13 +70,16 @@ export default class DhpDowntime extends HandlebarsApplicationMixin(ApplicationV const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/downtime.hbs', { - player: this.actor.name, - title: game.i18n.localize(this.selectedActivity.name), - img: this.selectedActivity.img, - description: game.i18n.localize(this.selectedActivity.description), - refreshedFeatures: refreshedFeatures - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/downtime.hbs', + { + player: this.actor.name, + title: game.i18n.localize(this.selectedActivity.name), + img: this.selectedActivity.img, + description: game.i18n.localize(this.selectedActivity.description), + refreshedFeatures: refreshedFeatures + } + ) }); cls.create(msg.toObject()); diff --git a/module/applications/sheets/environment.mjs b/module/applications/sheets/environment.mjs index 80295b05..8799d41a 100644 --- a/module/applications/sheets/environment.mjs +++ b/module/applications/sheets/environment.mjs @@ -123,10 +123,15 @@ export default class DhpEnvironment extends DaggerheartSheet(DocumentSheetV2) { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/ability-use.hbs', { - title: game.i18n.format('DAGGERHEART.Chat.EnvironmentTitle', { actionType: button.dataset.actionType }), - card: { name: item.name, img: item.img, description: item.system.description } - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + { + title: game.i18n.format('DAGGERHEART.Chat.EnvironmentTitle', { + actionType: button.dataset.actionType + }), + card: { name: item.name, img: item.img, description: item.system.description } + } + ) }); cls.create(msg.toObject()); diff --git a/module/applications/sheets/pc.mjs b/module/applications/sheets/pc.mjs index effada64..9e21edce 100644 --- a/module/applications/sheets/pc.mjs +++ b/module/applications/sheets/pc.mjs @@ -790,13 +790,16 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/ability-use.hbs', { - title: game.i18n.localize('DAGGERHEART.Chat.FeatureTitle'), - card: { - name: `${feature.name} - Roll Of ${feature.system.featureType.data.numbers[index].value}`, - img: feature.img + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + { + title: game.i18n.localize('DAGGERHEART.Chat.FeatureTitle'), + card: { + name: `${feature.name} - Roll Of ${feature.system.featureType.data.numbers[index].value}`, + img: feature.img + } } - }) + ) }); cls.create(msg.toObject()); @@ -905,10 +908,13 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/ability-use.hbs', { - title: game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), - card: { name: title, img: item.img, description: ability.description } - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + { + title: game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), + card: { name: title, img: item.img, description: ability.description } + } + ) }); cls.create(msg.toObject()); @@ -921,10 +927,13 @@ export default class PCSheet extends DaggerheartSheet(ActorSheetV2) { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/ability-use.hbs', { - title: game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), - card: { name: item.name, img: item.img, description: item.system.description } - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/ability-use.hbs', + { + title: game.i18n.localize('DAGGERHEART.Chat.FoundationCard.SubclassFeatureTitle'), + card: { name: item.name, img: item.img, description: item.system.description } + } + ) }); cls.create(msg.toObject()); diff --git a/module/data/pc.mjs b/module/data/pc.mjs index c7aa9660..9ab9dbd4 100644 --- a/module/data/pc.mjs +++ b/module/data/pc.mjs @@ -337,7 +337,7 @@ export default class DhpPC extends foundry.abstract.TypeDataModel { get refreshableFeatures() { return this.parent.items.reduce( (acc, x) => { - if (x.type === 'feature' && x.system.refreshData?.type) { + if (x.type === 'feature' && x.system.refreshData?.type === 'feature' && x.system.refreshData?.type) { acc[x.system.refreshData.type].push(x); } diff --git a/module/dialogs/selectDialog.mjs b/module/dialogs/selectDialog.mjs index e4792238..484979cc 100644 --- a/module/dialogs/selectDialog.mjs +++ b/module/dialogs/selectDialog.mjs @@ -5,9 +5,12 @@ export default class SelectDialog extends Dialog { this.data = { title: data.title, buttons: data.buttons, - content: renderTemplate('systems/daggerheart/templates/dialog/item-select.hbs', { - items: data.choices - }) + content: foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/dialog/item-select.hbs', + { + items: data.choices + } + ) }; this.actor = data.actor; diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index eb89e5ef..2fcde3c8 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -355,11 +355,14 @@ export default class DhpActor extends Actor { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/damage-roll.hbs', { - roll: roll.formula, - total: roll.result, - type: action.damage.type - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/damage-roll.hbs', + { + roll: roll.formula, + total: roll.result, + type: action.damage.type + } + ) }); cls.create(msg.toObject()); @@ -374,11 +377,14 @@ export default class DhpActor extends Actor { const cls = getDocumentClass('ChatMessage'); const msg = new cls({ user: game.user.id, - content: await renderTemplate('systems/daggerheart/templates/chat/healing-roll.hbs', { - roll: roll.formula, - total: roll.result, - type: action.healing.type - }) + content: await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/chat/healing-roll.hbs', + { + roll: roll.formula, + total: roll.result, + type: action.healing.type + } + ) }); cls.create(msg.toObject()); diff --git a/module/documents/item.mjs b/module/documents/item.mjs index cbf3ff2b..837b5564 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -38,25 +38,28 @@ export default class DhpItem extends Item { }, {}); // Render the document creation form - const html = await renderTemplate('systems/daggerheart/templates/sidebar/documentCreate.hbs', { - folders, - name: data.name || game.i18n.format('DOCUMENT.New', { type: label }), - folder: data.folder, - hasFolders: folders.length >= 1, - type: data.type || CONFIG[documentName]?.defaultType || typeObjects.armor, - types: { - Items: [typeObjects.armor, typeObjects.weapon, typeObjects.consumable, typeObjects.miscellaneous], - Character: [ - typeObjects.class, - typeObjects.subclass, - typeObjects.ancestry, - typeObjects.community, - typeObjects.feature, - typeObjects.domainCard - ] - }, - hasTypes: types.length > 1 - }); + const html = await foundry.applications.handlebars.renderTemplate( + 'systems/daggerheart/templates/sidebar/documentCreate.hbs', + { + folders, + name: data.name || game.i18n.format('DOCUMENT.New', { type: label }), + folder: data.folder, + hasFolders: folders.length >= 1, + type: data.type || CONFIG[documentName]?.defaultType || typeObjects.armor, + types: { + Items: [typeObjects.armor, typeObjects.weapon, typeObjects.consumable, typeObjects.miscellaneous], + Character: [ + typeObjects.class, + typeObjects.subclass, + typeObjects.ancestry, + typeObjects.community, + typeObjects.feature, + typeObjects.domainCard + ] + }, + hasTypes: types.length > 1 + } + ); // Render the confirmation dialog window return Dialog.prompt({ diff --git a/styles/daggerheart.css b/styles/daggerheart.css index 4353bacb..c44b2b76 100755 --- a/styles/daggerheart.css +++ b/styles/daggerheart.css @@ -2828,14 +2828,14 @@ div.daggerheart.views.multiclass { font-style: normal; font-weight: 400; font-display: swap; - src: url(https://fonts.gstatic.com/s/montserrat/v29/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew-.ttf) format('truetype'); + src: url(https://fonts.gstatic.com/s/montserrat/v30/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew-.ttf) format('truetype'); } @font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 600; font-display: swap; - src: url(https://fonts.gstatic.com/s/montserrat/v29/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu170w-.ttf) format('truetype'); + src: url(https://fonts.gstatic.com/s/montserrat/v30/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu170w-.ttf) format('truetype'); } .application.sheet.daggerheart.dh-style h1 { font-family: 'Cinzel Decorative', serif;