From b827b7718416e821e2783ff619591b13e3b0e223 Mon Sep 17 00:00:00 2001 From: tomt610 Date: Tue, 13 Jan 2026 19:47:14 +0000 Subject: [PATCH] Fix: Include max value in stats context when number mode is selected --- src/systems/generation/promptBuilder.js | 27 ++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/systems/generation/promptBuilder.js b/src/systems/generation/promptBuilder.js index 0e43360..8c7b69b 100644 --- a/src/systems/generation/promptBuilder.js +++ b/src/systems/generation/promptBuilder.js @@ -546,12 +546,33 @@ function formatTrackerDataForContext(jsonData, trackerType, userName) { if (trackerType === 'userStats') { formatted += `${userName}'s Stats:\n`; + // Get display mode and custom stats config for maxValue lookup + const userStatsConfig = extensionSettings.trackerConfig?.userStats; + const displayMode = userStatsConfig?.statsDisplayMode || 'percentage'; + const customStats = userStatsConfig?.customStats || []; + + // Helper to get maxValue for a stat by id + const getMaxValue = (statId) => { + const statConfig = customStats.find(s => s.id === statId); + return statConfig?.maxValue || 100; + }; + + // Helper to format stat value based on display mode + const formatStatValue = (value, statId) => { + if (displayMode === 'number') { + const maxValue = getMaxValue(statId); + return `${value}/${maxValue}`; + } + return value; + }; + // Handle stats array format: [{id, name, value}, ...] if (data.stats && Array.isArray(data.stats)) { for (const stat of data.stats) { if (stat && stat.value !== undefined) { const statName = stat.name || (stat.id ? stat.id.charAt(0).toUpperCase() + stat.id.slice(1) : 'Unknown'); - formatted += `${statName}: ${stat.value}\n`; + const statId = stat.id || statName.toLowerCase(); + formatted += `${statName}: ${formatStatValue(stat.value, statId)}\n`; } } } else { @@ -564,7 +585,7 @@ function formatTrackerDataForContext(jsonData, trackerType, userName) { const value = getValue(data[statName]); if (value) { const displayName = statName.charAt(0).toUpperCase() + statName.slice(1); - formatted += `${displayName}: ${value}\n`; + formatted += `${displayName}: ${formatStatValue(value, statName)}\n`; } } } @@ -573,7 +594,7 @@ function formatTrackerDataForContext(jsonData, trackerType, userName) { for (const [key, value] of Object.entries(data)) { if (!statFieldOrder.includes(key) && !specialFields.includes(key) && typeof value === 'number') { const displayName = key.charAt(0).toUpperCase() + key.slice(1); - formatted += `${displayName}: ${getValue(value)}\n`; + formatted += `${displayName}: ${formatStatValue(getValue(value), key)}\n`; } } }