diff --git a/src/macros_new/gowlers-tracking-ledger/foundry.gowlershome.dyndns.org/modules/gowlers-tracking-ledger/scripts/gowlers-tracking-ledger.js b/src/macros_new/gowlers-tracking-ledger/foundry.gowlershome.dyndns.org/modules/gowlers-tracking-ledger/scripts/gowlers-tracking-ledger.js index 5a1a4973..b8dbdd04 100644 --- a/src/macros_new/gowlers-tracking-ledger/foundry.gowlershome.dyndns.org/modules/gowlers-tracking-ledger/scripts/gowlers-tracking-ledger.js +++ b/src/macros_new/gowlers-tracking-ledger/foundry.gowlershome.dyndns.org/modules/gowlers-tracking-ledger/scripts/gowlers-tracking-ledger.js @@ -1,6 +1,6 @@ const MODULE_ID = "gowlers-tracking-ledger"; -const MODULE_VERSION = "0.1.19"; +const MODULE_VERSION = "0.1.20"; const TRACK_SETTING = "actorSettings"; const FLAG_SCOPE = "world"; const MAX_HISTORY_ROWS = 100; @@ -239,10 +239,15 @@ async function initializeModule() { const source = buildSourceLabel(value, options); console.log("[GowlersTracking] Storing message for matching: source=", source, "value=", value); + // Extract damage details for breakdown information + const damageDetails = extractDamageDetails(value, options); + console.log("[GowlersTracking] Damage details extracted:", damageDetails); + ledgerState.recentMessages.push({ message: message, source: source, value: value, // Keep sign! Negative = damage, Positive = healing + damageDetails: damageDetails, timestamp: Date.now(), }); @@ -358,6 +363,75 @@ async function initializeModule() { return actor.items.get(metadata.item) ?? null; } + // Helper: Extract damage type and breakdown details from message + function extractDamageDetails(value, options = {}) { + const message = options?.message; + if (!message) return null; + + // Try to extract from PF1 flags + const pf1Flags = message.flags?.pf1 ?? {}; + const metadata = pf1Flags.metadata ?? {}; + + // Extract damage types from metadata or message content + const damageTypes = []; + + // Check for damage type data in metadata + if (metadata.damageTypes) { + if (Array.isArray(metadata.damageTypes)) { + damageTypes.push(...metadata.damageTypes); + } else if (typeof metadata.damageTypes === 'string') { + damageTypes.push(metadata.damageTypes); + } + } + + // Try to parse damage types from message content (HTML) + if (message.content && damageTypes.length === 0) { + // Look for damage type patterns in HTML + const contentMatch = message.content.match(/