diff --git a/src/components/game/tabs/SpireActiveSpells.tsx b/src/components/game/tabs/SpireActiveSpells.tsx
index 9ae38d5..d6282ef 100644
--- a/src/components/game/tabs/SpireActiveSpells.tsx
+++ b/src/components/game/tabs/SpireActiveSpells.tsx
@@ -52,6 +52,28 @@ export function SpireActiveSpells({
const progress = spellState?.castProgress || 0;
const canCast = canCastSpell(spellId);
+ // Compute progress bar JSX
+ let progressBar = null;
+ if (currentAction === 'climb') {
+ const widthPercent = Math.min(100, progress * 100);
+ const elemColor = spellDef.elem === 'raw' ? '#60A5FA' : ELEMENTS[spellDef.elem]?.color || '#60A5FA';
+ const backgroundGradient = 'linear-gradient(90deg, ' + elemColor + '99, ' + elemColor + ')';
+ progressBar = (
+
@@ -59,22 +81,12 @@ export function SpireActiveSpells({
{spellDef.name}
{spellDef.tier === 0 && Basic}
- {canCast ? '✓' : '✗'}
+ {canCast ? '✓' : '✗'}
⚔️ {calcDamage({ skills, signedPacts, skillUpgrades, skillTiers }, spellId, floorElem)} dmg • {formatSpellCost(spellDef.cost)} {' '}• ⚡ {Math.floor(calcDamage({ skills, signedPacts, skillUpgrades, skillTiers }, spellId, floorElem) * (spellDef.castSpeed || 1))} dmg/hr
- {currentAction === 'climb' && (
-
-
- Cast
- {(progress * 100).toFixed(0)}%
-
-
-
- )}
+ {progressBar}
);
})}
diff --git a/src/components/game/tabs/SpireGolems.tsx b/src/components/game/tabs/SpireGolems.tsx
index 69797d7..951f417 100644
--- a/src/components/game/tabs/SpireGolems.tsx
+++ b/src/components/game/tabs/SpireGolems.tsx
@@ -1,7 +1,9 @@
'use client';
import { Card, CardContent } from '@/components/ui/card';
+import { Mountain } from 'lucide-react';
import { GOLEMS_DEF, getGolemDamage, getGolemAttackSpeed } from '@/lib/game/data/golems';
+import { ELEMENTS } from '@/lib/game/constants';
interface SpireGolemsProps {
golemancy: {
@@ -10,6 +12,7 @@ interface SpireGolemsProps {
};
skills: Record