// ─── Game Constants ─────────────────────────────────────────────────────────── import type { ElementDef, GuardianDef, SpellDef, SkillDef, PrestigeDef, SpellCost } from './types'; // Time constants export const TICK_MS = 200; export const HOURS_PER_TICK = 0.04; // 200ms / 5000ms per in-game hour export const MAX_DAY = 30; export const INCURSION_START_DAY = 20; // Mana constants export const MANA_PER_ELEMENT = 100; // Helper function for creating raw mana cost export function rawCost(amount: number): SpellCost { return { type: 'raw', amount }; } // Helper function for creating elemental mana cost export function elemCost(element: string, amount: number): SpellCost { return { type: 'element', element, amount }; } // ─── Element Definitions ───────────────────────────────────────────────────── export const ELEMENTS: Record = { // Base Elements fire: { name: "Fire", sym: "🔥", color: "#FF6B35", glow: "#FF6B3540", cat: "base" }, water: { name: "Water", sym: "💧", color: "#4ECDC4", glow: "#4ECDC440", cat: "base" }, air: { name: "Air", sym: "🌬️", color: "#00D4FF", glow: "#00D4FF40", cat: "base" }, earth: { name: "Earth", sym: "⛰️", color: "#F4A261", glow: "#F4A26140", cat: "base" }, light: { name: "Light", sym: "☀️", color: "#FFD700", glow: "#FFD70040", cat: "base" }, dark: { name: "Dark", sym: "🌑", color: "#9B59B6", glow: "#9B59B640", cat: "base" }, death: { name: "Death", sym: "💀", color: "#778CA3", glow: "#778CA340", cat: "base" }, // Utility Elements transference: { name: "Transference", sym: "🔗", color: "#1ABC9C", glow: "#1ABC9C40", cat: "utility" }, // Composite Elements metal: { name: "Metal", sym: "⚙️", color: "#BDC3C7", glow: "#BDC3C740", cat: "composite", recipe: ["fire", "earth"] }, sand: { name: "Sand", sym: "⏳", color: "#D4AC0D", glow: "#D4AC0D40", cat: "composite", recipe: ["earth", "water"] }, lightning: { name: "Lightning", sym: "⚡", color: "#FFEB3B", glow: "#FFEB3B40", cat: "composite", recipe: ["fire", "air"] }, // Exotic Elements crystal: { name: "Crystal", sym: "💎", color: "#85C1E9", glow: "#85C1E940", cat: "exotic", recipe: ["sand", "sand", "light"] }, stellar: { name: "Stellar", sym: "⭐", color: "#F0E68C", glow: "#F0E68C40", cat: "exotic", recipe: ["fire", "fire", "light"] }, void: { name: "Void", sym: "🕳️", color: "#4A235A", glow: "#4A235A40", cat: "exotic", recipe: ["dark", "dark", "death"] }, }; // NOTE: Life, Blood, Wood, Mental, and Force mana types have been removed. // Lifesteal and healing are BANNED from player abilities - see AGENTS.md // Crystal recipe updated to use light instead of mental. export const FLOOR_ELEM_CYCLE = ["fire", "water", "air", "earth", "light", "dark", "death"]; // ─── Room Types ──────────────────────────────────────────────────────────────── // Room types for spire floors export type RoomType = 'combat' | 'puzzle' | 'swarm' | 'speed' | 'guardian'; // Room generation rules: // - Guardian floors (10, 20, 30, etc.) are ALWAYS guardian type // - Every 5th floor (5, 15, 25, etc.) has a chance for special rooms // - Other floors are combat with chance for swarm/speed export const PUZZLE_ROOM_INTERVAL = 7; // Every 7 floors, chance for puzzle export const SWARM_ROOM_CHANCE = 0.15; // 15% chance for swarm room export const SPEED_ROOM_CHANCE = 0.10; // 10% chance for speed room export const PUZZLE_ROOM_CHANCE = 0.20; // 20% chance for puzzle room on puzzle floors // Puzzle room definitions - themed around attunements export const PUZZLE_ROOMS: Record = { enchanter_trial: { name: "Enchanter's Trial", attunements: ['enchanter'], baseProgressPerTick: 0.02, attunementBonus: 0.03, description: "Decipher ancient enchantment runes." }, fabricator_trial: { name: "Fabricator's Trial", attunements: ['fabricator'], baseProgressPerTick: 0.02, attunementBonus: 0.03, description: "Construct a mana-powered mechanism." }, invoker_trial: { name: "Invoker's Trial", attunements: ['invoker'], baseProgressPerTick: 0.02, attunementBonus: 0.03, description: "Commune with guardian spirits." }, hybrid_enchanter_fabricator: { name: "Fusion Workshop", attunements: ['enchanter', 'fabricator'], baseProgressPerTick: 0.015, attunementBonus: 0.025, description: "Enchant and construct in harmony." }, hybrid_enchanter_invoker: { name: "Ritual Circle", attunements: ['enchanter', 'invoker'], baseProgressPerTick: 0.015, attunementBonus: 0.025, description: "Bind pact energies into enchantments." }, hybrid_fabricator_invoker: { name: "Golem Forge", attunements: ['fabricator', 'invoker'], baseProgressPerTick: 0.015, attunementBonus: 0.025, description: "Channel guardian power into constructs." }, }; // Swarm room configuration export const SWARM_CONFIG = { minEnemies: 3, maxEnemies: 6, hpMultiplier: 0.4, // Each enemy has 40% of normal floor HP armorBase: 0, // Swarm enemies start with no armor armorPerFloor: 0.01, // Gain 1% armor per 10 floors }; // Speed room configuration (dodging enemies) export const SPEED_ROOM_CONFIG = { baseDodgeChance: 0.25, // 25% base dodge chance dodgePerFloor: 0.005, // +0.5% dodge per floor maxDodge: 0.50, // Max 50% dodge speedBonus: 0.5, // 50% less time to complete if dodged }; // Armor scaling for normal floors export const FLOOR_ARMOR_CONFIG = { baseChance: 0, // No armor on floor 1-9 chancePerFloor: 0.01, // +1% chance per floor after 10 maxArmorChance: 0.5, // Max 50% of floors have armor minArmor: 0.05, // Min 5% armor maxArmor: 0.25, // Max 25% armor on non-guardians }; // ─── Guardians ──────────────────────────────────────────────────────────────── // All guardians have armor - damage reduction percentage export const GUARDIANS: Record = { 10: { name: "Ignis Prime", element: "fire", hp: 5000, pact: 1.5, color: "#FF6B35", armor: 0.10, // 10% damage reduction boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Fire damage' }, { type: 'maxMana', value: 50, desc: '+50 max mana' }, ], pactCost: 500, pactTime: 2, uniquePerk: "Fire spells cast 10% faster" }, 20: { name: "Aqua Regia", element: "water", hp: 15000, pact: 1.75, color: "#4ECDC4", armor: 0.15, boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Water damage' }, { type: 'manaRegen', value: 0.5, desc: '+0.5 mana regen' }, ], pactCost: 1000, pactTime: 4, uniquePerk: "Water spells deal +15% damage" }, 30: { name: "Ventus Rex", element: "air", hp: 30000, pact: 2.0, color: "#00D4FF", armor: 0.18, boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Air damage' }, { type: 'castingSpeed', value: 5, desc: '+5% cast speed' }, ], pactCost: 2000, pactTime: 6, uniquePerk: "Air spells have 15% crit chance" }, 40: { name: "Terra Firma", element: "earth", hp: 50000, pact: 2.25, color: "#F4A261", armor: 0.25, // Earth guardian - highest armor boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Earth damage' }, { type: 'maxMana', value: 100, desc: '+100 max mana' }, ], pactCost: 4000, pactTime: 8, uniquePerk: "Earth spells deal +25% damage to guardians" }, 50: { name: "Lux Aeterna", element: "light", hp: 80000, pact: 2.5, color: "#FFD700", armor: 0.20, boons: [ { type: 'elementalDamage', value: 10, desc: '+10% Light damage' }, { type: 'insightGain', value: 10, desc: '+10% insight gain' }, ], pactCost: 8000, pactTime: 10, uniquePerk: "Light spells reveal enemy weaknesses (+20% damage)" }, 60: { name: "Umbra Mortis", element: "dark", hp: 120000, pact: 2.75, color: "#9B59B6", armor: 0.22, boons: [ { type: 'elementalDamage', value: 10, desc: '+10% Dark damage' }, { type: 'critDamage', value: 15, desc: '+15% crit damage' }, ], pactCost: 15000, pactTime: 12, uniquePerk: "Dark spells deal +25% damage to armored enemies" }, 80: { name: "Mors Ultima", element: "death", hp: 250000, pact: 3.25, color: "#778CA3", armor: 0.25, boons: [ { type: 'elementalDamage', value: 10, desc: '+10% Death damage' }, { type: 'rawDamage', value: 10, desc: '+10% raw damage' }, ], pactCost: 40000, pactTime: 16, uniquePerk: "Death spells execute enemies below 20% HP" }, 90: { name: "Primordialis", element: "void", hp: 400000, pact: 4.0, color: "#4A235A", armor: 0.30, boons: [ { type: 'elementalDamage', value: 15, desc: '+15% Void damage' }, { type: 'maxMana', value: 200, desc: '+200 max mana' }, { type: 'manaRegen', value: 1, desc: '+1 mana regen' }, ], pactCost: 75000, pactTime: 20, uniquePerk: "Void spells ignore 30% of enemy resistance" }, 100: { name: "The Awakened One", element: "stellar", hp: 1000000, pact: 5.0, color: "#F0E68C", armor: 0.35, // Final boss has highest armor boons: [ { type: 'elementalDamage', value: 20, desc: '+20% Stellar damage' }, { type: 'maxMana', value: 500, desc: '+500 max mana' }, { type: 'manaRegen', value: 2, desc: '+2 mana regen' }, { type: 'insightGain', value: 25, desc: '+25% insight gain' }, ], pactCost: 150000, pactTime: 24, uniquePerk: "All spells deal +50% damage and cast 25% faster" }, }; // ─── Spells ─────────────────────────────────────────────────────────────────── export const SPELLS_DEF: Record = { // 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." }, // 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.", }, }; // ─── Skills ─────────────────────────────────────────────────────────────────── export const SKILLS_DEF: Record = { // Mana Skills (4-8 hours study) - Core, no attunement required manaWell: { name: "Mana Well", desc: "+100 max mana", cat: "mana", max: 10, base: 100, studyTime: 4 }, manaFlow: { name: "Mana Flow", desc: "+1 regen/hr", cat: "mana", max: 10, base: 150, studyTime: 5 }, elemAttune: { name: "Elem. Attunement", desc: "+50 elem mana cap", cat: "mana", max: 10, base: 200, studyTime: 4 }, manaOverflow: { name: "Mana Overflow", desc: "+25% mana from clicks", cat: "mana", max: 5, base: 400, req: { manaWell: 3 }, studyTime: 6 }, // Study Skills (3-6 hours study) - Core, no attunement required quickLearner: { name: "Quick Learner", desc: "+10% study speed", cat: "study", max: 10, base: 250, studyTime: 4 }, focusedMind: { name: "Focused Mind", desc: "-5% study mana cost", cat: "study", max: 10, base: 300, studyTime: 5 }, meditation: { name: "Meditation Focus", desc: "Up to 2.5x regen after 4hrs meditating", cat: "study", max: 1, base: 400, studyTime: 6 }, knowledgeRetention: { name: "Knowledge Retention", desc: "+20% study progress saved on cancel", cat: "study", max: 3, base: 350, studyTime: 5 }, // Enchanting Skills (4-8 hours study) - Requires Enchanter attunement levels enchanting: { name: "Enchanting", desc: "Unlocks enchantment design", cat: "enchant", max: 10, base: 200, studyTime: 5, attunement: 'enchanter', attunementReq: { enchanter: 1 } }, efficientEnchant:{ name: "Efficient Enchant", desc: "-5% enchantment capacity cost", cat: "enchant", max: 5, base: 350, studyTime: 6, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } }, disenchanting: { name: "Disenchanting", desc: "Recover 20% mana from removed enchantments", cat: "enchant", max: 3, base: 400, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, enchantSpeed: { name: "Enchant Speed", desc: "-10% enchantment time", cat: "enchant", max: 5, base: 300, studyTime: 4, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, scrollCrafting: { name: "Scroll Crafting", desc: "Create scrolls to store enchantment designs", cat: "enchant", max: 3, base: 500, studyTime: 8, req: { enchanting: 5 }, attunementReq: { enchanter: 3 } }, essenceRefining: { name: "Essence Refining", desc: "+10% enchantment effect power", cat: "enchant", max: 5, base: 450, studyTime: 7, req: { enchanting: 4 }, attunementReq: { enchanter: 2 } }, // Crafting Skills (4-6 hours study) - Some require Fabricator effCrafting: { name: "Eff. Crafting", desc: "-10% craft time", cat: "craft", max: 5, base: 300, studyTime: 4 }, fieldRepair: { name: "Field Repair", desc: "+15% repair efficiency", cat: "craft", max: 5, base: 350, studyTime: 4 }, elemCrafting: { name: "Elem. Crafting", desc: "+25% craft output", cat: "craft", max: 3, base: 500, req: { effCrafting: 3 }, studyTime: 8, attunementReq: { enchanter: 1 } }, // Effect Research Skills (unlock enchantment effects for designing) - Requires Enchanter // Tier 1 - Basic Spell Effects researchManaSpells: { name: "Mana Spell Research", desc: "Unlock Mana Strike spell enchantment", cat: "effectResearch", max: 1, base: 200, studyTime: 4, req: { enchanting: 1 }, attunementReq: { enchanter: 1 } }, researchFireSpells: { name: "Fire Spell Research", desc: "Unlock Ember Shot, Fireball spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, researchWaterSpells: { name: "Water Spell Research", desc: "Unlock Water Jet, Ice Shard spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, researchAirSpells: { name: "Air Spell Research", desc: "Unlock Gust, Wind Slash spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, researchEarthSpells: { name: "Earth Spell Research", desc: "Unlock Stone Bullet, Rock Spike spell enchantments", cat: "effectResearch", max: 1, base: 350, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, researchLightSpells: { name: "Light Spell Research", desc: "Unlock Light Lance, Radiance spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } }, researchDarkSpells: { name: "Dark Spell Research", desc: "Unlock Shadow Bolt, Dark Pulse spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } }, researchLifeDeathSpells: { name: "Death Research", desc: "Unlock Drain spell enchantment", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } }, // Tier 2 - Advanced Spell Effects - Require Enchanter 3 researchAdvancedFire: { name: "Advanced Fire Research", desc: "Unlock Inferno, Flame Wave spell enchantments", cat: "effectResearch", max: 1, base: 600, studyTime: 12, req: { researchFireSpells: 1, enchanting: 4 }, attunementReq: { enchanter: 3 } }, researchAdvancedWater: { name: "Advanced Water Research", desc: "Unlock Tidal Wave, Ice Storm spell enchantments", cat: "effectResearch", max: 1, base: 600, studyTime: 12, req: { researchWaterSpells: 1, enchanting: 4 }, attunementReq: { enchanter: 3 } }, researchAdvancedAir: { name: "Advanced Air Research", desc: "Unlock Hurricane, Wind Blade spell enchantments", cat: "effectResearch", max: 1, base: 600, studyTime: 12, req: { researchAirSpells: 1, enchanting: 4 }, attunementReq: { enchanter: 3 } }, researchAdvancedEarth: { name: "Advanced Earth Research", desc: "Unlock Earthquake, Stone Barrage spell enchantments", cat: "effectResearch", max: 1, base: 600, studyTime: 12, req: { researchEarthSpells: 1, enchanting: 4 }, attunementReq: { enchanter: 3 } }, researchAdvancedLight: { name: "Advanced Light Research", desc: "Unlock Solar Flare, Divine Smite spell enchantments", cat: "effectResearch", max: 1, base: 700, studyTime: 14, req: { researchLightSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 4 } }, researchAdvancedDark: { name: "Advanced Dark Research", desc: "Unlock Void Rift, Shadow Storm spell enchantments", cat: "effectResearch", max: 1, base: 700, studyTime: 14, req: { researchDarkSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 4 } }, // Tier 3 - Master Spell Effects - Require Enchanter 5 researchMasterFire: { name: "Master Fire Research", desc: "Unlock Pyroclasm spell enchantment", cat: "effectResearch", max: 1, base: 1200, studyTime: 24, req: { researchAdvancedFire: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, researchMasterWater: { name: "Master Water Research", desc: "Unlock Tsunami spell enchantment", cat: "effectResearch", max: 1, base: 1200, studyTime: 24, req: { researchAdvancedWater: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, researchMasterEarth: { name: "Master Earth Research", desc: "Unlock Meteor Strike spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedEarth: 1, enchanting: 8 }, attunementReq: { enchanter: 5 } }, // Combat Effect Research researchDamageEffects: { name: "Damage Effect Research", desc: "Unlock Minor/Moderate Power, Amplification effects", cat: "effectResearch", max: 1, base: 250, studyTime: 5, req: { enchanting: 1 }, attunementReq: { enchanter: 1 } }, researchCombatEffects: { name: "Combat Effect Research", desc: "Unlock Sharp Edge, Swift Casting effects", cat: "effectResearch", max: 1, base: 350, studyTime: 6, req: { researchDamageEffects: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } }, // Mana Effect Research - Also unlocks weapon mana effects at Enchanter 3 researchManaEffects: { name: "Mana Effect Research", desc: "Unlock Mana Reserve, Trickle, Mana Tap, and weapon mana effects", cat: "effectResearch", max: 1, base: 200, studyTime: 4, req: { enchanting: 1 }, attunementReq: { enchanter: 1 } }, researchAdvancedManaEffects: { name: "Advanced Mana Research", desc: "Unlock Mana Reservoir, Stream, River, Mana Surge, and advanced weapon mana effects", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { researchManaEffects: 1, enchanting: 3 }, attunementReq: { enchanter: 3 } }, // Utility Effect Research researchUtilityEffects: { name: "Utility Effect Research", desc: "Unlock Meditative Focus, Quick Study, Insightful effects", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } }, // Special Effect Research researchSpecialEffects: { name: "Special Effect Research", desc: "Unlock Echo Chamber, Siphoning, Bane effects", cat: "effectResearch", max: 1, base: 500, studyTime: 10, req: { enchanting: 4 }, attunementReq: { enchanter: 3 } }, researchOverpower: { name: "Overpower Research", desc: "Unlock Overpower effect", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchSpecialEffects: 1, enchanting: 5 }, attunementReq: { enchanter: 4 } }, // ═══════════════════════════════════════════════════════════════════════════ // COMPOUND MANA SPELL RESEARCH - Metal, Sand, Lightning // ═══════════════════════════════════════════════════════════════════════════ // Tier 1 - Basic Compound Spells researchMetalSpells: { name: "Metal Spell Research", desc: "Unlock Metal Shard, Iron Fist spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchFireSpells: 1, researchEarthSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } }, researchSandSpells: { name: "Sand Spell Research", desc: "Unlock Sand Blast, Sandstorm spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchEarthSpells: 1, researchWaterSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } }, researchLightningSpells: { name: "Lightning Spell Research", desc: "Unlock Spark, Lightning Bolt spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchFireSpells: 1, researchAirSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } }, // Tier 2 - Advanced Compound Spells researchAdvancedMetal: { name: "Advanced Metal Research", desc: "Unlock Steel Tempest spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchMetalSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } }, researchAdvancedSand: { name: "Advanced Sand Research", desc: "Unlock Desert Wind spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchSandSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } }, researchAdvancedLightning: { name: "Advanced Lightning Research", desc: "Unlock Chain Lightning, Storm Call spell enchantments", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchLightningSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } }, // Tier 3 - Master Compound Spells researchMasterMetal: { name: "Master Metal Research", desc: "Unlock Furnace Blast spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedMetal: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, researchMasterSand: { name: "Master Sand Research", desc: "Unlock Dune Collapse spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedSand: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, researchMasterLightning: { name: "Master Lightning Research", desc: "Unlock Thunder Strike spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedLightning: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, // ═══════════════════════════════════════════════════════════════════════════ // UTILITY MANA SPELL RESEARCH - Transference // ═══════════════════════════════════════════════════════════════════════════ // Tier 1 - Basic Utility Spells researchTransferenceSpells: { name: "Transference Spell Research", desc: "Unlock Transfer Strike, Mana Rip spell enchantments", cat: "effectResearch", max: 1, base: 350, studyTime: 5, req: { enchanting: 3 }, attunementReq: { enchanter: 1 } }, // Tier 2 - Advanced Utility Spells researchAdvancedTransference: { name: "Advanced Transference Research", desc: "Unlock Essence Drain spell enchantment", cat: "effectResearch", max: 1, base: 650, studyTime: 12, req: { researchTransferenceSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } }, // Tier 3 - Master Utility Spells researchMasterTransference: { name: "Master Transference Research", desc: "Unlock Soul Transfer spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedTransference: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } }, // Research Skills (longer study times: 12-72 hours) - Core skills, any attunement level 3 manaTap: { name: "Mana Tap", desc: "+1 mana/click", cat: "research", max: 1, base: 300, studyTime: 12 }, manaSurge: { name: "Mana Surge", desc: "+3 mana/click", cat: "research", max: 1, base: 800, studyTime: 36, req: { manaTap: 1 } }, manaSpring: { name: "Mana Spring", desc: "+2 mana regen", cat: "research", max: 1, base: 600, studyTime: 24 }, deepTrance: { name: "Deep Trance", desc: "Extend meditation bonus to 6hrs for 3x", cat: "research", max: 1, base: 900, studyTime: 48, req: { meditation: 1 } }, voidMeditation:{ name: "Void Meditation", desc: "Extend meditation bonus to 8hrs for 5x", cat: "research", max: 1, base: 1500, studyTime: 72, req: { deepTrance: 1 } }, // Ascension Skills (very long study, powerful effects) - Require any attunement level 5+ insightHarvest: { name: "Insight Harvest", desc: "+10% insight gain", cat: "ascension", max: 5, base: 1000, studyTime: 20, attunementReq: { enchanter: 1 } }, temporalMemory: { name: "Temporal Memory", desc: "Keep 1 spell learned across loops", cat: "ascension", max: 3, base: 2000, studyTime: 36, attunementReq: { enchanter: 3 } }, guardianBane: { name: "Guardian Bane", desc: "+20% dmg vs guardians", cat: "ascension", max: 3, base: 1500, studyTime: 30, attunementReq: { invoker: 1 } }, }; // ─── Prestige Upgrades ──────────────────────────────────────────────────────── export const PRESTIGE_DEF: Record = { manaWell: { name: "Mana Well", desc: "+500 starting max mana", max: 5, cost: 500 }, manaFlow: { name: "Mana Flow", desc: "+0.5 regen/sec permanently", max: 10, cost: 750 }, deepMemory: { name: "Deep Memory", desc: "+1 memory slot", max: 5, cost: 1000 }, 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 }, 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 }, guardianPact: { name: "Guardian Pact", desc: "+10% pact multiplier", max: 5, cost: 3500 }, quickStart: { name: "Quick Start", desc: "Start with 100 raw mana", max: 3, cost: 400 }, elemStart: { name: "Elem. Start", desc: "Start with 5 of each unlocked element", max: 3, cost: 800 }, }; // ─── Skill Categories ───────────────────────────────────────────────────────── // Skills are now organized by attunement - each attunement grants access to specific skill categories export const SKILL_CATEGORIES = [ // Core categories (always available) { id: 'mana', name: 'Mana', icon: '💧', attunement: null }, { id: 'study', name: 'Study', icon: '📚', attunement: null }, { id: 'research', name: 'Research', icon: '🔮', attunement: null }, { id: 'ascension', name: 'Ascension', icon: '⭐', attunement: null }, // Enchanter attunement (Right Hand) { id: 'enchant', name: 'Enchanting', icon: '✨', attunement: 'enchanter' }, { id: 'effectResearch', name: 'Effect Research', icon: '🔬', attunement: 'enchanter' }, // Invoker attunement (Chest) { id: 'invocation', name: 'Invocation', icon: '💜', attunement: 'invoker' }, { id: 'pact', name: 'Pact Mastery', icon: '🤝', attunement: 'invoker' }, // Fabricator attunement (Left Hand) { id: 'fabrication', name: 'Fabrication', icon: '⚒️', attunement: 'fabricator' }, { id: 'golemancy', name: 'Golemancy', icon: '🗿', attunement: 'fabricator' }, // Legacy category (for backward compatibility) { id: 'craft', name: 'Crafting', icon: '🔧', attunement: null }, ]; // ─── Rarity Colors ─────────────────────────────────────────────────────────── export const RARITY_COLORS: Record = { common: '#9CA3AF', uncommon: '#22C55E', rare: '#3B82F6', epic: '#A855F7', legendary: '#F97316', mythic: '#EF4444', }; // ─── Effect Research Mapping ─────────────────────────────────────────────────── // Maps research skill IDs to the effect IDs they unlock export const EFFECT_RESEARCH_MAPPING: Record = { // Tier 1 - Basic Spell Effects researchManaSpells: ['spell_manaStrike'], researchFireSpells: ['spell_emberShot', 'spell_fireball'], researchWaterSpells: ['spell_waterJet', 'spell_iceShard'], researchAirSpells: ['spell_gust', 'spell_windSlash'], researchEarthSpells: ['spell_stoneBullet', 'spell_rockSpike'], researchLightSpells: ['spell_lightLance', 'spell_radiance'], researchDarkSpells: ['spell_shadowBolt', 'spell_darkPulse'], researchLifeDeathSpells: ['spell_drain'], // Tier 2 - Advanced Spell Effects researchAdvancedFire: ['spell_inferno', 'spell_flameWave'], researchAdvancedWater: ['spell_tidalWave', 'spell_iceStorm'], researchAdvancedAir: ['spell_hurricane', 'spell_windBlade'], researchAdvancedEarth: ['spell_earthquake', 'spell_stoneBarrage'], researchAdvancedLight: ['spell_solarFlare', 'spell_divineSmite'], researchAdvancedDark: ['spell_voidRift', 'spell_shadowStorm'], // Tier 3 - Master Spell Effects researchMasterFire: ['spell_pyroclasm'], researchMasterWater: ['spell_tsunami'], researchMasterEarth: ['spell_meteorStrike'], // Combat Effect Research researchDamageEffects: ['damage_5', 'damage_10', 'damage_pct_10'], researchCombatEffects: ['crit_5', 'attack_speed_10'], // Mana Effect Research researchManaEffects: ['mana_cap_50', 'mana_regen_1', 'click_mana_1'], researchAdvancedManaEffects: ['mana_cap_100', 'mana_regen_2', 'mana_regen_5', 'click_mana_3'], // Utility Effect Research researchUtilityEffects: ['meditate_10', 'study_10', 'insight_5'], // Special Effect Research researchSpecialEffects: ['spell_echo_10', 'guardian_dmg_10'], researchOverpower: ['overpower_80'], // ═══════════════════════════════════════════════════════════════════════════ // COMPOUND MANA SPELL RESEARCH - Metal, Sand, Lightning // ═══════════════════════════════════════════════════════════════════════════ // Tier 1 - Basic Compound Spells researchMetalSpells: ['spell_metalShard', 'spell_ironFist'], researchSandSpells: ['spell_sandBlast', 'spell_sandstorm'], researchLightningSpells: ['spell_spark', 'spell_lightningBolt'], // Tier 2 - Advanced Compound Spells researchAdvancedMetal: ['spell_steelTempest'], researchAdvancedSand: ['spell_desertWind'], researchAdvancedLightning: ['spell_chainLightning', 'spell_stormCall'], // Tier 3 - Master Compound Spells researchMasterMetal: ['spell_furnaceBlast'], researchMasterSand: ['spell_duneCollapse'], researchMasterLightning: ['spell_thunderStrike'], // ═══════════════════════════════════════════════════════════════════════════ // UTILITY MANA SPELL RESEARCH - Transference // ═══════════════════════════════════════════════════════════════════════════ // Tier 1 - Basic Utility Spells researchTransferenceSpells: ['spell_transferStrike', 'spell_manaRip'], // Tier 2 - Advanced Utility Spells researchAdvancedTransference: ['spell_essenceDrain'], // Tier 3 - Master Utility Spells researchMasterTransference: ['spell_soulTransfer'], }; // Base effects unlocked when player gets enchanting skill level 1 export const BASE_UNLOCKED_EFFECTS: string[] = []; // No effects at game start // Effects that unlock when getting enchanting skill level 1 export const ENCHANTING_UNLOCK_EFFECTS = ['spell_manaBolt']; // ─── Base Unlocked Elements ─────────────────────────────────────────────────── export const BASE_UNLOCKED_ELEMENTS = ['fire', 'water', 'air', 'earth']; // ─── Study Speed Formula ───────────────────────────────────────────────────── export function getStudySpeedMultiplier(skills: Record): number { return 1 + (skills.quickLearner || 0) * 0.1; } // ─── Study Cost Formula ─────────────────────────────────────────────────────── export function getStudyCostMultiplier(skills: Record): number { return 1 - (skills.focusedMind || 0) * 0.05; } // ─── Element Opposites for Damage Calculation ──────────────────────────────── export const ELEMENT_OPPOSITES: Record = { fire: 'water', water: 'fire', air: 'earth', earth: 'air', light: 'dark', dark: 'light', lightning: 'earth', // Lightning is weak to earth (grounding) }; // ─── Element Icon Mapping (Lucide Icons) ────────────────────────────────────── // Note: These are string identifiers for dynamic icon loading // The actual Lucide icons are imported in the components export const ELEMENT_ICON_NAMES: Record = { fire: 'Flame', water: 'Droplet', air: 'Wind', earth: 'Mountain', light: 'Sun', dark: 'Moon', death: 'Skull', transference: 'Link', metal: 'Target', sand: 'Hourglass', lightning: 'Zap', crystal: 'Gem', stellar: 'Star', void: 'CircleDot', raw: 'Circle', };