From 4a027e85912892dcf74fc57006b35d53ed902a5b Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sat, 10 Jan 2026 15:48:40 +0100 Subject: [PATCH] . --- module/applications/sheets/api/base-item.mjs | 4 +++- module/data/item/armor.mjs | 4 ++-- module/data/item/base.mjs | 18 +++++++++++++----- module/data/item/weapon.mjs | 4 ++-- module/documents/tooltipManager.mjs | 8 ++++++-- styles/less/ux/tooltip/tooltip.less | 15 +++++++++++++-- templates/sheets/items/armor/description.hbs | 4 +++- templates/sheets/items/weapon/description.hbs | 4 +++- 8 files changed, 45 insertions(+), 16 deletions(-) diff --git a/module/applications/sheets/api/base-item.mjs b/module/applications/sheets/api/base-item.mjs index 4ef5f048..00448e95 100644 --- a/module/applications/sheets/api/base-item.mjs +++ b/module/applications/sheets/api/base-item.mjs @@ -79,7 +79,9 @@ export default class DHBaseItemSheet extends DHApplicationMixin(ItemSheetV2) { switch (partId) { case 'description': - context.enrichedDescription = await this.document.system.getEnrichedDescription(true); + context.enrichedDescription = await this.document.system.getEnrichedDescription({ + headerStyle: 'large' + }); break; case 'effects': await this._prepareEffectsContext(context, options); diff --git a/module/data/item/armor.mjs b/module/data/item/armor.mjs index 8f8e87ac..c0de0eeb 100644 --- a/module/data/item/armor.mjs +++ b/module/data/item/armor.mjs @@ -55,7 +55,7 @@ export default class DHArmor extends AttachableItem { } /**@inheritdoc */ - async getDescriptionData(large) { + async getDescriptionData(options = {}) { const baseDescription = await super.getDescriptionData(); const allFeatures = CONFIG.DH.ITEM.allArmorFeatures(); const features = this.armorFeatures.map(x => allFeatures[x.value]); @@ -63,7 +63,7 @@ export default class DHArmor extends AttachableItem { const prepend = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/sheets/items/armor/description.hbs', - { features, large } + { features, headerStyle: options.headerStyle } ); const mainDescription = baseDescription ? `\n
\n${baseDescription}` : ''; diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index 65760be7..c98631cb 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -124,16 +124,24 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { return [source, page ? `pg ${page}.` : null].filter(x => x).join('. '); } - /** */ - async getDescriptionData() { + /** + * Augments the description for the item with type specific info to display. Implemented in applicable item subtypes. + * @param {object} [options] - Options that modify the styling of the rendered template. { headerStyle: undefined|'none'|'large' } + * @returns {string} + */ + async getDescriptionData(_options) { return this.description; } - /** */ - async getEnrichedDescription(large) { + /** + * Gets the enriched and augmented description for the item. + * @param {object} [options] - Options that modify the styling of the rendered template. { headerStyle: undefined|'none'|'large' } + * @returns {string} + */ + async getEnrichedDescription(options) { if (!this.metadata.hasDescription) return ''; - const description = await this.getDescriptionData(large); + const description = await this.getDescriptionData(options); return await foundry.applications.ux.TextEditor.implementation.enrichHTML(description, { relativeTo: this, rollData: this.getRollData(), diff --git a/module/data/item/weapon.mjs b/module/data/item/weapon.mjs index 205fb02a..48a53e02 100644 --- a/module/data/item/weapon.mjs +++ b/module/data/item/weapon.mjs @@ -111,7 +111,7 @@ export default class DHWeapon extends AttachableItem { } /**@inheritdoc */ - async getDescriptionData(large) { + async getDescriptionData(options = {}) { const baseDescription = await super.getDescriptionData(); const allFeatures = CONFIG.DH.ITEM.allWeaponFeatures(); const features = this.weaponFeatures.map(x => allFeatures[x.value]); @@ -119,7 +119,7 @@ export default class DHWeapon extends AttachableItem { const prepend = await foundry.applications.handlebars.renderTemplate( 'systems/daggerheart/templates/sheets/items/weapon/description.hbs', - { features, large } + { features, headerStyle: options.headerStyle } ); const mainDescription = baseDescription ? `\n
\n${baseDescription}` : ''; diff --git a/module/documents/tooltipManager.mjs b/module/documents/tooltipManager.mjs index 3ea6703c..b25a4b21 100644 --- a/module/documents/tooltipManager.mjs +++ b/module/documents/tooltipManager.mjs @@ -220,12 +220,16 @@ export default class DhTooltipManager extends foundry.helpers.interaction.Toolti for (const [index, itemValue] of pathValue.entries()) { const itemIsAction = itemValue instanceof game.system.api.models.actions.actionsTypes.base; const value = itemIsAction || !itemValue?.item ? itemValue : itemValue.item; - const enrichedValue = await TextEditor.enrichHTML(value.system?.description ?? value.description); + const enrichedValue = + (await value.system?.getEnrichedDescription?.({ headerStyle: 'none' })) ?? + (await TextEditor.enrichHTML(value.system?.description ?? value.description)); if (itemIsAction) value.enrichedDescription = enrichedValue; else foundry.utils.setProperty(item, `${basePath}.${index}.enrichedDescription`, enrichedValue); } } else { - const enrichedValue = await TextEditor.enrichHTML(pathValue); + const enrichedValue = + (await item.system?.getEnrichedDescription?.({ headerStyle: 'none' })) ?? + (await TextEditor.enrichHTML(pathValue)); foundry.utils.setProperty( item, `${data.path ? `${data.path}.` : ''}enriched${data.name.capitalize()}`, diff --git a/styles/less/ux/tooltip/tooltip.less b/styles/less/ux/tooltip/tooltip.less index bfe0c01f..970c2ca4 100644 --- a/styles/less/ux/tooltip/tooltip.less +++ b/styles/less/ux/tooltip/tooltip.less @@ -11,7 +11,7 @@ aside[role='tooltip']:has(div.daggerheart.dh-style.tooltip.card-style) { width: 18rem; background-image: url('../assets/parchments/dh-parchment-dark.png'); outline: 1px solid light-dark(@dark-80, @beige-80); - box-shadow: 0 0 25px rgba(0, 0, 0, 0.80); + box-shadow: 0 0 25px rgba(0, 0, 0, 0.8); .tooltip-title { font-size: var(--font-size-20); @@ -235,7 +235,6 @@ aside[role='tooltip'].locked-tooltip:has(div.daggerheart.dh-style.tooltip.card-s .theme-light aside[role='tooltip'].locked-tooltip:has(div.daggerheart.dh-style.tooltip) { box-shadow: 0 0 25px @dark-blue-90; outline: 1px solid light-dark(@dark-blue, @golden); - } #tooltip, @@ -283,6 +282,18 @@ aside[role='tooltip'].locked-tooltip:has(div.daggerheart.dh-style.tooltip.card-s .tooltip-description { font-style: italic; text-align: start; + + .feature-descriptions { + .features-header { + font-size: 14px; + font-weight: bold; + text-decoration: underline; + + &.large { + font-size: 18px; + } + } + } } .simple-info { diff --git a/templates/sheets/items/armor/description.hbs b/templates/sheets/items/armor/description.hbs index efd5c1e5..d2c67604 100644 --- a/templates/sheets/items/armor/description.hbs +++ b/templates/sheets/items/armor/description.hbs @@ -1,5 +1,7 @@
-
{{localize "DAGGERHEART.SETTINGS.Homebrew.itemFeatures"}}
+ {{#unless (eq headerStyle 'none')}} +
{{localize "DAGGERHEART.SETTINGS.Homebrew.itemFeatures"}}
+ {{/unless}} {{#each features as | feature |}}
{{localize feature.label}}: {{{localize feature.description}}}
{{/each}} diff --git a/templates/sheets/items/weapon/description.hbs b/templates/sheets/items/weapon/description.hbs index efd5c1e5..d2c67604 100644 --- a/templates/sheets/items/weapon/description.hbs +++ b/templates/sheets/items/weapon/description.hbs @@ -1,5 +1,7 @@
-
{{localize "DAGGERHEART.SETTINGS.Homebrew.itemFeatures"}}
+ {{#unless (eq headerStyle 'none')}} +
{{localize "DAGGERHEART.SETTINGS.Homebrew.itemFeatures"}}
+ {{/unless}} {{#each features as | feature |}}
{{localize feature.label}}: {{{localize feature.description}}}
{{/each}}