From d3836fbeebeb89ba3049f27a527fe8431201c661 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sat, 19 Jul 2025 22:19:55 +0200 Subject: [PATCH] Added effect enricher --- daggerheart.mjs | 38 +++--------------------- lang/en.json | 3 +- module/enrichers/DamageEnricher.mjs | 6 ++-- module/enrichers/DualityRollEnricher.mjs | 2 +- module/enrichers/EffectEnricher.mjs | 19 ++++++++++++ module/enrichers/_module.mjs | 31 ++++++++++++++++--- styles/less/ui/chat/chat.less | 1 + styles/less/ui/chat/sheet.less | 21 +++++++++++++ 8 files changed, 77 insertions(+), 44 deletions(-) create mode 100644 module/enrichers/EffectEnricher.mjs diff --git a/daggerheart.mjs b/daggerheart.mjs index 5bb0b016..a3bf35ca 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -3,7 +3,7 @@ import * as applications from './module/applications/_module.mjs'; import * as models from './module/data/_module.mjs'; import * as documents from './module/documents/_module.mjs'; import RegisterHandlebarsHelpers from './module/helpers/handlebarsHelper.mjs'; -import { enricherConfig } from './module/enrichers/_module.mjs'; +import { enricherConfig, enricherRenderSetup } from './module/enrichers/_module.mjs'; import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs'; import { NarrativeCountdowns } from './module/applications/ui/countdowns.mjs'; import { DualityRollColor } from './module/data/settings/Appearance.mjs'; @@ -168,45 +168,15 @@ Hooks.on('ready', () => { Hooks.once('dicesoniceready', () => {}); Hooks.on('renderChatMessageHTML', (_, element) => { - element - .querySelectorAll('.enriched-damage-button') - .forEach(element => element.addEventListener('click', renderDamageButton)); - - element - .querySelectorAll('.duality-roll-button') - .forEach(element => element.addEventListener('click', renderDualityButton)); - - element - .querySelectorAll('.measured-template-button') - .forEach(element => element.addEventListener('click', renderMeasuredTemplate)); + enricherRenderSetup(element); }); Hooks.on('renderJournalEntryPageProseMirrorSheet', (_, element) => { - element - .querySelectorAll('.enriched-damage-button') - .forEach(element => element.addEventListener('click', renderDamageButton)); - - element - .querySelectorAll('.duality-roll-button') - .forEach(element => element.addEventListener('click', renderDualityButton)); - - element - .querySelectorAll('.measured-template-button') - .forEach(element => element.addEventListener('click', renderMeasuredTemplate)); + enricherRenderSetup(element); }); Hooks.on('renderHandlebarsApplication', (_, element) => { - element - .querySelectorAll('.enriched-damage-button') - .forEach(element => element.addEventListener('click', renderDamageButton)); - - element - .querySelectorAll('.duality-roll-button') - .forEach(element => element.addEventListener('click', renderDualityButton)); - - element - .querySelectorAll('.measured-template-button') - .forEach(element => element.addEventListener('click', renderMeasuredTemplate)); + enricherRenderSetup(element); }); Hooks.on('chatMessage', (_, message) => { diff --git a/lang/en.json b/lang/en.json index 9f929c77..8a170bd6 100755 --- a/lang/en.json +++ b/lang/en.json @@ -1590,7 +1590,8 @@ "sendToVault": "Send to Vault", "sendToLoadout": "Send to Loadout", "makeDeathMove": "Make a Death Move", - "rangeAndTarget": "Range & Target" + "rangeAndTarget": "Range & Target", + "dragApplyEffect": "Drag effect to apply it to an actor" } } } diff --git a/module/enrichers/DamageEnricher.mjs b/module/enrichers/DamageEnricher.mjs index 5c277b81..918edc39 100644 --- a/module/enrichers/DamageEnricher.mjs +++ b/module/enrichers/DamageEnricher.mjs @@ -1,5 +1,3 @@ -import { rollCommandToJSON } from '../helpers/utils.mjs'; - export default function DhDamageEnricher(match, _options) { const parts = match[1].split('|').map(x => x.trim()); @@ -25,8 +23,7 @@ export default function DhDamageEnricher(match, _options) { return getDamageMessage(value, type, match[0]); } -export function getDamageMessage(damage, type, defaultElement) { - const dualityElement = document.createElement('span'); +function getDamageMessage(damage, type, defaultElement) { const typeIcons = type .replace('[', '') .replace(']', '') @@ -41,6 +38,7 @@ export function getDamageMessage(damage, type, defaultElement) { const iconNodes = typeIcons.map(x => ``).join(''); + const dualityElement = document.createElement('span'); dualityElement.innerHTML = `