Phase 2: Remove unreferenced ComboMeter and GameFooter components
This commit is contained in:
+4
-4
@@ -1,13 +1,13 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useGameStore, useGameLoop, fmt, fmtDec, getFloorElement, computeMaxMana, computeRegen, computeClickMana, getMeditationBonus, getIncursionStrength, canAffordSpellCost } from '@/lib/game/store';
|
import { useGameStore, useGameLoop, fmt, getFloorElement, computeMaxMana, computeRegen, computeClickMana, getMeditationBonus, getIncursionStrength, canAffordSpellCost } from '@/lib/game/store';
|
||||||
import { getActiveEquipmentSpells, getTotalDPS } from '@/lib/game/computed-stats';
|
import { getActiveEquipmentSpells, getTotalDPS } from '@/lib/game/computed-stats';
|
||||||
import { getDamageBreakdown } from '@/lib/game/computed-stats';
|
|
||||||
import { ELEMENTS, GUARDIANS, SPELLS_DEF, PRESTIGE_DEF, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
import { ELEMENTS, GUARDIANS, SPELLS_DEF, PRESTIGE_DEF, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
||||||
import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution';
|
|
||||||
import { getUnifiedEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects';
|
import { getUnifiedEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects';
|
||||||
import { formatHour } from '@/lib/game/formatting';
|
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
|
|||||||
@@ -1,143 +0,0 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import { Progress } from '@/components/ui/progress';
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|
||||||
import { Badge } from '@/components/ui/badge';
|
|
||||||
import { Zap, Flame, Sparkles } from 'lucide-react';
|
|
||||||
import type { ComboState } from '@/lib/game/types';
|
|
||||||
import { ELEMENTS } from '@/lib/game/constants';
|
|
||||||
|
|
||||||
interface ComboMeterProps {
|
|
||||||
combo: ComboState;
|
|
||||||
isClimbing: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function ComboMeter({ combo, isClimbing }: ComboMeterProps) {
|
|
||||||
const comboPercent = Math.min(100, combo.count);
|
|
||||||
const multiplierPercent = Math.min(100, ((combo.multiplier - 1) / 2) * 100); // Max 300% = 200% bonus
|
|
||||||
|
|
||||||
// Combo tier names
|
|
||||||
const getComboTier = (count: number): { name: string; color: string } => {
|
|
||||||
if (count >= 100) return { name: 'LEGENDARY', color: 'text-amber-400' };
|
|
||||||
if (count >= 75) return { name: 'Master', color: 'text-purple-400' };
|
|
||||||
if (count >= 50) return { name: 'Expert', color: 'text-blue-400' };
|
|
||||||
if (count >= 25) return { name: 'Adept', color: 'text-green-400' };
|
|
||||||
if (count >= 10) return { name: 'Novice', color: 'text-cyan-400' };
|
|
||||||
return { name: 'Building...', color: 'text-gray-400' };
|
|
||||||
};
|
|
||||||
|
|
||||||
const tier = getComboTier(combo.count);
|
|
||||||
const hasElementChain = combo.elementChain.length === 3 && new Set(combo.elementChain).size === 3;
|
|
||||||
|
|
||||||
if (!isClimbing && combo.count === 0) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card className="bg-gray-900/80 border-gray-700">
|
|
||||||
<CardHeader className="pb-2">
|
|
||||||
<CardTitle className="text-amber-400 game-panel-title text-xs flex items-center gap-2">
|
|
||||||
<Zap className="w-4 h-4" />
|
|
||||||
Combo Meter
|
|
||||||
{combo.count >= 10 && (
|
|
||||||
<Badge className={`ml-auto ${tier.color} bg-gray-800`}>
|
|
||||||
{tier.name}
|
|
||||||
</Badge>
|
|
||||||
)}
|
|
||||||
</CardTitle>
|
|
||||||
</CardHeader>
|
|
||||||
<CardContent className="space-y-3">
|
|
||||||
{/* Combo Count */}
|
|
||||||
<div className="space-y-1">
|
|
||||||
<div className="flex justify-between items-center text-sm">
|
|
||||||
<span className="text-gray-400">Hits</span>
|
|
||||||
<span className={`font-bold ${tier.color}`}>
|
|
||||||
{combo.count}
|
|
||||||
{combo.maxCombo > combo.count && (
|
|
||||||
<span className="text-gray-500 text-xs ml-2">max: {combo.maxCombo}</span>
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<Progress
|
|
||||||
value={comboPercent}
|
|
||||||
className="h-2 bg-gray-800"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Multiplier */}
|
|
||||||
<div className="space-y-1">
|
|
||||||
<div className="flex justify-between items-center text-sm">
|
|
||||||
<span className="text-gray-400">Multiplier</span>
|
|
||||||
<span className="font-bold text-amber-400">
|
|
||||||
{combo.multiplier.toFixed(2)}x
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div className="h-2 bg-gray-800 rounded-full overflow-hidden">
|
|
||||||
<div
|
|
||||||
className="h-full rounded-full transition-all duration-300"
|
|
||||||
style={{
|
|
||||||
width: `${multiplierPercent}%`,
|
|
||||||
background: `linear-gradient(90deg, #F59E0B, #EF4444)`,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* Element Chain */}
|
|
||||||
{combo.elementChain.length > 0 && (
|
|
||||||
<div className="space-y-1">
|
|
||||||
<div className="flex justify-between items-center text-sm">
|
|
||||||
<span className="text-gray-400">Element Chain</span>
|
|
||||||
{hasElementChain && (
|
|
||||||
<span className="text-green-400 text-xs">+25% bonus!</span>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div className="flex gap-1">
|
|
||||||
{combo.elementChain.map((elem, i) => {
|
|
||||||
const elemDef = ELEMENTS[elem];
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
key={i}
|
|
||||||
className="w-8 h-8 rounded border flex items-center justify-center text-xs"
|
|
||||||
style={{
|
|
||||||
borderColor: elemDef?.color || '#60A5FA',
|
|
||||||
backgroundColor: `${elemDef?.color}20`,
|
|
||||||
color: elemDef?.color || '#60A5FA',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{elemDef?.sym || '?'}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
{/* Empty slots */}
|
|
||||||
{Array.from({ length: 3 - combo.elementChain.length }).map((_, i) => (
|
|
||||||
<div
|
|
||||||
key={`empty-${i}`}
|
|
||||||
className="w-8 h-8 rounded border border-gray-700 bg-gray-800/50 flex items-center justify-center text-gray-600"
|
|
||||||
>
|
|
||||||
?
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Decay Warning */}
|
|
||||||
{isClimbing && combo.count > 0 && combo.decayTimer <= 3 && (
|
|
||||||
<div className="text-xs text-red-400 flex items-center gap-1">
|
|
||||||
<Flame className="w-3 h-3" />
|
|
||||||
Combo decaying soon!
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Not climbing warning */}
|
|
||||||
{!isClimbing && combo.count > 0 && (
|
|
||||||
<div className="text-xs text-amber-400 flex items-center gap-1">
|
|
||||||
<Sparkles className="w-3 h-3" />
|
|
||||||
Resume climbing to maintain combo
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,6 @@ import { useCombatStore } from '@/lib/game/stores/combatStore';
|
|||||||
import { useGameStore, useGameLoop } from '@/lib/game/stores/gameStore';
|
import { useGameStore, useGameLoop } from '@/lib/game/stores/gameStore';
|
||||||
import { computeEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/upgrade-effects';
|
import { computeEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/upgrade-effects';
|
||||||
import { getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
import { getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
||||||
import { getTierMultiplier } from '@/lib/game/skill-evolution';
|
|
||||||
import {
|
import {
|
||||||
computeMaxMana,
|
computeMaxMana,
|
||||||
computeRegen,
|
computeRegen,
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useGameStore, fmt, fmtDec } from '@/lib/game/store';
|
import { useGameStore, fmt, fmtDec } from '@/lib/game/store';
|
||||||
import { SKILLS_DEF, SKILL_CATEGORIES, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
import { SKILLS_DEF, SKILL_CATEGORIES } from '@/lib/game/constants';
|
||||||
import { SKILL_EVOLUTION_PATHS, getUpgradesForSkillAtMilestone, getNextTierSkill, getTierMultiplier } from '@/lib/game/skill-evolution';
|
import { SKILL_EVOLUTION_PATHS, getUpgradesForSkillAtMilestone, getNextTierSkill, getTierMultiplier } from '@/lib/game/skill-evolution';
|
||||||
import { computeEffects, hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/upgrade-effects';
|
import { computeEffects } from '@/lib/game/upgrade-effects';
|
||||||
import { useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
import { useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage } from '@/lib/game/store';
|
import { useGameStore, canAffordSpellCost } from '@/lib/game/store';
|
||||||
import { ELEMENTS, SPELLS_DEF, getStudySpeedMultiplier, getStudyCostMultiplier } from '@/lib/game/constants';
|
import { ELEMENTS, SPELLS_DEF } from '@/lib/game/constants';
|
||||||
import { useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
import { useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage, computePactMultiplier } from '@/lib/game/store';
|
import { useGameStore, canAffordSpellCost, fmt, fmtDec, calcDamage } from '@/lib/game/store';
|
||||||
import { ELEMENTS, GUARDIANS, SPELLS_DEF, MANA_PER_ELEMENT } from '@/lib/game/constants';
|
import { ELEMENTS, GUARDIANS, SPELLS_DEF } from '@/lib/game/constants';
|
||||||
import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
||||||
import { formatSpellCost, getSpellCostColor, formatStudyTime } from '@/lib/game/formatting';
|
import { formatSpellCost, getSpellCostColor, formatStudyTime } from '@/lib/game/formatting';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useGameStore, fmt, fmtDec, calcDamage, computePactMultiplier, computePactInsightMultiplier } from '@/lib/game/store';
|
import { useGameStore, fmt, fmtDec } from '@/lib/game/store';
|
||||||
import { ELEMENTS, GUARDIANS, SPELLS_DEF } from '@/lib/game/constants';
|
import { ELEMENTS } from '@/lib/game/constants';
|
||||||
import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution';
|
import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution';
|
||||||
import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
import { useManaStats, useCombatStats, useStudyStats } from '@/lib/game/hooks/useGameDerived';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import { useGameContext } from '../GameContext';
|
|
||||||
|
|
||||||
export function GameFooter() {
|
|
||||||
const { store } = useGameContext();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<footer className="sticky bottom-0 bg-gray-900/80 border-t border-gray-700 px-4 py-2 text-center text-xs text-gray-500">
|
|
||||||
<span className="text-gray-400">Loop {store.loopCount + 1}</span>
|
|
||||||
{' • '}
|
|
||||||
<span>Pacts: {store.signedPacts.length}/{store.pactSlots}</span>
|
|
||||||
{' • '}
|
|
||||||
<span>Spells: {Object.values(store.spells).filter((s) => s.learned).length}</span>
|
|
||||||
{' • '}
|
|
||||||
<span>Skills: {Object.values(store.skills).reduce((a, b) => a + b, 0)}</span>
|
|
||||||
</footer>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Progress } from '@/components/ui/progress';
|
|
||||||
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
||||||
import { Pause, Play } from 'lucide-react';
|
import { Pause, Play } from 'lucide-react';
|
||||||
import { useGameContext } from '../GameContext';
|
import { useGameContext } from '../GameContext';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
import { ScrollArea } from '@/components/ui/scroll-area';
|
import { ScrollArea } from '@/components/ui/scroll-area';
|
||||||
import { Save, Trash2, Star, ChevronUp } from 'lucide-react';
|
import { Save, Trash2, Star } from 'lucide-react';
|
||||||
import { useGameContext } from '../GameContext';
|
import { useGameContext } from '../GameContext';
|
||||||
import { SKILLS_DEF } from '@/lib/game/constants';
|
import { SKILLS_DEF } from '@/lib/game/constants';
|
||||||
import { getTierMultiplier, getBaseSkillId } from '@/lib/game/skill-evolution';
|
import { getTierMultiplier, getBaseSkillId } from '@/lib/game/skill-evolution';
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ import { ELEMENTS } from '@/lib/game/constants';
|
|||||||
import type { GameStore, AttunementState } from '@/lib/game/types';
|
import type { GameStore, AttunementState } from '@/lib/game/types';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
import { Button } from '@/components/ui/button';
|
|
||||||
import { Progress } from '@/components/ui/progress';
|
import { Progress } from '@/components/ui/progress';
|
||||||
import { Lock, Sparkles, TrendingUp } from 'lucide-react';
|
import { Lock, TrendingUp } from 'lucide-react';
|
||||||
|
|
||||||
export interface AttunementsTabProps {
|
export interface AttunementsTabProps {
|
||||||
store: GameStore;
|
store: GameStore;
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import {
|
|||||||
Wand2, Scroll, Hammer, Sparkles, Trash2, Plus, Minus,
|
Wand2, Scroll, Hammer, Sparkles, Trash2, Plus, Minus,
|
||||||
Package, Zap, Clock, ChevronRight, Circle, Anvil
|
Package, Zap, Clock, ChevronRight, Circle, Anvil
|
||||||
} from 'lucide-react';
|
} from 'lucide-react';
|
||||||
import { EQUIPMENT_TYPES, type EquipmentType, type EquipmentSlot } from '@/lib/game/data/equipment';
|
import { EQUIPMENT_TYPES } from '@/lib/game/data/equipment';
|
||||||
import { ENCHANTMENT_EFFECTS, type EnchantmentEffectDef, calculateEffectCapacityCost } from '@/lib/game/data/enchantment-effects';
|
import { ENCHANTMENT_EFFECTS, calculateEffectCapacityCost } from '@/lib/game/data/enchantment-effects';
|
||||||
import { CRAFTING_RECIPES, canCraftRecipe } from '@/lib/game/data/crafting-recipes';
|
import { CRAFTING_RECIPES, canCraftRecipe } from '@/lib/game/data/crafting-recipes';
|
||||||
import { LOOT_DROPS, RARITY_COLORS } from '@/lib/game/data/loot-drops';
|
import { LOOT_DROPS, RARITY_COLORS } from '@/lib/game/data/loot-drops';
|
||||||
import type { EquipmentInstance, EnchantmentDesign, DesignEffect, AppliedEnchantment, LootInventory, EquipmentCraftingProgress } from '@/lib/game/types';
|
import type { EquipmentInstance, EnchantmentDesign, DesignEffect, AppliedEnchantment, LootInventory, EquipmentCraftingProgress } from '@/lib/game/types';
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
|
||||||
import { Separator } from '@/components/ui/separator';
|
import { Separator } from '@/components/ui/separator';
|
||||||
import { Switch } from '@/components/ui/switch';
|
import { Switch } from '@/components/ui/switch';
|
||||||
import { Label } from '@/components/ui/label';
|
import { Label } from '@/components/ui/label';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
import { ELEMENTS, SPELLS_DEF } from '@/lib/game/constants';
|
import { ELEMENTS, SPELLS_DEF } from '@/lib/game/constants';
|
||||||
import { ENCHANTMENT_EFFECTS } from '@/lib/game/data/enchantment-effects';
|
import { ENCHANTMENT_EFFECTS } from '@/lib/game/data/enchantment-effects';
|
||||||
import { calcDamage, canAffordSpellCost, fmt } from '@/lib/game/store';
|
import { canAffordSpellCost } from '@/lib/game/store';
|
||||||
import { formatSpellCost, getSpellCostColor } from '@/lib/game/formatting';
|
import { formatSpellCost, getSpellCostColor } from '@/lib/game/formatting';
|
||||||
|
|
||||||
interface SpellsTabProps {
|
interface SpellsTabProps {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { Badge } from '@/components/ui/badge';
|
|||||||
import { ScrollArea } from '@/components/ui/scroll-area';
|
import { ScrollArea } from '@/components/ui/scroll-area';
|
||||||
import { Separator } from '@/components/ui/separator';
|
import { Separator } from '@/components/ui/separator';
|
||||||
import { TooltipProvider } from '@/components/ui/tooltip';
|
import { TooltipProvider } from '@/components/ui/tooltip';
|
||||||
import { Swords, BookOpen, ChevronUp, ChevronDown, RotateCcw, X, Mountain } from 'lucide-react';
|
import { BookOpen, ChevronUp, ChevronDown, RotateCcw, X, Mountain } from 'lucide-react';
|
||||||
import type { GameStore } from '@/lib/game/types';
|
import type { GameStore } from '@/lib/game/types';
|
||||||
import { ELEMENTS, GUARDIANS, SPELLS_DEF, SKILLS_DEF } from '@/lib/game/constants';
|
import { ELEMENTS, GUARDIANS, SPELLS_DEF, SKILLS_DEF } from '@/lib/game/constants';
|
||||||
import { GOLEMS_DEF, getGolemDamage, getGolemAttackSpeed } from '@/lib/game/data/golems';
|
import { GOLEMS_DEF, getGolemDamage, getGolemAttackSpeed } from '@/lib/game/data/golems';
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import { ELEMENTS, GUARDIANS, SKILLS_DEF } from '@/lib/game/constants';
|
import { ELEMENTS, GUARDIANS, SKILLS_DEF } from '@/lib/game/constants';
|
||||||
import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution';
|
import { SKILL_EVOLUTION_PATHS, getTierMultiplier } from '@/lib/game/skill-evolution';
|
||||||
import { hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects';
|
import { hasSpecial, SPECIAL_EFFECTS } from '@/lib/game/effects';
|
||||||
import { fmt, fmtDec, calcDamage } from '@/lib/game/store';
|
import { fmt, fmtDec } from '@/lib/game/store';
|
||||||
import type { SkillUpgradeChoice, GameStore, UnifiedEffects } from '@/lib/game/types';
|
import type { SkillUpgradeChoice, GameStore, UnifiedEffects } from '@/lib/game/types';
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||||
import { Badge } from '@/components/ui/badge';
|
import { Badge } from '@/components/ui/badge';
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { SKILLS_DEF } from '@/lib/game/constants';
|
import { SKILLS_DEF } from '@/lib/game/constants';
|
||||||
import { getUpgradesForSkillAtMilestone, getTierMultiplier } from '@/lib/game/skill-evolution';
|
|
||||||
import {
|
import {
|
||||||
Dialog,
|
Dialog,
|
||||||
DialogContent,
|
DialogContent,
|
||||||
|
|||||||
Reference in New Issue
Block a user