From f9c30b583cca9b04c3169e6b80074a7222bb1540 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Sat, 24 May 2025 21:06:04 +0200 Subject: [PATCH] Temp --- daggerheart.mjs | 30 ++++++++++++++++++- lang/en.json | 7 +++-- module/enrichers/DualityRollEnricher.mjs | 38 ++++++++++++++++++++++++ templates/sheets/pc/pc.hbs | 1 - 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 module/enrichers/DualityRollEnricher.mjs diff --git a/daggerheart.mjs b/daggerheart.mjs index dfe8902b..5ab13404 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -10,6 +10,7 @@ import DhpChatLog from './module/ui/chatLog.mjs'; import DhpPlayers from './module/ui/players.mjs'; import DhpRuler from './module/ui/ruler.mjs'; import DhpTokenRuler from './module/ui/tokenRuler.mjs'; +import { dualityRollEnricher } from './module/enrichers/DualityRollEnricher.mjs'; globalThis.SYSTEM = SYSTEM; @@ -21,6 +22,11 @@ Hooks.once('init', () => { documents }; + CONFIG.TextEditor.enrichers.push({ + pattern: /\[\[\/dr\s?(.*?)\]\]/g, + enricher: dualityRollEnricher + }); + CONFIG.statusEffects = Object.values(SYSTEM.GENERAL.conditions).map(x => ({ ...x, name: game.i18n.localize(x.name) @@ -89,7 +95,6 @@ Hooks.once('init', () => { game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent); registerDHPSettings(); - RegisterHandlebarsHelpers.registerHelpers(); return preloadHandlebarsTemplates(); @@ -121,6 +126,29 @@ Hooks.on(socketEvent.GMUpdate, async (action, uuid, update) => { } }); +Hooks.on('renderChatMessageHTML', (message, element) => { + element.querySelectorAll('.duality-roll-button').forEach(element => + element.addEventListener('click', async event => { + const button = event.currentTarget; + let target = game.canvas.tokens.controlled.length > 0 ? game.canvas.tokens.controlled[0].actor : null; + if (!game.user.isGM) { + target = game.user.character; + if (!target) { + notifications.error('DAGGERHEART.Notification.Error.NoAssignedPlayerCharacter'); + return; + } + } + + if (!target) { + notifications.error('DAGGERHEART.Notification.Error.NoSelectedToken'); + return; + } + + const test = await gmTarget.diceRoll(3); + }) + ); +}); + const preloadHandlebarsTemplates = async function () { return foundry.applications.handlebars.loadTemplates([ 'systems/daggerheart/templates/sheets/parts/attributes.hbs', diff --git a/lang/en.json b/lang/en.json index b5c6dd91..c382a533 100644 --- a/lang/en.json +++ b/lang/en.json @@ -93,13 +93,16 @@ "LacksDomain": "Your character doesn't have the domain of the card!", "MaxLoadoutReached": "You can't have any more domain cards at this level!", "DuplicateDomainCard": "You already have a domain card with that name!", - "ActionRequiresTarget": "The action requires at least one target" + "ActionRequiresTarget": "The action requires at least one target", + "NoAssignedPlayerCharacter": "You have no assigned character.", + "NoSelectedToken": "You have no selected token" } }, "General": { - "OpenBetaDisclaimer": "Daggerheart Open Beta {version}", "Hope": "Hope", "Fear": "Fear", + "Duality": "Duality", + "Check": "{check} Check", "CriticalSuccess": "Critical Success", "Advantage": "Advantage", "Disadvantage": "Disadvantage", diff --git a/module/enrichers/DualityRollEnricher.mjs b/module/enrichers/DualityRollEnricher.mjs new file mode 100644 index 00000000..2e965db9 --- /dev/null +++ b/module/enrichers/DualityRollEnricher.mjs @@ -0,0 +1,38 @@ +import { abilities } from '../config/actorConfig.mjs'; + +export async function dualityRollEnricher(match, _options) { + try { + const { + hope = 'd12', + fear = 'd12', + attribute, + advantage, + disadvantage + } = JSON.parse(`{${match[1].replace(' ', ',').replace(/(\w+(?==))(=)/g, '"$1":')}}`); + const dualityElement = document.createElement('span'); + + const attributeLabel = + attribute && abilities[attribute] + ? game.i18n.format('DAGGERHEART.General.Check', { + check: game.i18n.localize(abilities[attribute].label) + }) + : null; + const label = attributeLabel ?? game.i18n.localize('DAGGERHEART.General.Duality'); + dualityElement.innerHTML = ` + + `; + + return dualityElement; + } catch (_) { + return match[0]; + } +} diff --git a/templates/sheets/pc/pc.hbs b/templates/sheets/pc/pc.hbs index 0de09cd2..41fb9ac3 100644 --- a/templates/sheets/pc/pc.hbs +++ b/templates/sheets/pc/pc.hbs @@ -76,7 +76,6 @@
-
{{localize "DAGGERHEART.General.OpenBetaDisclaimer" version="V1.4"}}
{{> "systems/daggerheart/templates/sheets/parts/defense.hbs" }}