Refactor large files into modular components
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m9s

- Refactored page.tsx (613→252 lines) with GameOverScreen and LeftPanel extracted
- Refactored StatsTab.tsx (584→92 lines) with section components
- Refactored SkillsTab.tsx (434→54 lines) with sub-components
- Created modular structure for GameContext, LootInventory, and other components
- All extracted components organized into feature directories
This commit is contained in:
Refactoring Agent
2026-05-02 17:35:03 +02:00
parent c9ae2576f4
commit d2d28887b1
194 changed files with 16862 additions and 15729 deletions
@@ -0,0 +1,151 @@
// ─── Advanced Spells (Tier 2) ────────────────────────────────────────────────
// 8-12 hours study
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const ADVANCED_SPELLS: Record<string, SpellDef> = {
// Tier 2 - Advanced Spells (8-12 hours study)
inferno: {
name: "Inferno",
elem: "fire",
dmg: 60,
cost: elemCost("fire", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "Engulf your enemy in flames."
},
flameWave: {
name: "Flame Wave",
elem: "fire",
dmg: 45,
cost: elemCost("fire", 6),
tier: 2,
castSpeed: 1.5,
unlock: 800,
studyTime: 6,
desc: "A wave of fire sweeps across the battlefield."
},
tidalWave: {
name: "Tidal Wave",
elem: "water",
dmg: 55,
cost: elemCost("water", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "A massive wave crashes down."
},
iceStorm: {
name: "Ice Storm",
elem: "water",
dmg: 50,
cost: elemCost("water", 7),
tier: 2,
castSpeed: 1.2,
unlock: 900,
studyTime: 7,
desc: "A storm of ice shards."
},
earthquake: {
name: "Earthquake",
elem: "earth",
dmg: 70,
cost: elemCost("earth", 10),
tier: 2,
castSpeed: 0.8,
unlock: 1200,
studyTime: 10,
desc: "Shake the very foundation."
},
stoneBarrage: {
name: "Stone Barrage",
elem: "earth",
dmg: 55,
cost: elemCost("earth", 7),
tier: 2,
castSpeed: 1.2,
unlock: 1000,
studyTime: 8,
desc: "Multiple stone projectiles."
},
hurricane: {
name: "Hurricane",
elem: "air",
dmg: 50,
cost: elemCost("air", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "A devastating hurricane."
},
windBlade: {
name: "Wind Blade",
elem: "air",
dmg: 40,
cost: elemCost("air", 5),
tier: 2,
castSpeed: 1.8,
unlock: 700,
studyTime: 6,
desc: "A blade of cutting wind."
},
solarFlare: {
name: "Solar Flare",
elem: "light",
dmg: 65,
cost: elemCost("light", 9),
tier: 2,
castSpeed: 0.9,
unlock: 1100,
studyTime: 9,
desc: "A blinding flare of solar energy."
},
divineSmite: {
name: "Divine Smite",
elem: "light",
dmg: 55,
cost: elemCost("light", 7),
tier: 2,
castSpeed: 1.2,
unlock: 900,
studyTime: 7,
desc: "A smite of divine power."
},
voidRift: {
name: "Void Rift",
elem: "dark",
dmg: 55,
cost: elemCost("dark", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "Open a rift to the void."
},
shadowStorm: {
name: "Shadow Storm",
elem: "dark",
dmg: 48,
cost: elemCost("dark", 6),
tier: 2,
castSpeed: 1.3,
unlock: 800,
studyTime: 6,
desc: "A storm of shadows."
},
soulRend: {
name: "Soul Rend",
elem: "death",
dmg: 50,
cost: elemCost("death", 7),
tier: 2,
castSpeed: 1.1,
unlock: 1100,
studyTime: 9,
desc: "Tear at the enemy's soul."
},
};
@@ -0,0 +1,93 @@
// ─── AOE Spells ──────────────────────────────────────────────────────────────
// Hit multiple enemies, less damage per target
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const AOE_SPELLS: Record<string, SpellDef> = {
// Tier 1 AOE
fireballAoe: {
name: "Fireball (AOE)",
elem: "fire",
dmg: 8,
cost: elemCost("fire", 3),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "An explosive fireball that hits 3 enemies.",
isAoe: true,
aoeTargets: 3,
effects: [{ type: 'aoe', value: 3 }]
},
frostNova: {
name: "Frost Nova",
elem: "water",
dmg: 6,
cost: elemCost("water", 3),
tier: 1,
castSpeed: 2,
unlock: 140,
studyTime: 3,
desc: "A burst of frost hitting 4 enemies. May freeze.",
isAoe: true,
aoeTargets: 4,
effects: [{ type: 'freeze', value: 0.15, chance: 0.2 }]
},
// Tier 2 AOE
meteorShower: {
name: "Meteor Shower",
elem: "fire",
dmg: 20,
cost: elemCost("fire", 8),
tier: 2,
castSpeed: 1,
unlock: 1200,
studyTime: 10,
desc: "Rain meteors on 5 enemies.",
isAoe: true,
aoeTargets: 5
},
blizzard: {
name: "Blizzard",
elem: "water",
dmg: 18,
cost: elemCost("water", 7),
tier: 2,
castSpeed: 1.2,
unlock: 1000,
studyTime: 9,
desc: "A freezing blizzard hitting 4 enemies.",
isAoe: true,
aoeTargets: 4,
effects: [{ type: 'freeze', value: 0.1, chance: 0.15 }]
},
earthquakeAoe: {
name: "Earth Tremor",
elem: "earth",
dmg: 25,
cost: elemCost("earth", 8),
tier: 2,
castSpeed: 0.8,
unlock: 1400,
studyTime: 10,
desc: "Shake the ground, hitting 3 enemies with high damage.",
isAoe: true,
aoeTargets: 3
},
// Tier 3 AOE
apocalypse: {
name: "Apocalypse",
elem: "fire",
dmg: 80,
cost: elemCost("fire", 20),
tier: 3,
castSpeed: 0.5,
unlock: 15000,
studyTime: 30,
desc: "End times. Hits ALL enemies with devastating fire.",
isAoe: true,
aoeTargets: 10
},
};
@@ -0,0 +1,161 @@
// ─── Basic Elemental Spells (Tier 1) ────────────────────────────────────────
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const BASIC_ELEMENTAL_SPELLS: Record<string, SpellDef> = {
// Tier 1 - Basic Elemental Spells (2-4 hours study)
fireball: {
name: "Fireball",
elem: "fire",
dmg: 15,
cost: elemCost("fire", 2),
tier: 1,
castSpeed: 2,
unlock: 100,
studyTime: 2,
desc: "Hurl a ball of fire at your enemy."
},
emberShot: {
name: "Ember Shot",
elem: "fire",
dmg: 10,
cost: elemCost("fire", 1),
tier: 1,
castSpeed: 3,
unlock: 75,
studyTime: 1,
desc: "A quick shot of embers. Efficient fire damage."
},
waterJet: {
name: "Water Jet",
elem: "water",
dmg: 12,
cost: elemCost("water", 2),
tier: 1,
castSpeed: 2,
unlock: 100,
studyTime: 2,
desc: "A high-pressure jet of water."
},
iceShard: {
name: "Ice Shard",
elem: "water",
dmg: 14,
cost: elemCost("water", 2),
tier: 1,
castSpeed: 2,
unlock: 120,
studyTime: 2,
desc: "Launch a sharp shard of ice."
},
gust: {
name: "Gust",
elem: "air",
dmg: 10,
cost: elemCost("air", 2),
tier: 1,
castSpeed: 3,
unlock: 100,
studyTime: 2,
desc: "A powerful gust of wind."
},
windSlash: {
name: "Wind Slash",
elem: "air",
dmg: 12,
cost: elemCost("air", 2),
tier: 1,
castSpeed: 2.5,
unlock: 110,
studyTime: 2,
desc: "A cutting blade of wind."
},
stoneBullet: {
name: "Stone Bullet",
elem: "earth",
dmg: 16,
cost: elemCost("earth", 2),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "Launch a bullet of solid stone."
},
rockSpike: {
name: "Rock Spike",
elem: "earth",
dmg: 18,
cost: elemCost("earth", 3),
tier: 1,
castSpeed: 1.5,
unlock: 180,
studyTime: 3,
desc: "Summon a spike of rock from below."
},
lightLance: {
name: "Light Lance",
elem: "light",
dmg: 18,
cost: elemCost("light", 2),
tier: 1,
castSpeed: 2,
unlock: 200,
studyTime: 4,
desc: "A piercing lance of pure light."
},
radiance: {
name: "Radiance",
elem: "light",
dmg: 14,
cost: elemCost("light", 2),
tier: 1,
castSpeed: 2.5,
unlock: 180,
studyTime: 3,
desc: "Burst of radiant energy."
},
shadowBolt: {
name: "Shadow Bolt",
elem: "dark",
dmg: 16,
cost: elemCost("dark", 2),
tier: 1,
castSpeed: 2,
unlock: 200,
studyTime: 4,
desc: "A bolt of shadowy energy."
},
darkPulse: {
name: "Dark Pulse",
elem: "dark",
dmg: 12,
cost: elemCost("dark", 1),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 2,
desc: "A quick pulse of darkness."
},
drain: {
name: "Drain",
elem: "death",
dmg: 10,
cost: elemCost("death", 2),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "Drain life force from your enemy.",
},
rotTouch: {
name: "Rot Touch",
elem: "death",
dmg: 14,
cost: elemCost("death", 2),
tier: 1,
castSpeed: 2,
unlock: 170,
studyTime: 3,
desc: "Touch of decay and rot."
},
};
@@ -0,0 +1,110 @@
// ─── Compound Mana Spells ───────────────────────────────────────────────────
// Blood, Metal, Wood, Sand
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const COMPOUND_SPELLS: Record<string, SpellDef> = {
// ─── METAL SPELLS (Fire + Earth) ─────────────────────────────────────────────
// Metal magic is slow but devastating with high armor pierce
metalShard: {
name: "Metal Shard",
elem: "metal",
dmg: 16,
cost: elemCost("metal", 2),
tier: 1,
castSpeed: 1.8,
unlock: 220,
studyTime: 3,
desc: "A sharpened metal shard. Slower but pierces armor.",
effects: [{ type: 'armor_pierce', value: 0.25 }]
},
ironFist: {
name: "Iron Fist",
elem: "metal",
dmg: 28,
cost: elemCost("metal", 4),
tier: 1,
castSpeed: 1.5,
unlock: 350,
studyTime: 5,
desc: "A crushing fist of iron. High armor pierce.",
effects: [{ type: 'armor_pierce', value: 0.35 }]
},
steelTempest: {
name: "Steel Tempest",
elem: "metal",
dmg: 55,
cost: elemCost("metal", 8),
tier: 2,
castSpeed: 1,
unlock: 1300,
studyTime: 12,
desc: "A whirlwind of steel blades. Ignores much armor.",
effects: [{ type: 'armor_pierce', value: 0.45 }]
},
furnaceBlast: {
name: "Furnace Blast",
elem: "metal",
dmg: 200,
cost: elemCost("metal", 20),
tier: 3,
castSpeed: 0.5,
unlock: 18000,
studyTime: 32,
desc: "Molten metal and fire combined. Devastating armor pierce.",
effects: [{ type: 'armor_pierce', value: 0.6 }]
},
// ─── SAND SPELLS (Earth + Water) ────────────────────────────────────────────
// Sand magic slows enemies and deals steady damage
sandBlast: {
name: "Sand Blast",
elem: "sand",
dmg: 11,
cost: elemCost("sand", 2),
tier: 1,
castSpeed: 3,
unlock: 190,
studyTime: 3,
desc: "A blast of stinging sand. Fast casting.",
},
sandstorm: {
name: "Sandstorm",
elem: "sand",
dmg: 22,
cost: elemCost("sand", 4),
tier: 1,
castSpeed: 2,
unlock: 300,
studyTime: 4,
desc: "A swirling sandstorm. Hits 2 enemies.",
isAoe: true,
aoeTargets: 2,
},
desertWind: {
name: "Desert Wind",
elem: "sand",
dmg: 38,
cost: elemCost("sand", 6),
tier: 2,
castSpeed: 1.5,
unlock: 950,
studyTime: 8,
desc: "A scouring desert wind. Hits 3 enemies.",
isAoe: true,
aoeTargets: 3,
},
duneCollapse: {
name: "Dune Collapse",
elem: "sand",
dmg: 100,
cost: elemCost("sand", 16),
tier: 3,
castSpeed: 0.6,
unlock: 14000,
studyTime: 28,
desc: "Dunes collapse on all enemies. Hits 5 targets.",
isAoe: true,
aoeTargets: 5,
},
};
@@ -0,0 +1,59 @@
// ─── Magic Sword Enchantments ───────────────────────────────────────────────
// For weapon enchanting system
import type { SpellDef } from '../../types';
import { rawCost } from '../elements';
export const ENCHANTMENT_SPELLS: Record<string, SpellDef> = {
fireBlade: {
name: "Fire Blade",
elem: "fire",
dmg: 3,
cost: rawCost(1),
tier: 1,
castSpeed: 4,
unlock: 100,
studyTime: 2,
desc: "Enchant a blade with fire. Burns enemies over time.",
isWeaponEnchant: true,
effects: [{ type: 'burn', value: 2, duration: 3 }]
},
frostBlade: {
name: "Frost Blade",
elem: "water",
dmg: 3,
cost: rawCost(1),
tier: 1,
castSpeed: 4,
unlock: 100,
studyTime: 2,
desc: "Enchant a blade with frost. Prevents enemy dodge.",
isWeaponEnchant: true,
effects: [{ type: 'freeze', value: 0, chance: 1 }] // 100% freeze = no dodge
},
lightningBlade: {
name: "Lightning Blade",
elem: "lightning",
dmg: 4,
cost: rawCost(1),
tier: 1,
castSpeed: 5,
unlock: 150,
studyTime: 3,
desc: "Enchant a blade with lightning. Pierces 30% armor.",
isWeaponEnchant: true,
effects: [{ type: 'armor_pierce', value: 0.3 }]
},
voidBlade: {
name: "Void Blade",
elem: "dark",
dmg: 5,
cost: rawCost(2),
tier: 2,
castSpeed: 3,
unlock: 800,
studyTime: 8,
desc: "Enchant a blade with void. +20% damage.",
isWeaponEnchant: true,
effects: [{ type: 'buff', value: 0.2 }]
},
};
@@ -0,0 +1,41 @@
// ─── Legendary Spells (Tier 4) ──────────────────────────────────────────────
// 40-60 hours study, require exotic elements
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const LEGENDARY_SPELLS: Record<string, SpellDef> = {
// Tier 4 - Legendary Spells (40-60 hours study, require exotic elements)
stellarNova: {
name: "Stellar Nova",
elem: "stellar",
dmg: 500,
cost: elemCost("stellar", 15),
tier: 4,
castSpeed: 0.4,
unlock: 50000,
studyTime: 48,
desc: "A nova of stellar energy."
},
voidCollapse: {
name: "Void Collapse",
elem: "void",
dmg: 450,
cost: elemCost("void", 12),
tier: 4,
castSpeed: 0.45,
unlock: 40000,
studyTime: 42,
desc: "Collapse the void upon your enemy."
},
crystalShatter: {
name: "Crystal Shatter",
elem: "crystal",
dmg: 400,
cost: elemCost("crystal", 10),
tier: 4,
castSpeed: 0.5,
unlock: 35000,
studyTime: 36,
desc: "Shatter crystalline energy."
},
};
@@ -0,0 +1,76 @@
// ─── Lightning Spells ────────────────────────────────────────────────────────
// Fast, armor-piercing, harder to dodge
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const LIGHTNING_SPELLS: Record<string, SpellDef> = {
// Tier 1 - Basic Lightning
spark: {
name: "Spark",
elem: "lightning",
dmg: 8,
cost: elemCost("lightning", 1),
tier: 1,
castSpeed: 4,
unlock: 120,
studyTime: 2,
desc: "A quick spark of lightning. Very fast and hard to dodge.",
effects: [{ type: 'armor_pierce', value: 0.2 }]
},
lightningBolt: {
name: "Lightning Bolt",
elem: "lightning",
dmg: 14,
cost: elemCost("lightning", 2),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 3,
desc: "A bolt of lightning that pierces armor.",
effects: [{ type: 'armor_pierce', value: 0.3 }]
},
// Tier 2 - Advanced Lightning
chainLightning: {
name: "Chain Lightning",
elem: "lightning",
dmg: 25,
cost: elemCost("lightning", 5),
tier: 2,
castSpeed: 2,
unlock: 900,
studyTime: 8,
desc: "Lightning that arcs between enemies. Hits 3 targets.",
isAoe: true,
aoeTargets: 3,
effects: [{ type: 'chain', value: 3 }]
},
stormCall: {
name: "Storm Call",
elem: "lightning",
dmg: 40,
cost: elemCost("lightning", 6),
tier: 2,
castSpeed: 1.5,
unlock: 1100,
studyTime: 10,
desc: "Call down a storm. Hits 2 targets with armor pierce.",
isAoe: true,
aoeTargets: 2,
effects: [{ type: 'armor_pierce', value: 0.4 }]
},
// Tier 3 - Master Lightning
thunderStrike: {
name: "Thunder Strike",
elem: "lightning",
dmg: 150,
cost: elemCost("lightning", 15),
tier: 3,
castSpeed: 0.8,
unlock: 10000,
studyTime: 24,
desc: "Devastating lightning that ignores 50% armor.",
effects: [{ type: 'armor_pierce', value: 0.5 }]
},
};
@@ -0,0 +1,85 @@
// ─── Master Spells (Tier 3) ─────────────────────────────────────────────────
// 20-30 hours study
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const MASTER_SPELLS: Record<string, SpellDef> = {
// Tier 3 - Master Spells (20-30 hours study)
pyroclasm: {
name: "Pyroclasm",
elem: "fire",
dmg: 250,
cost: elemCost("fire", 25),
tier: 3,
castSpeed: 0.6,
unlock: 10000,
studyTime: 24,
desc: "An eruption of volcanic fury."
},
tsunami: {
name: "Tsunami",
elem: "water",
dmg: 220,
cost: elemCost("water", 22),
tier: 3,
castSpeed: 0.65,
unlock: 10000,
studyTime: 24,
desc: "A towering wall of water."
},
meteorStrike: {
name: "Meteor Strike",
elem: "earth",
dmg: 280,
cost: elemCost("earth", 28),
tier: 3,
castSpeed: 0.5,
unlock: 12000,
studyTime: 28,
desc: "Call down a meteor from the heavens."
},
cosmicStorm: {
name: "Cosmic Storm",
elem: "air",
dmg: 200,
cost: elemCost("air", 20),
tier: 3,
castSpeed: 0.7,
unlock: 10000,
studyTime: 24,
desc: "A storm of cosmic proportions."
},
heavenLight: {
name: "Heaven's Light",
elem: "light",
dmg: 240,
cost: elemCost("light", 24),
tier: 3,
castSpeed: 0.6,
unlock: 11000,
studyTime: 26,
desc: "The light of heaven itself."
},
oblivion: {
name: "Oblivion",
elem: "dark",
dmg: 230,
cost: elemCost("dark", 23),
tier: 3,
castSpeed: 0.6,
unlock: 10500,
studyTime: 25,
desc: "Consign to oblivion."
},
deathMark: {
name: "Death Mark",
elem: "death",
dmg: 200,
cost: elemCost("death", 20),
tier: 3,
castSpeed: 0.7,
unlock: 10000,
studyTime: 24,
desc: "Mark for death."
},
};
@@ -0,0 +1,29 @@
// ─── Raw Mana Spells (Tier 0) ───────────────────────────────────────────────
import type { SpellDef } from '../../types';
import { rawCost } from '../elements';
export const RAW_SPELLS: Record<string, SpellDef> = {
// Tier 0 - Basic Raw Mana Spells (fast, costs raw mana)
manaBolt: {
name: "Mana Bolt",
elem: "raw",
dmg: 5,
cost: rawCost(3),
tier: 0,
castSpeed: 3,
unlock: 0,
studyTime: 0,
desc: "A weak bolt of pure mana. Costs raw mana instead of elemental."
},
manaStrike: {
name: "Mana Strike",
elem: "raw",
dmg: 8,
cost: rawCost(5),
tier: 0,
castSpeed: 2.5,
unlock: 50,
studyTime: 1,
desc: "A concentrated strike of raw mana. Slightly stronger than Mana Bolt."
},
};
@@ -0,0 +1,53 @@
// ─── Utility Mana Spells ────────────────────────────────────────────────────
// Mental, Transference, Force
import type { SpellDef } from '../../types';
import { elemCost } from '../elements';
export const UTILITY_SPELLS: Record<string, SpellDef> = {
// ─── TRANSFERENCE SPELLS ─────────────────────────────────────────────────────
// Transference magic moves mana and enhances efficiency
transferStrike: {
name: "Transfer Strike",
elem: "transference",
dmg: 9,
cost: elemCost("transference", 2),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 2,
desc: "Strike that transfers energy. Very efficient.",
},
manaRip: {
name: "Mana Rip",
elem: "transference",
dmg: 16,
cost: elemCost("transference", 3),
tier: 1,
castSpeed: 2.5,
unlock: 250,
studyTime: 4,
desc: "Rip mana from the enemy. High efficiency.",
},
essenceDrain: {
name: "Essence Drain",
elem: "transference",
dmg: 42,
cost: elemCost("transference", 7),
tier: 2,
castSpeed: 1.3,
unlock: 1050,
studyTime: 10,
desc: "Drain the enemy's essence.",
},
soulTransfer: {
name: "Soul Transfer",
elem: "transference",
dmg: 130,
cost: elemCost("transference", 16),
tier: 3,
castSpeed: 0.6,
unlock: 13000,
studyTime: 26,
desc: "Transfer the soul's energy.",
},
};
+35 -822
View File
@@ -1,826 +1,39 @@
// ─── Spells ────────────────────────────────────────────────────────────────────
import type { SpellDef, SpellCost } from '../types';
import { rawCost, elemCost } from './elements';
// Main entry point - re-exports from modular spell definitions
// See spells-modules/ directory for individual spell categories
export const SPELLS_DEF: Record<string, SpellDef> = {
// Tier 0 - Basic Raw Mana Spells (fast, costs raw mana)
manaBolt: {
name: "Mana Bolt",
elem: "raw",
dmg: 5,
cost: rawCost(3),
tier: 0,
castSpeed: 3,
unlock: 0,
studyTime: 0,
desc: "A weak bolt of pure mana. Costs raw mana instead of elemental."
},
manaStrike: {
name: "Mana Strike",
elem: "raw",
dmg: 8,
cost: rawCost(5),
tier: 0,
castSpeed: 2.5,
unlock: 50,
studyTime: 1,
desc: "A concentrated strike of raw mana. Slightly stronger than Mana Bolt."
},
// Tier 1 - Basic Elemental Spells (2-4 hours study)
fireball: {
name: "Fireball",
elem: "fire",
dmg: 15,
cost: elemCost("fire", 2),
tier: 1,
castSpeed: 2,
unlock: 100,
studyTime: 2,
desc: "Hurl a ball of fire at your enemy."
},
emberShot: {
name: "Ember Shot",
elem: "fire",
dmg: 10,
cost: elemCost("fire", 1),
tier: 1,
castSpeed: 3,
unlock: 75,
studyTime: 1,
desc: "A quick shot of embers. Efficient fire damage."
},
waterJet: {
name: "Water Jet",
elem: "water",
dmg: 12,
cost: elemCost("water", 2),
tier: 1,
castSpeed: 2,
unlock: 100,
studyTime: 2,
desc: "A high-pressure jet of water."
},
iceShard: {
name: "Ice Shard",
elem: "water",
dmg: 14,
cost: elemCost("water", 2),
tier: 1,
castSpeed: 2,
unlock: 120,
studyTime: 2,
desc: "Launch a sharp shard of ice."
},
gust: {
name: "Gust",
elem: "air",
dmg: 10,
cost: elemCost("air", 2),
tier: 1,
castSpeed: 3,
unlock: 100,
studyTime: 2,
desc: "A powerful gust of wind."
},
windSlash: {
name: "Wind Slash",
elem: "air",
dmg: 12,
cost: elemCost("air", 2),
tier: 1,
castSpeed: 2.5,
unlock: 110,
studyTime: 2,
desc: "A cutting blade of wind."
},
stoneBullet: {
name: "Stone Bullet",
elem: "earth",
dmg: 16,
cost: elemCost("earth", 2),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "Launch a bullet of solid stone."
},
rockSpike: {
name: "Rock Spike",
elem: "earth",
dmg: 18,
cost: elemCost("earth", 3),
tier: 1,
castSpeed: 1.5,
unlock: 180,
studyTime: 3,
desc: "Summon a spike of rock from below."
},
lightLance: {
name: "Light Lance",
elem: "light",
dmg: 18,
cost: elemCost("light", 2),
tier: 1,
castSpeed: 2,
unlock: 200,
studyTime: 4,
desc: "A piercing lance of pure light."
},
radiance: {
name: "Radiance",
elem: "light",
dmg: 14,
cost: elemCost("light", 2),
tier: 1,
castSpeed: 2.5,
unlock: 180,
studyTime: 3,
desc: "Burst of radiant energy."
},
shadowBolt: {
name: "Shadow Bolt",
elem: "dark",
dmg: 16,
cost: elemCost("dark", 2),
tier: 1,
castSpeed: 2,
unlock: 200,
studyTime: 4,
desc: "A bolt of shadowy energy."
},
darkPulse: {
name: "Dark Pulse",
elem: "dark",
dmg: 12,
cost: elemCost("dark", 1),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 2,
desc: "A quick pulse of darkness."
},
drain: {
name: "Drain",
elem: "death",
dmg: 10,
cost: elemCost("death", 2),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "Drain life force from your enemy.",
},
rotTouch: {
name: "Rot Touch",
elem: "death",
dmg: 14,
cost: elemCost("death", 2),
tier: 1,
castSpeed: 2,
unlock: 170,
studyTime: 3,
desc: "Touch of decay and rot."
},
export { RAW_SPELLS } from './spells-modules/raw-spells';
export { BASIC_ELEMENTAL_SPELLS } from './spells-modules/basic-elemental-spells';
export { LIGHTNING_SPELLS } from './spells-modules/lightning-spells';
export { AOE_SPELLS } from './spells-modules/aoe-spells';
export { ADVANCED_SPELLS } from './spells-modules/advanced-spells';
export { MASTER_SPELLS } from './spells-modules/master-spells';
export { LEGENDARY_SPELLS } from './spells-modules/legendary-spells';
export { ENCHANTMENT_SPELLS } from './spells-modules/enchantment-spells';
export { COMPOUND_SPELLS } from './spells-modules/compound-spells';
export { UTILITY_SPELLS } from './spells-modules/utility-spells';
// Tier 2 - Advanced Spells (8-12 hours study)
inferno: {
name: "Inferno",
elem: "fire",
dmg: 60,
cost: elemCost("fire", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "Engulf your enemy in flames."
},
flameWave: {
name: "Flame Wave",
elem: "fire",
dmg: 45,
cost: elemCost("fire", 6),
tier: 2,
castSpeed: 1.5,
unlock: 800,
studyTime: 6,
desc: "A wave of fire sweeps across the battlefield."
},
tidalWave: {
name: "Tidal Wave",
elem: "water",
dmg: 55,
cost: elemCost("water", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "A massive wave crashes down."
},
iceStorm: {
name: "Ice Storm",
elem: "water",
dmg: 50,
cost: elemCost("water", 7),
tier: 2,
castSpeed: 1.2,
unlock: 900,
studyTime: 7,
desc: "A storm of ice shards."
},
earthquake: {
name: "Earthquake",
elem: "earth",
dmg: 70,
cost: elemCost("earth", 10),
tier: 2,
castSpeed: 0.8,
unlock: 1200,
studyTime: 10,
desc: "Shake the very foundation."
},
stoneBarrage: {
name: "Stone Barrage",
elem: "earth",
dmg: 55,
cost: elemCost("earth", 7),
tier: 2,
castSpeed: 1.2,
unlock: 1000,
studyTime: 8,
desc: "Multiple stone projectiles."
},
hurricane: {
name: "Hurricane",
elem: "air",
dmg: 50,
cost: elemCost("air", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "A devastating hurricane."
},
windBlade: {
name: "Wind Blade",
elem: "air",
dmg: 40,
cost: elemCost("air", 5),
tier: 2,
castSpeed: 1.8,
unlock: 700,
studyTime: 6,
desc: "A blade of cutting wind."
},
solarFlare: {
name: "Solar Flare",
elem: "light",
dmg: 65,
cost: elemCost("light", 9),
tier: 2,
castSpeed: 0.9,
unlock: 1100,
studyTime: 9,
desc: "A blinding flare of solar energy."
},
divineSmite: {
name: "Divine Smite",
elem: "light",
dmg: 55,
cost: elemCost("light", 7),
tier: 2,
castSpeed: 1.2,
unlock: 900,
studyTime: 7,
desc: "A smite of divine power."
},
voidRift: {
name: "Void Rift",
elem: "dark",
dmg: 55,
cost: elemCost("dark", 8),
tier: 2,
castSpeed: 1,
unlock: 1000,
studyTime: 8,
desc: "Open a rift to the void."
},
shadowStorm: {
name: "Shadow Storm",
elem: "dark",
dmg: 48,
cost: elemCost("dark", 6),
tier: 2,
castSpeed: 1.3,
unlock: 800,
studyTime: 6,
desc: "A storm of shadows."
},
soulRend: {
name: "Soul Rend",
elem: "death",
dmg: 50,
cost: elemCost("death", 7),
tier: 2,
castSpeed: 1.1,
unlock: 1100,
studyTime: 9,
desc: "Tear at the enemy's soul."
},
// Tier 3 - Master Spells (20-30 hours study)
pyroclasm: {
name: "Pyroclasm",
elem: "fire",
dmg: 250,
cost: elemCost("fire", 25),
tier: 3,
castSpeed: 0.6,
unlock: 10000,
studyTime: 24,
desc: "An eruption of volcanic fury."
},
tsunami: {
name: "Tsunami",
elem: "water",
dmg: 220,
cost: elemCost("water", 22),
tier: 3,
castSpeed: 0.65,
unlock: 10000,
studyTime: 24,
desc: "A towering wall of water."
},
meteorStrike: {
name: "Meteor Strike",
elem: "earth",
dmg: 280,
cost: elemCost("earth", 28),
tier: 3,
castSpeed: 0.5,
unlock: 12000,
studyTime: 28,
desc: "Call down a meteor from the heavens."
},
cosmicStorm: {
name: "Cosmic Storm",
elem: "air",
dmg: 200,
cost: elemCost("air", 20),
tier: 3,
castSpeed: 0.7,
unlock: 10000,
studyTime: 24,
desc: "A storm of cosmic proportions."
},
heavenLight: {
name: "Heaven's Light",
elem: "light",
dmg: 240,
cost: elemCost("light", 24),
tier: 3,
castSpeed: 0.6,
unlock: 11000,
studyTime: 26,
desc: "The light of heaven itself."
},
oblivion: {
name: "Oblivion",
elem: "dark",
dmg: 230,
cost: elemCost("dark", 23),
tier: 3,
castSpeed: 0.6,
unlock: 10500,
studyTime: 25,
desc: "Consign to oblivion."
},
deathMark: {
name: "Death Mark",
elem: "death",
dmg: 200,
cost: elemCost("death", 20),
tier: 3,
castSpeed: 0.7,
unlock: 10000,
studyTime: 24,
desc: "Mark for death."
},
// Tier 4 - Legendary Spells (40-60 hours study, require exotic elements)
stellarNova: {
name: "Stellar Nova",
elem: "stellar",
dmg: 500,
cost: elemCost("stellar", 15),
tier: 4,
castSpeed: 0.4,
unlock: 50000,
studyTime: 48,
desc: "A nova of stellar energy."
},
voidCollapse: {
name: "Void Collapse",
elem: "void",
dmg: 450,
cost: elemCost("void", 12),
tier: 4,
castSpeed: 0.45,
unlock: 40000,
studyTime: 42,
desc: "Collapse the void upon your enemy."
},
crystalShatter: {
name: "Crystal Shatter",
elem: "crystal",
dmg: 400,
cost: elemCost("crystal", 10),
tier: 4,
castSpeed: 0.5,
unlock: 35000,
studyTime: 36,
desc: "Shatter crystalline energy."
},
// ═══════════════════════════════════════════════════════════════════════════
// LIGHTNING SPELLS - Fast, armor-piercing, harder to dodge
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 - Basic Lightning
spark: {
name: "Spark",
elem: "lightning",
dmg: 8,
cost: elemCost("lightning", 1),
tier: 1,
castSpeed: 4,
unlock: 120,
studyTime: 2,
desc: "A quick spark of lightning. Very fast and hard to dodge.",
effects: [{ type: 'armor_pierce', value: 0.2 }]
},
lightningBolt: {
name: "Lightning Bolt",
elem: "lightning",
dmg: 14,
cost: elemCost("lightning", 2),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 3,
desc: "A bolt of lightning that pierces armor.",
effects: [{ type: 'armor_pierce', value: 0.3 }]
},
// Tier 2 - Advanced Lightning
chainLightning: {
name: "Chain Lightning",
elem: "lightning",
dmg: 25,
cost: elemCost("lightning", 5),
tier: 2,
castSpeed: 2,
unlock: 900,
studyTime: 8,
desc: "Lightning that arcs between enemies. Hits 3 targets.",
isAoe: true,
aoeTargets: 3,
effects: [{ type: 'chain', value: 3 }]
},
stormCall: {
name: "Storm Call",
elem: "lightning",
dmg: 40,
cost: elemCost("lightning", 6),
tier: 2,
castSpeed: 1.5,
unlock: 1100,
studyTime: 10,
desc: "Call down a storm. Hits 2 targets with armor pierce.",
isAoe: true,
aoeTargets: 2,
effects: [{ type: 'armor_pierce', value: 0.4 }]
},
// Tier 3 - Master Lightning
thunderStrike: {
name: "Thunder Strike",
elem: "lightning",
dmg: 150,
cost: elemCost("lightning", 15),
tier: 3,
castSpeed: 0.8,
unlock: 10000,
studyTime: 24,
desc: "Devastating lightning that ignores 50% armor.",
effects: [{ type: 'armor_pierce', value: 0.5 }]
},
// ═══════════════════════════════════════════════════════════════════════════
// AOE SPELLS - Hit multiple enemies, less damage per target
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 AOE
fireballAoe: {
name: "Fireball (AOE)",
elem: "fire",
dmg: 8,
cost: elemCost("fire", 3),
tier: 1,
castSpeed: 2,
unlock: 150,
studyTime: 3,
desc: "An explosive fireball that hits 3 enemies.",
isAoe: true,
aoeTargets: 3,
effects: [{ type: 'aoe', value: 3 }]
},
frostNova: {
name: "Frost Nova",
elem: "water",
dmg: 6,
cost: elemCost("water", 3),
tier: 1,
castSpeed: 2,
unlock: 140,
studyTime: 3,
desc: "A burst of frost hitting 4 enemies. May freeze.",
isAoe: true,
aoeTargets: 4,
effects: [{ type: 'freeze', value: 0.15, chance: 0.2 }]
},
// Tier 2 AOE
meteorShower: {
name: "Meteor Shower",
elem: "fire",
dmg: 20,
cost: elemCost("fire", 8),
tier: 2,
castSpeed: 1,
unlock: 1200,
studyTime: 10,
desc: "Rain meteors on 5 enemies.",
isAoe: true,
aoeTargets: 5
},
blizzard: {
name: "Blizzard",
elem: "water",
dmg: 18,
cost: elemCost("water", 7),
tier: 2,
castSpeed: 1.2,
unlock: 1000,
studyTime: 9,
desc: "A freezing blizzard hitting 4 enemies.",
isAoe: true,
aoeTargets: 4,
effects: [{ type: 'freeze', value: 0.1, chance: 0.15 }]
},
earthquakeAoe: {
name: "Earth Tremor",
elem: "earth",
dmg: 25,
cost: elemCost("earth", 8),
tier: 2,
castSpeed: 0.8,
unlock: 1400,
studyTime: 10,
desc: "Shake the ground, hitting 3 enemies with high damage.",
isAoe: true,
aoeTargets: 3
},
// Tier 3 AOE
apocalypse: {
name: "Apocalypse",
elem: "fire",
dmg: 80,
cost: elemCost("fire", 20),
tier: 3,
castSpeed: 0.5,
unlock: 15000,
studyTime: 30,
desc: "End times. Hits ALL enemies with devastating fire.",
isAoe: true,
aoeTargets: 10
},
// ═══════════════════════════════════════════════════════════════════════════
// MAGIC SWORD ENCHANTMENTS - For weapon enchanting system
// ═══════════════════════════════════════════════════════════════════════════
fireBlade: {
name: "Fire Blade",
elem: "fire",
dmg: 3,
cost: rawCost(1),
tier: 1,
castSpeed: 4,
unlock: 100,
studyTime: 2,
desc: "Enchant a blade with fire. Burns enemies over time.",
isWeaponEnchant: true,
effects: [{ type: 'burn', value: 2, duration: 3 }]
},
frostBlade: {
name: "Frost Blade",
elem: "water",
dmg: 3,
cost: rawCost(1),
tier: 1,
castSpeed: 4,
unlock: 100,
studyTime: 2,
desc: "Enchant a blade with frost. Prevents enemy dodge.",
isWeaponEnchant: true,
effects: [{ type: 'freeze', value: 0, chance: 1 }] // 100% freeze = no dodge
},
lightningBlade: {
name: "Lightning Blade",
elem: "lightning",
dmg: 4,
cost: rawCost(1),
tier: 1,
castSpeed: 5,
unlock: 150,
studyTime: 3,
desc: "Enchant a blade with lightning. Pierces 30% armor.",
isWeaponEnchant: true,
effects: [{ type: 'armor_pierce', value: 0.3 }]
},
voidBlade: {
name: "Void Blade",
elem: "dark",
dmg: 5,
cost: rawCost(2),
tier: 2,
castSpeed: 3,
unlock: 800,
studyTime: 8,
desc: "Enchant a blade with void. +20% damage.",
isWeaponEnchant: true,
effects: [{ type: 'buff', value: 0.2 }]
},
// ═══════════════════════════════════════════════════════════════════════════
// COMPOUND MANA SPELLS - Blood, Metal, Wood, Sand
// ═══════════════════════════════════════════════════════════════════════════
// ─── METAL SPELLS (Fire + Earth) ─────────────────────────────────────────────
// Metal magic is slow but devastating with high armor pierce
metalShard: {
name: "Metal Shard",
elem: "metal",
dmg: 16,
cost: elemCost("metal", 2),
tier: 1,
castSpeed: 1.8,
unlock: 220,
studyTime: 3,
desc: "A sharpened metal shard. Slower but pierces armor.",
effects: [{ type: 'armor_pierce', value: 0.25 }]
},
ironFist: {
name: "Iron Fist",
elem: "metal",
dmg: 28,
cost: elemCost("metal", 4),
tier: 1,
castSpeed: 1.5,
unlock: 350,
studyTime: 5,
desc: "A crushing fist of iron. High armor pierce.",
effects: [{ type: 'armor_pierce', value: 0.35 }]
},
steelTempest: {
name: "Steel Tempest",
elem: "metal",
dmg: 55,
cost: elemCost("metal", 8),
tier: 2,
castSpeed: 1,
unlock: 1300,
studyTime: 12,
desc: "A whirlwind of steel blades. Ignores much armor.",
effects: [{ type: 'armor_pierce', value: 0.45 }]
},
furnaceBlast: {
name: "Furnace Blast",
elem: "metal",
dmg: 200,
cost: elemCost("metal", 20),
tier: 3,
castSpeed: 0.5,
unlock: 18000,
studyTime: 32,
desc: "Molten metal and fire combined. Devastating armor pierce.",
effects: [{ type: 'armor_pierce', value: 0.6 }]
},
// ─── SAND SPELLS (Earth + Water) ────────────────────────────────────────────
// Sand magic slows enemies and deals steady damage
sandBlast: {
name: "Sand Blast",
elem: "sand",
dmg: 11,
cost: elemCost("sand", 2),
tier: 1,
castSpeed: 3,
unlock: 190,
studyTime: 3,
desc: "A blast of stinging sand. Fast casting.",
},
sandstorm: {
name: "Sandstorm",
elem: "sand",
dmg: 22,
cost: elemCost("sand", 4),
tier: 1,
castSpeed: 2,
unlock: 300,
studyTime: 4,
desc: "A swirling sandstorm. Hits 2 enemies.",
isAoe: true,
aoeTargets: 2,
},
desertWind: {
name: "Desert Wind",
elem: "sand",
dmg: 38,
cost: elemCost("sand", 6),
tier: 2,
castSpeed: 1.5,
unlock: 950,
studyTime: 8,
desc: "A scouring desert wind. Hits 3 enemies.",
isAoe: true,
aoeTargets: 3,
},
duneCollapse: {
name: "Dune Collapse",
elem: "sand",
dmg: 100,
cost: elemCost("sand", 16),
tier: 3,
castSpeed: 0.6,
unlock: 14000,
studyTime: 28,
desc: "Dunes collapse on all enemies. Hits 5 targets.",
isAoe: true,
aoeTargets: 5,
},
// ═══════════════════════════════════════════════════════════════════════════
// UTILITY MANA SPELLS - Mental, Transference, Force
// ═══════════════════════════════════════════════════════════════════════════
// ─── TRANSFERENCE SPELLS ─────────────────────────────────────────────────────
// Transference magic moves mana and enhances efficiency
transferStrike: {
name: "Transfer Strike",
elem: "transference",
dmg: 9,
cost: elemCost("transference", 2),
tier: 1,
castSpeed: 3,
unlock: 150,
studyTime: 2,
desc: "Strike that transfers energy. Very efficient.",
},
manaRip: {
name: "Mana Rip",
elem: "transference",
dmg: 16,
cost: elemCost("transference", 3),
tier: 1,
castSpeed: 2.5,
unlock: 250,
studyTime: 4,
desc: "Rip mana from the enemy. High efficiency.",
},
essenceDrain: {
name: "Essence Drain",
elem: "transference",
dmg: 42,
cost: elemCost("transference", 7),
tier: 2,
castSpeed: 1.3,
unlock: 1050,
studyTime: 10,
desc: "Drain the enemy's essence.",
},
soulTransfer: {
name: "Soul Transfer",
elem: "transference",
dmg: 130,
cost: elemCost("transference", 16),
tier: 3,
castSpeed: 0.6,
unlock: 13000,
studyTime: 26,
desc: "Transfer the soul's energy.",
},
// Convenience: export combined SPELLS_DEF for backward compatibility
import { RAW_SPELLS } from './spells-modules/raw-spells';
import { BASIC_ELEMENTAL_SPELLS } from './spells-modules/basic-elemental-spells';
import { LIGHTNING_SPELLS } from './spells-modules/lightning-spells';
import { AOE_SPELLS } from './spells-modules/aoe-spells';
import { ADVANCED_SPELLS } from './spells-modules/advanced-spells';
import { MASTER_SPELLS } from './spells-modules/master-spells';
import { LEGENDARY_SPELLS } from './spells-modules/legendary-spells';
import { ENCHANTMENT_SPELLS } from './spells-modules/enchantment-spells';
import { COMPOUND_SPELLS } from './spells-modules/compound-spells';
import { UTILITY_SPELLS } from './spells-modules/utility-spells';
export const SPELLS_DEF: Record<string, import('../types').SpellDef> = {
...RAW_SPELLS,
...BASIC_ELEMENTAL_SPELLS,
...LIGHTNING_SPELLS,
...AOE_SPELLS,
...ADVANCED_SPELLS,
...MASTER_SPELLS,
...LEGENDARY_SPELLS,
...ENCHANTMENT_SPELLS,
...COMPOUND_SPELLS,
...UTILITY_SPELLS,
};