From 9e49aa1ca6e485895ba708848b04a174d6b70ea6 Mon Sep 17 00:00:00 2001 From: n8n-gitea Date: Fri, 29 May 2026 15:23:40 +0200 Subject: [PATCH] fix: update Steady Hand prestige upgrade with real enchantment power effect --- docs/circular-deps.txt | 2 +- docs/dependency-graph.json | 2 +- src/lib/game/constants/prestige.ts | 2 +- src/lib/game/effects.ts | 7 ++++++- src/lib/game/stores/gameHooks.ts | 5 +++++ src/lib/game/stores/gameStore.ts | 5 ++++- 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt index 2caaac9..e3bf758 100644 --- a/docs/circular-deps.txt +++ b/docs/circular-deps.txt @@ -1,4 +1,4 @@ # Circular Dependencies -Generated: 2026-05-29T13:07:07.851Z +Generated: 2026-05-29T13:10:03.724Z No circular dependencies found. ✅ diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json index 025180e..f840c48 100644 --- a/docs/dependency-graph.json +++ b/docs/dependency-graph.json @@ -1,6 +1,6 @@ { "_meta": { - "generated": "2026-05-29T13:07:06.203Z", + "generated": "2026-05-29T13:10:02.096Z", "description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.", "usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry." }, diff --git a/src/lib/game/constants/prestige.ts b/src/lib/game/constants/prestige.ts index aa1161f..7e23157 100644 --- a/src/lib/game/constants/prestige.ts +++ b/src/lib/game/constants/prestige.ts @@ -5,7 +5,7 @@ export const PRESTIGE_DEF: Record = { insightAmp: { name: "Insight Amp", desc: "+25% insight gain", max: 4, cost: 1500 }, spireKey: { name: "Spire Key", desc: "Start at floor +2", max: 5, cost: 4000 }, temporalEcho: { name: "Temporal Echo", desc: "+10% mana generation", max: 5, cost: 3000 }, - steadyHand: { name: "Steady Hand", desc: "-15% durability loss", max: 5, cost: 1200 }, + steadyHand: { name: "Steady Hand", desc: "+15% enchantment power", max: 5, cost: 1200 }, ancientKnowledge: { name: "Ancient Knowledge", desc: "Start with blueprint discovered", max: 5, cost: 2000 }, elementalAttune: { name: "Elemental Attunement", desc: "+25 elemental mana cap", max: 10, cost: 600 }, spellMemory: { name: "Spell Memory", desc: "Start with random spell learned", max: 3, cost: 2500 }, diff --git a/src/lib/game/effects.ts b/src/lib/game/effects.ts index 6fd78e4..618a185 100644 --- a/src/lib/game/effects.ts +++ b/src/lib/game/effects.ts @@ -90,9 +90,12 @@ export interface UnifiedEffects extends ComputedEffects { export function computeAllEffects( equipmentInstances: Record, equippedInstances: Record, + prestigeUpgrades?: Record, ): UnifiedEffects { const upgradeEffects = computeEffects(); - const equipmentEffects = computeEquipmentEffects(equipmentInstances, equippedInstances, upgradeEffects.enchantmentPowerMultiplier); + const steadyHandLevel = (prestigeUpgrades?.steadyHand || 0); + const enchantmentPowerMultiplier = upgradeEffects.enchantmentPowerMultiplier * (1 + steadyHandLevel * 0.15); + const equipmentEffects = computeEquipmentEffects(equipmentInstances, equippedInstances, enchantmentPowerMultiplier); const disciplineEffects = computeDisciplineEffects(); const perElementCapBonus: Record = { ...upgradeEffects.perElementCapBonus }; @@ -158,10 +161,12 @@ export function computeAllEffects( export function getUnifiedEffects(state: { equipmentInstances?: Record; equippedInstances?: Record; + prestigeUpgrades?: Record; }): UnifiedEffects { return computeAllEffects( state.equipmentInstances || {}, state.equippedInstances || {}, + state.prestigeUpgrades, ); } diff --git a/src/lib/game/stores/gameHooks.ts b/src/lib/game/stores/gameHooks.ts index f70d7f3..044f553 100644 --- a/src/lib/game/stores/gameHooks.ts +++ b/src/lib/game/stores/gameHooks.ts @@ -29,12 +29,14 @@ export function useGameLoop() { export function useUnifiedEffects() { const equippedInstances = useCraftingStore((s) => s.equippedInstances); const equipmentInstances = useCraftingStore((s) => s.equipmentInstances); + const prestigeUpgrades = usePrestigeStore((s) => s.prestigeUpgrades); const disciplineEffects = computeDisciplineEffects(); return { ...getUnifiedEffects({ equippedInstances, equipmentInstances, + prestigeUpgrades, }), disciplineEffects, }; @@ -55,6 +57,7 @@ export function useManaStats() { const upgradeEffects = getUnifiedEffects({ equippedInstances, equipmentInstances, + prestigeUpgrades, }); const maxMana = computeMaxMana( @@ -105,12 +108,14 @@ export function useManaStats() { */ export function useCombatStats() { const signedPacts = usePrestigeStore((s) => s.signedPacts); + const prestigeUpgrades = usePrestigeStore((s) => s.prestigeUpgrades); const equippedInstances = useCraftingStore((s) => s.equippedInstances); const equipmentInstances = useCraftingStore((s) => s.equipmentInstances); const upgradeEffects = getUnifiedEffects({ equippedInstances, equipmentInstances, + prestigeUpgrades, }); return { diff --git a/src/lib/game/stores/gameStore.ts b/src/lib/game/stores/gameStore.ts index 9a056b1..8fa8bf0 100644 --- a/src/lib/game/stores/gameStore.ts +++ b/src/lib/game/stores/gameStore.ts @@ -95,9 +95,12 @@ export const useGameStore = create()( const addLog = (msg: string) => writes.logs.push(msg); // Compute equipment and discipline effects + const steadyHandLevel = ctx.prestige.prestigeUpgrades.steadyHand || 0; + const enchantmentPowerMultiplier = 1 + steadyHandLevel * 0.15; const equipmentEffects = computeEquipmentEffects( ctx.crafting.equipmentInstances || {}, - ctx.crafting.equippedInstances || {} + ctx.crafting.equippedInstances || {}, + enchantmentPowerMultiplier, ); const disciplineEffects = computeDisciplineEffects(); const allSpecials = new Set([