From 313aa334a9ea0497fbbdc3c8d3527529590eaa43 Mon Sep 17 00:00:00 2001 From: Refactoring Agent <[email protected]> Date: Sun, 26 Apr 2026 18:49:50 +0200 Subject: [PATCH] Task 2: ActionButtons rework - remove manual selection, auto-transition to Meditate --- src/lib/game/crafting-slice.ts | 3 +++ src/lib/game/store.ts | 11 ++++++++--- src/lib/game/utils/combat-utils.ts | 11 ++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/lib/game/crafting-slice.ts b/src/lib/game/crafting-slice.ts index 80f63e0..ea7ef85 100755 --- a/src/lib/game/crafting-slice.ts +++ b/src/lib/game/crafting-slice.ts @@ -785,9 +785,12 @@ export function processCraftingTick( created: Date.now(), }; + // If the first design slot is also null, transition to meditate + const shouldTransitionToMeditate = !state.designProgress; updates = { ...updates, designProgress2: null, + currentAction: shouldTransitionToMeditate ? 'meditate' : state.currentAction, enchantmentDesigns: [...state.enchantmentDesigns, completedDesign], log: [`✅ Enchantment design "${dp.name}" complete! (2nd slot)`, ...log], }; diff --git a/src/lib/game/store.ts b/src/lib/game/store.ts index 9496246..16eadde 100755 --- a/src/lib/game/store.ts +++ b/src/lib/game/store.ts @@ -551,11 +551,16 @@ function deductSpellCost( const newElements = { ...elements }; if (cost.type === 'raw') { - return { rawMana: rawMana - cost.amount, elements: newElements }; + // Don't allow rawMana to go below zero + const deductedAmount = Math.min(rawMana, cost.amount); + return { rawMana: rawMana - deductedAmount, elements: newElements }; } else if (cost.element && newElements[cost.element]) { + const elem = newElements[cost.element]; + // Don't allow elemental mana to go below zero + const deductedAmount = Math.min(elem.current, cost.amount); newElements[cost.element] = { - ...newElements[cost.element], - current: newElements[cost.element].current - cost.amount + ...elem, + current: elem.current - deductedAmount }; return { rawMana, elements: newElements }; } diff --git a/src/lib/game/utils/combat-utils.ts b/src/lib/game/utils/combat-utils.ts index cfe561c..995babc 100644 --- a/src/lib/game/utils/combat-utils.ts +++ b/src/lib/game/utils/combat-utils.ts @@ -207,11 +207,16 @@ export function deductSpellCost( const newElements = { ...elements }; if (cost.type === 'raw') { - return { rawMana: rawMana - cost.amount, elements: newElements }; + // Don't allow rawMana to go below zero + const deductedAmount = Math.min(rawMana, cost.amount); + return { rawMana: rawMana - deductedAmount, elements: newElements }; } else if (cost.element && newElements[cost.element]) { + const elem = newElements[cost.element]; + // Don't allow elemental mana to go below zero + const deductedAmount = Math.min(elem.current, cost.amount); newElements[cost.element] = { - ...newElements[cost.element], - current: newElements[cost.element].current - cost.amount + ...elem, + current: elem.current - deductedAmount }; return { rawMana, elements: newElements }; }