Completely remove legacy skill system and tests

This commit is contained in:
2026-05-16 11:20:11 +02:00
parent 1a688394e4
commit fe0f2a079c
125 changed files with 7 additions and 14459 deletions
-46
View File
@@ -1,46 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// COMBAT SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const arcaneFury: SkillV2Def = {
id: 'arcaneFury', name: 'Arcane Fury', description: 'Increases spell damage per level',
category: 'combat', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'damageMultiplier', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const combatTraining: SkillV2Def = {
id: 'combatTraining', name: 'Combat Training', description: 'Base damage bonus per level',
category: 'combat', maxLevel: 10, costPerLevel: 250, studyHours: 5,
effects: [{ stat: 'baseDamage', mode: 'add', valuePerLevel: 5 }],
};
export const precision: SkillV2Def = {
id: 'precision', name: 'Precision', description: '+5% crit chance per level',
category: 'combat', maxLevel: 10, costPerLevel: 300, studyHours: 6,
effects: [{ stat: 'critChance', mode: 'add', valuePerLevel: 0.05 }],
};
export const elementalMastery: SkillV2Def = {
id: 'elementalMastery', name: 'Elemental Mastery', description: '+15% elemental damage per level',
category: 'combat', maxLevel: 10, costPerLevel: 350, studyHours: 6,
effects: [{ stat: 'elementalDamage', mode: 'multiply', valuePerLevel: 0.15 }],
};
export const attackSpeed: SkillV2Def = {
id: 'attackSpeed', name: 'Attack Speed', description: '-10% attack time per level (faster)',
category: 'combat', maxLevel: 5, costPerLevel: 400, studyHours: 6,
effects: [{ stat: 'attackSpeed', mode: 'multiply', valuePerLevel: -0.10 }],
};
export const armorPiercing: SkillV2Def = {
id: 'armorPiercing', name: 'Armor Piercing', description: '+5% armor penetration per level',
category: 'combat', maxLevel: 5, costPerLevel: 400, studyHours: 6,
effects: [{ stat: 'armorPierce', mode: 'add', valuePerLevel: 0.05 }],
};
export const spellDamage: SkillV2Def = {
id: 'spellDamage', name: 'Spell Damage', description: '+5% spell damage per level',
category: 'combat', maxLevel: 10, costPerLevel: 250, studyHours: 5,
effects: [{ stat: 'spellDamage', mode: 'multiply', valuePerLevel: 0.05 }],
};
-86
View File
@@ -1,86 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// CORE MANA SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const manaWell: SkillV2Def = {
id: 'manaWell', name: 'Mana Well', description: 'Increases maximum mana capacity',
category: 'mana', maxLevel: 10, costPerLevel: 100, studyHours: 4,
effects: [{ stat: 'maxMana', mode: 'add', valuePerLevel: 100 }],
};
export const manaFlow: SkillV2Def = {
id: 'manaFlow', name: 'Mana Flow', description: 'Increases mana regeneration rate',
category: 'mana', maxLevel: 10, costPerLevel: 150, studyHours: 5,
effects: [{ stat: 'manaRegen', mode: 'add', valuePerLevel: 1 }],
};
export const manaOverflow: SkillV2Def = {
id: 'manaOverflow', name: 'Mana Overflow', description: 'Increases mana gained from clicks',
category: 'mana', maxLevel: 5, costPerLevel: 400, studyHours: 6,
prerequisites: { manaWell: 3 },
effects: [{ stat: 'clickMana', mode: 'multiply', valuePerLevel: 0.25 }],
};
export const manaTap: SkillV2Def = {
id: 'manaTap', name: 'Mana Tap', description: '+1 mana per click',
category: 'mana', maxLevel: 1, costPerLevel: 300, studyHours: 12,
effects: [{ stat: 'clickMana', mode: 'add', valuePerLevel: 1 }],
};
export const manaSurge: SkillV2Def = {
id: 'manaSurge', name: 'Mana Surge', description: '+3 mana per click',
category: 'mana', maxLevel: 1, costPerLevel: 800, studyHours: 36,
prerequisites: { manaTap: 1 },
effects: [{ stat: 'clickMana', mode: 'add', valuePerLevel: 3 }],
};
export const manaSpring: SkillV2Def = {
id: 'manaSpring', name: 'Mana Spring', description: '+2 mana regen',
category: 'mana', maxLevel: 1, costPerLevel: 600, studyHours: 24,
effects: [{ stat: 'manaRegen', mode: 'add', valuePerLevel: 2 }],
};
// ═══════════════════════════════════════════════════════════════════════
// STUDY SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const quickLearner: SkillV2Def = {
id: 'quickLearner', name: 'Quick Learner', description: 'Increases study speed',
category: 'study', maxLevel: 10, costPerLevel: 250, studyHours: 4,
effects: [{ stat: 'studySpeed', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const focusedMind: SkillV2Def = {
id: 'focusedMind', name: 'Focused Mind', description: 'Reduces study mana cost',
category: 'study', maxLevel: 10, costPerLevel: 300, studyHours: 5,
effects: [{ stat: 'studyCostMult', mode: 'multiply', valuePerLevel: -0.05 }],
};
export const knowledgeRetention: SkillV2Def = {
id: 'knowledgeRetention', name: 'Knowledge Retention', description: 'Preserves study progress on cancellation',
category: 'study', maxLevel: 3, costPerLevel: 350, studyHours: 5,
effects: [{ stat: 'progressRetention', mode: 'add', valuePerLevel: 0.20 }],
};
// ═══════════════════════════════════════════════════════════════════════
// MEDITATION SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const meditation: SkillV2Def = {
id: 'meditation', name: 'Meditation Focus', description: 'Unlocks meditation regen boost (2.5x at 4hrs)',
category: 'mana', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [{ stat: 'meditationEfficiency', mode: 'multiply', valuePerLevel: 1.5 }],
};
export const deepTrance: SkillV2Def = {
id: 'deepTrance', name: 'Deep Trance', description: 'Extends meditation to 6hrs for 3x',
category: 'mana', maxLevel: 1, costPerLevel: 900, studyHours: 48,
prerequisites: { meditation: 1 },
effects: [{ stat: 'meditationEfficiency', mode: 'multiply', valuePerLevel: 1.8 }],
};
export const voidMeditation: SkillV2Def = {
id: 'voidMeditation', name: 'Void Meditation', description: 'Extends meditation to 8hrs for 5x',
category: 'mana', maxLevel: 1, costPerLevel: 1500, studyHours: 72,
prerequisites: { deepTrance: 1 },
effects: [{ stat: 'meditationEfficiency', mode: 'multiply', valuePerLevel: 2.5 }],
};
-16
View File
@@ -1,16 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// CRAFTING SKILLS (Legacy — kept for store compat)
// ═══════════════════════════════════════════════════════════════════════
export const effCrafting: SkillV2Def = {
id: 'effCrafting', name: 'Eff. Crafting', description: '-10% craft time',
category: 'craft', maxLevel: 1, costPerLevel: 300, studyHours: 4,
effects: [{ stat: 'craftSpeed', mode: 'multiply', valuePerLevel: -0.10 }],
};
export const fieldRepair: SkillV2Def = {
id: 'fieldRepair', name: 'Field Repair', description: '+20% repair efficiency',
category: 'craft', maxLevel: 1, costPerLevel: 350, studyHours: 4,
effects: [{ stat: 'repairSpeed', mode: 'multiply', valuePerLevel: -0.10 }],
};
@@ -1,70 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// PER-ELEMENT CAPACITY SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const fireManaCap: SkillV2Def = {
id: 'fireManaCap', name: 'Fire Mana Capacity', description: '+10% fire capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'fireCap', mode: 'add', valuePerLevel: 10 }],
};
export const waterManaCap: SkillV2Def = {
id: 'waterManaCap', name: 'Water Mana Capacity', description: '+10% water capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'waterCap', mode: 'add', valuePerLevel: 10 }],
};
export const airManaCap: SkillV2Def = {
id: 'airManaCap', name: 'Air Mana Capacity', description: '+10% air capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'airCap', mode: 'add', valuePerLevel: 10 }],
};
export const earthManaCap: SkillV2Def = {
id: 'earthManaCap', name: 'Earth Mana Capacity', description: '+10% earth capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'earthCap', mode: 'add', valuePerLevel: 10 }],
};
export const lightManaCap: SkillV2Def = {
id: 'lightManaCap', name: 'Light Mana Capacity', description: '+10% light capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 250, studyHours: 5,
effects: [{ stat: 'lightCap', mode: 'add', valuePerLevel: 10 }],
};
export const darkManaCap: SkillV2Def = {
id: 'darkManaCap', name: 'Dark Mana Capacity', description: '+10% dark capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 250, studyHours: 5,
effects: [{ stat: 'darkCap', mode: 'add', valuePerLevel: 10 }],
};
export const deathManaCap: SkillV2Def = {
id: 'deathManaCap', name: 'Death Mana Capacity', description: '+10% death capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 300, studyHours: 6,
effects: [{ stat: 'deathCap', mode: 'add', valuePerLevel: 10 }],
};
export const metalManaCap: SkillV2Def = {
id: 'metalManaCap', name: 'Metal Mana Capacity', description: '+10% metal capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 350, studyHours: 6,
effects: [{ stat: 'metalCap', mode: 'add', valuePerLevel: 10 }],
};
export const sandManaCap: SkillV2Def = {
id: 'sandManaCap', name: 'Sand Mana Capacity', description: '+10% sand capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 350, studyHours: 6,
effects: [{ stat: 'sandCap', mode: 'add', valuePerLevel: 10 }],
};
export const lightningManaCap: SkillV2Def = {
id: 'lightningManaCap', name: 'Lightning Mana Capacity', description: '+10% lightning capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 350, studyHours: 6,
effects: [{ stat: 'lightningCap', mode: 'add', valuePerLevel: 10 }],
};
export const transferenceManaCap: SkillV2Def = {
id: 'transferenceManaCap', name: 'Transference Mana Capacity', description: '+10% transference capacity per level',
category: 'mana', maxLevel: 10, costPerLevel: 200, studyHours: 4,
effects: [{ stat: 'transferenceCap', mode: 'add', valuePerLevel: 10 }],
};
-42
View File
@@ -1,42 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// ENCHANTING SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const enchanting: SkillV2Def = {
id: 'enchanting', name: 'Enchanting', description: 'Unlocks enchantment design',
category: 'enchant', maxLevel: 10, costPerLevel: 200, studyHours: 5,
attunementRequired: 'enchanter',
effects: [
{ stat: 'enchantCapacity', mode: 'add', valuePerLevel: 10 },
{ stat: 'enchantSpeed', mode: 'multiply', valuePerLevel: -0.02 },
],
};
export const efficientEnchant: SkillV2Def = {
id: 'efficientEnchant', name: 'Efficient Enchant', description: 'Reduces capacity cost',
category: 'enchant', maxLevel: 5, costPerLevel: 350, studyHours: 6,
prerequisites: { enchanting: 3 }, attunementRequired: 'enchanter',
effects: [{ stat: 'enchantCapacity', mode: 'multiply', valuePerLevel: -0.05 }],
};
export const enchantSpeed: SkillV2Def = {
id: 'enchantSpeed', name: 'Enchant Speed', description: 'Reduces enchantment time',
category: 'enchant', maxLevel: 5, costPerLevel: 300, studyHours: 4,
prerequisites: { enchanting: 2 }, attunementRequired: 'enchanter',
effects: [{ stat: 'enchantSpeed', mode: 'multiply', valuePerLevel: -0.10 }],
};
export const essenceRefining: SkillV2Def = {
id: 'essenceRefining', name: 'Essence Refining', description: 'Increases enchantment power',
category: 'enchant', maxLevel: 3, costPerLevel: 400, studyHours: 7,
prerequisites: { enchanting: 4 }, attunementRequired: 'enchanter',
effects: [{ stat: 'enchantPower', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const disenchanting: SkillV2Def = {
id: 'disenchanting', name: 'Disenchanting', description: 'Recover mana on removal',
category: 'enchant', maxLevel: 3, costPerLevel: 300, studyHours: 3,
prerequisites: { enchanting: 2 }, attunementRequired: 'enchanter',
effects: [{ stat: 'disenchantRecovery', mode: 'add', valuePerLevel: 0.20 }],
};
@@ -1,25 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// GOLEMANCY SKILLS
// ═══════════════════════════════════════════════════════════════════════
export const golemMastery: SkillV2Def = {
id: 'golemMastery', name: 'Golem Mastery', description: '+10% golem damage per level',
category: 'golemancy', maxLevel: 10, costPerLevel: 300, studyHours: 6,
attunementRequired: 'fabricator',
effects: [{ stat: 'golemDamage', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const golemEfficiency: SkillV2Def = {
id: 'golemEfficiency', name: 'Golem Efficiency', description: '+5% golem attack speed per level',
category: 'golemancy', maxLevel: 10, costPerLevel: 350, studyHours: 6,
attunementRequired: 'fabricator',
effects: [{ stat: 'attackSpeed', mode: 'multiply', valuePerLevel: -0.05 }],
};
export const golemLongevity: SkillV2Def = {
id: 'golemLongevity', name: 'Golem Longevity', description: '+1 floor duration per level',
category: 'golemancy', maxLevel: 10, costPerLevel: 500, studyHours: 8,
attunementRequired: 'fabricator',
effects: [{ stat: 'golemDuration', mode: 'add', valuePerLevel: 1 }],
};
-28
View File
@@ -1,28 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// HYBRID SKILLS (require 2 attunements at level 5+)
// ═══════════════════════════════════════════════════════════════════════
export const pactWeaving: SkillV2Def = {
id: 'pactWeaving', name: 'Pact-Weaving', description: 'Weave guardian essence into enchantments',
category: 'hybrid', maxLevel: 10, costPerLevel: 750, studyHours: 15,
effects: [{ stat: 'enchantPower', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const guardianConstructs: SkillV2Def = {
id: 'guardianConstructs', name: 'Guardian Constructs', description: 'Build durable singular golems',
category: 'hybrid', maxLevel: 10, costPerLevel: 800, studyHours: 18,
effects: [
{ stat: 'golemDamage', mode: 'multiply', valuePerLevel: 0.15 },
{ stat: 'golemDuration', mode: 'add', valuePerLevel: 0.25 },
],
};
export const enchantedGolemancy: SkillV2Def = {
id: 'enchantedGolemancy', name: 'Enchanted Golemancy', description: 'Imbue golems with spell logic',
category: 'hybrid', maxLevel: 10, costPerLevel: 850, studyHours: 20,
effects: [
{ stat: 'enchantPower', mode: 'multiply', valuePerLevel: 0.05 },
{ stat: 'golemDamage', mode: 'multiply', valuePerLevel: 0.10 },
],
};
@@ -1,25 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// INVOCATION / PACT SKILLS (Invoker Attunement)
// ═══════════════════════════════════════════════════════════════════════
export const invocation: SkillV2Def = {
id: 'invocation', name: 'Invocation', description: 'Enhances spell invocation',
category: 'invocation', maxLevel: 10, costPerLevel: 300, studyHours: 6,
attunementRequired: 'invoker',
effects: [{ stat: 'spellDamage', mode: 'multiply', valuePerLevel: 0.05 }],
};
export const pactMastery: SkillV2Def = {
id: 'pactMastery', name: 'Pact Mastery', description: 'Enhances pact signing bonuses',
category: 'pact', maxLevel: 10, costPerLevel: 350, studyHours: 6,
attunementRequired: 'invoker',
effects: [{ stat: 'pactMultiplier', mode: 'multiply', valuePerLevel: 0.10 }],
};
export const guardianLore: SkillV2Def = {
id: 'guardianLore', name: 'Guardian Lore', description: '+20% damage vs guardians',
category: 'invocation', maxLevel: 5, costPerLevel: 400, studyHours: 8,
attunementRequired: 'invoker',
effects: [{ stat: 'guardianDamage', mode: 'multiply', valuePerLevel: 0.20 }],
};
-385
View File
@@ -1,385 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// ═══════════════════════════════════════════════════════════════════════
// ELEMENT RESEARCH SKILLS (max:1, long study unlock enchantment effects)
// Kept for store/UI compat; effect unlocks handled via EFFECT_RESEARCH_MAPPING
// ═══════════════════════════════════════════════════════════════════════
export const researchManaSpells: SkillV2Def = {
id: 'researchManaSpells', name: 'Mana Spell Research', description: 'Unlock Mana Strike spell enchantment',
category: 'effectResearch', maxLevel: 1, costPerLevel: 200, studyHours: 4,
effects: [],
};
export const researchFireSpells: SkillV2Def = {
id: 'researchFireSpells', name: 'Fire Spell Research', description: 'Unlock Ember Shot, Fireball spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 300, studyHours: 6,
effects: [],
};
export const researchWaterSpells: SkillV2Def = {
id: 'researchWaterSpells', name: 'Water Spell Research', description: 'Unlock Water Jet, Ice Shard spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 300, studyHours: 6,
effects: [],
};
export const researchAirSpells: SkillV2Def = {
id: 'researchAirSpells', name: 'Air Spell Research', description: 'Unlock Gust, Wind Slash spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 300, studyHours: 6,
effects: [],
};
export const researchEarthSpells: SkillV2Def = {
id: 'researchEarthSpells', name: 'Earth Spell Research', description: 'Unlock Stone Bullet, Rock Spike spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 350, studyHours: 6,
effects: [],
};
export const researchLightSpells: SkillV2Def = {
id: 'researchLightSpells', name: 'Light Spell Research', description: 'Unlock Light Lance, Radiance spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 8,
effects: [],
};
export const researchDarkSpells: SkillV2Def = {
id: 'researchDarkSpells', name: 'Dark Spell Research', description: 'Unlock Shadow Bolt, Dark Pulse spell enchantments',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 8,
effects: [],
};
export const researchLifeDeathSpells: SkillV2Def = {
id: 'researchLifeDeathSpells', name: 'Death Research', description: 'Unlock Drain spell enchantment',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 8,
effects: [],
};
// Tier 2 advanced spell research
export const researchAdvancedFire: SkillV2Def = {
id: 'researchAdvancedFire', name: 'Advanced Fire Research', description: 'Unlock Inferno, Flame Wave',
category: 'effectResearch', maxLevel: 1, costPerLevel: 600, studyHours: 12,
effects: [],
};
export const researchAdvancedWater: SkillV2Def = {
id: 'researchAdvancedWater', name: 'Advanced Water Research', description: 'Unlock Tidal Wave, Ice Storm',
category: 'effectResearch', maxLevel: 1, costPerLevel: 600, studyHours: 12,
effects: [],
};
export const researchAdvancedAir: SkillV2Def = {
id: 'researchAdvancedAir', name: 'Advanced Air Research', description: 'Unlock Hurricane, Wind Blade',
category: 'effectResearch', maxLevel: 1, costPerLevel: 600, studyHours: 12,
effects: [],
};
export const researchAdvancedEarth: SkillV2Def = {
id: 'researchAdvancedEarth', name: 'Advanced Earth Research', description: 'Unlock Earthquake, Stone Barrage',
category: 'effectResearch', maxLevel: 1, costPerLevel: 600, studyHours: 12,
effects: [],
};
export const researchAdvancedLight: SkillV2Def = {
id: 'researchAdvancedLight', name: 'Advanced Light Research', description: 'Unlock Solar Flare, Divine Smite',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 14,
effects: [],
};
export const researchAdvancedDark: SkillV2Def = {
id: 'researchAdvancedDark', name: 'Advanced Dark Research', description: 'Unlock Void Rift, Shadow Storm',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 14,
effects: [],
};
// Tier 3 master spell research
export const researchMasterFire: SkillV2Def = {
id: 'researchMasterFire', name: 'Master Fire Research', description: 'Unlock Pyroclasm',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1200, studyHours: 24,
effects: [],
};
export const researchMasterWater: SkillV2Def = {
id: 'researchMasterWater', name: 'Master Water Research', description: 'Unlock Tsunami',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1200, studyHours: 24,
effects: [],
};
export const researchMasterEarth: SkillV2Def = {
id: 'researchMasterEarth', name: 'Master Earth Research', description: 'Unlock Meteor Strike',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 26,
effects: [],
};
// Combat/misc research
export const researchDamageEffects: SkillV2Def = {
id: 'researchDamageEffects', name: 'Damage Effect Research', description: 'Unlock Minor/Moderate Power, Amplification',
category: 'effectResearch', maxLevel: 1, costPerLevel: 250, studyHours: 5,
effects: [],
};
export const researchCombatEffects: SkillV2Def = {
id: 'researchCombatEffects', name: 'Combat Effect Research', description: 'Unlock Sharp Edge, Swift Casting',
category: 'effectResearch', maxLevel: 1, costPerLevel: 350, studyHours: 6,
effects: [],
};
export const researchManaEffects: SkillV2Def = {
id: 'researchManaEffects', name: 'Mana Effect Research', description: 'Unlock Mana Reserve, Trickle, Mana Tap, weapon mana effects',
category: 'effectResearch', maxLevel: 1, costPerLevel: 200, studyHours: 4,
effects: [],
};
export const researchAdvancedManaEffects: SkillV2Def = {
id: 'researchAdvancedManaEffects', name: 'Advanced Mana Research', description: 'Unlock Mana Reservoir, Stream, River, Surge',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 8,
effects: [],
};
export const researchUtilityEffects: SkillV2Def = {
id: 'researchUtilityEffects', name: 'Utility Effect Research', description: 'Unlock Meditative Focus, Quick Study, Insightful',
category: 'effectResearch', maxLevel: 1, costPerLevel: 300, studyHours: 6,
effects: [],
};
export const researchSpecialEffects: SkillV2Def = {
id: 'researchSpecialEffects', name: 'Special Effect Research', description: 'Unlock Echo Chamber, Siphoning, Bane',
category: 'effectResearch', maxLevel: 1, costPerLevel: 500, studyHours: 10,
effects: [],
};
export const researchOverpower: SkillV2Def = {
id: 'researchOverpower', name: 'Overpower Research', description: 'Unlock Overpower effect',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
// Compound spell research
export const researchMetalSpells: SkillV2Def = {
id: 'researchMetalSpells', name: 'Metal Spell Research', description: 'Unlock Metal Shard, Iron Fist',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchSandSpells: SkillV2Def = {
id: 'researchSandSpells', name: 'Sand Spell Research', description: 'Unlock Sand Blast, Sandstorm',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchLightningSpells: SkillV2Def = {
id: 'researchLightningSpells', name: 'Lightning Spell Research', description: 'Unlock Spark, Lightning Bolt',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchAdvancedMetal: SkillV2Def = {
id: 'researchAdvancedMetal', name: 'Advanced Metal Research', description: 'Unlock Steel Tempest',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedSand: SkillV2Def = {
id: 'researchAdvancedSand', name: 'Advanced Sand Research', description: 'Unlock Desert Wind',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedLightning: SkillV2Def = {
id: 'researchAdvancedLightning', name: 'Advanced Lightning Research', description: 'Unlock Chain Lightning, Storm Call',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchMasterMetal: SkillV2Def = {
id: 'researchMasterMetal', name: 'Master Metal Research', description: 'Unlock Furnace Blast',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 26,
effects: [],
};
export const researchMasterSand: SkillV2Def = {
id: 'researchMasterSand', name: 'Master Sand Research', description: 'Unlock Dune Collapse',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 26,
effects: [],
};
export const researchMasterLightning: SkillV2Def = {
id: 'researchMasterLightning', name: 'Master Lightning Research', description: 'Unlock Thunder Strike',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 26,
effects: [],
};
export const researchTransferenceSpells: SkillV2Def = {
id: 'researchTransferenceSpells', name: 'Transference Spell Research', description: 'Unlock Transfer Strike, Mana Rip',
category: 'effectResearch', maxLevel: 1, costPerLevel: 350, studyHours: 5,
effects: [],
};
export const researchAdvancedTransference: SkillV2Def = {
id: 'researchAdvancedTransference', name: 'Advanced Transference Research', description: 'Unlock Essence Drain',
category: 'effectResearch', maxLevel: 1, costPerLevel: 650, studyHours: 12,
effects: [],
};
export const researchMasterTransference: SkillV2Def = {
id: 'researchMasterTransference', name: 'Master Transference Research', description: 'Unlock Soul Transfer',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 26,
effects: [],
};
// Element capacity research (Tier 2 — +25 per stack)
export const researchAdvancedFireCap: SkillV2Def = {
id: 'researchAdvancedFireCap', name: 'Advanced Fire Capacity Research', description: '+25 fire cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedWaterCap: SkillV2Def = {
id: 'researchAdvancedWaterCap', name: 'Advanced Water Capacity Research', description: '+25 water cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedAirCap: SkillV2Def = {
id: 'researchAdvancedAirCap', name: 'Advanced Air Capacity Research', description: '+25 air cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedEarthCap: SkillV2Def = {
id: 'researchAdvancedEarthCap', name: 'Advanced Earth Capacity Research', description: '+25 earth cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchAdvancedLightCap: SkillV2Def = {
id: 'researchAdvancedLightCap', name: 'Advanced Light Capacity Research', description: '+25 light cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 800, studyHours: 14,
effects: [],
};
export const researchAdvancedDarkCap: SkillV2Def = {
id: 'researchAdvancedDarkCap', name: 'Advanced Dark Capacity Research', description: '+25 dark cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 800, studyHours: 14,
effects: [],
};
export const researchAdvancedDeathCap: SkillV2Def = {
id: 'researchAdvancedDeathCap', name: 'Advanced Death Capacity Research', description: '+25 death cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 900, studyHours: 16,
effects: [],
};
// Tier 3 — Master (+50 per stack)
export const researchMasterFireCap: SkillV2Def = {
id: 'researchMasterFireCap', name: 'Master Fire Capacity Research', description: '+50 fire cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 24,
effects: [],
};
export const researchMasterWaterCap: SkillV2Def = {
id: 'researchMasterWaterCap', name: 'Master Water Capacity Research', description: '+50 water cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 24,
effects: [],
};
export const researchMasterAirCap: SkillV2Def = {
id: 'researchMasterAirCap', name: 'Master Air Capacity Research', description: '+50 air cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 24,
effects: [],
};
export const researchMasterEarthCap: SkillV2Def = {
id: 'researchMasterEarthCap', name: 'Master Earth Capacity Research', description: '+50 earth cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1300, studyHours: 24,
effects: [],
};
export const researchMasterLightCap: SkillV2Def = {
id: 'researchMasterLightCap', name: 'Master Light Capacity Research', description: '+50 light cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1500, studyHours: 28,
effects: [],
};
export const researchMasterDarkCap: SkillV2Def = {
id: 'researchMasterDarkCap', name: 'Master Dark Capacity Research', description: '+50 dark cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1500, studyHours: 28,
effects: [],
};
export const researchMasterDeathCap: SkillV2Def = {
id: 'researchMasterDeathCap', name: 'Master Death Capacity Research', description: '+50 death cap per level',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1600, studyHours: 30,
effects: [],
};
// Compound element capacity research
export const researchMetalCapacity: SkillV2Def = {
id: 'researchMetalCapacity', name: 'Metal Capacity Research', description: '+10 metal cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchAdvancedMetalCap: SkillV2Def = {
id: 'researchAdvancedMetalCap', name: 'Advanced Metal Capacity Research', description: '+25/+50 metal cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchSandCapacity: SkillV2Def = {
id: 'researchSandCapacity', name: 'Sand Capacity Research', description: '+10 sand cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchAdvancedSandCap: SkillV2Def = {
id: 'researchAdvancedSandCap', name: 'Advanced Sand Capacity Research', description: '+25/+50 sand cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
export const researchLightningCapacity: SkillV2Def = {
id: 'researchLightningCapacity', name: 'Lightning Capacity Research', description: '+10 lightning cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 400, studyHours: 6,
effects: [],
};
export const researchAdvancedLightningCap: SkillV2Def = {
id: 'researchAdvancedLightningCap', name: 'Advanced Lightning Capacity Research', description: '+25/+50 lightning cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 700, studyHours: 12,
effects: [],
};
// Exotic capacity research
export const researchCrystalCapacity: SkillV2Def = {
id: 'researchCrystalCapacity', name: 'Crystal Capacity Research', description: '+10 crystal cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1000, studyHours: 12,
effects: [],
};
export const researchAdvancedCrystalCap: SkillV2Def = {
id: 'researchAdvancedCrystalCap', name: 'Advanced Crystal Capacity Research', description: '+25/+50 crystal cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 2000, studyHours: 24,
effects: [],
};
export const researchStellarCapacity: SkillV2Def = {
id: 'researchStellarCapacity', name: 'Stellar Capacity Research', description: '+10 stellar cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1000, studyHours: 12,
effects: [],
};
export const researchAdvancedStellarCap: SkillV2Def = {
id: 'researchAdvancedStellarCap', name: 'Advanced Stellar Capacity Research', description: '+25/+50 stellar cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 2000, studyHours: 24,
effects: [],
};
export const researchVoidCapacity: SkillV2Def = {
id: 'researchVoidCapacity', name: 'Void Capacity Research', description: '+10 void cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 1500, studyHours: 16,
effects: [],
};
export const researchAdvancedVoidCap: SkillV2Def = {
id: 'researchAdvancedVoidCap', name: 'Advanced Void Capacity Research', description: '+25/+50 void cap',
category: 'effectResearch', maxLevel: 1, costPerLevel: 3000, studyHours: 30,
effects: [],
};
-3
View File
@@ -1,3 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
// @ts-expect-error - circular refs resolved at runtime
export { SKILLS_V2 } from './skills-v2-registry';
@@ -1,292 +0,0 @@
import type { SkillV2Def } from './skills-v2-types';
import {
manaWell,
manaFlow,
manaOverflow,
manaTap,
manaSurge,
manaSpring,
quickLearner,
focusedMind,
knowledgeRetention,
meditation,
deepTrance,
voidMeditation,
} from './skills-core';
import {
enchanting,
efficientEnchant,
enchantSpeed,
essenceRefining,
disenchanting,
} from './skills-enchant';
import {
arcaneFury,
combatTraining,
precision,
elementalMastery,
attackSpeed,
armorPiercing,
spellDamage,
} from './skills-combat';
import {
golemMastery,
golemEfficiency,
golemLongevity,
} from './skills-golemancy';
import {
invocation,
pactMastery,
guardianLore,
} from './skills-invocation';
import {
effCrafting,
fieldRepair,
} from './skills-crafting';
import {
fireManaCap,
waterManaCap,
airManaCap,
earthManaCap,
lightManaCap,
darkManaCap,
deathManaCap,
metalManaCap,
sandManaCap,
lightningManaCap,
transferenceManaCap,
} from './skills-element-caps';
import {
pactWeaving,
guardianConstructs,
enchantedGolemancy,
} from './skills-hybrid';
import {
researchManaSpells,
researchFireSpells,
researchWaterSpells,
researchAirSpells,
researchEarthSpells,
researchLightSpells,
researchDarkSpells,
researchLifeDeathSpells,
researchAdvancedFire,
researchAdvancedWater,
researchAdvancedAir,
researchAdvancedEarth,
researchAdvancedLight,
researchAdvancedDark,
researchMasterFire,
researchMasterWater,
researchMasterEarth,
researchDamageEffects,
researchCombatEffects,
researchManaEffects,
researchAdvancedManaEffects,
researchUtilityEffects,
researchSpecialEffects,
researchOverpower,
researchMetalSpells,
researchSandSpells,
researchLightningSpells,
researchAdvancedMetal,
researchAdvancedSand,
researchAdvancedLightning,
researchMasterMetal,
researchMasterSand,
researchMasterLightning,
researchTransferenceSpells,
researchAdvancedTransference,
researchMasterTransference,
researchAdvancedFireCap,
researchAdvancedWaterCap,
researchAdvancedAirCap,
researchAdvancedEarthCap,
researchAdvancedLightCap,
researchAdvancedDarkCap,
researchAdvancedDeathCap,
researchMasterFireCap,
researchMasterWaterCap,
researchMasterAirCap,
researchMasterEarthCap,
researchMasterLightCap,
researchMasterDarkCap,
researchMasterDeathCap,
researchMetalCapacity,
researchAdvancedMetalCap,
researchSandCapacity,
researchAdvancedSandCap,
researchLightningCapacity,
researchAdvancedLightningCap,
researchCrystalCapacity,
researchAdvancedCrystalCap,
researchStellarCapacity,
researchAdvancedStellarCap,
researchVoidCapacity,
researchAdvancedVoidCap,
} from './skills-research';
// Re-export individual skills
export {
manaWell,
manaFlow,
manaOverflow,
manaTap,
manaSurge,
manaSpring,
quickLearner,
focusedMind,
knowledgeRetention,
meditation,
deepTrance,
voidMeditation,
} from './skills-core';
export {
enchanting,
efficientEnchant,
enchantSpeed,
essenceRefining,
disenchanting,
} from './skills-enchant';
export {
arcaneFury,
combatTraining,
precision,
elementalMastery,
attackSpeed,
armorPiercing,
spellDamage,
} from './skills-combat';
export {
golemMastery,
golemEfficiency,
golemLongevity,
} from './skills-golemancy';
export {
invocation,
pactMastery,
guardianLore,
} from './skills-invocation';
export {
effCrafting,
fieldRepair,
} from './skills-crafting';
export {
fireManaCap,
waterManaCap,
airManaCap,
earthManaCap,
lightManaCap,
darkManaCap,
deathManaCap,
metalManaCap,
sandManaCap,
lightningManaCap,
transferenceManaCap,
} from './skills-element-caps';
export {
pactWeaving,
guardianConstructs,
enchantedGolemancy,
} from './skills-hybrid';
export {
researchManaSpells,
researchFireSpells,
researchWaterSpells,
researchAirSpells,
researchEarthSpells,
researchLightSpells,
researchDarkSpells,
researchLifeDeathSpells,
researchAdvancedFire,
researchAdvancedWater,
researchAdvancedAir,
researchAdvancedEarth,
researchAdvancedLight,
researchAdvancedDark,
researchMasterFire,
researchMasterWater,
researchMasterEarth,
researchDamageEffects,
researchCombatEffects,
researchManaEffects,
researchAdvancedManaEffects,
researchUtilityEffects,
researchSpecialEffects,
researchOverpower,
researchMetalSpells,
researchSandSpells,
researchLightningSpells,
researchAdvancedMetal,
researchAdvancedSand,
researchAdvancedLightning,
researchMasterMetal,
researchMasterSand,
researchMasterLightning,
researchTransferenceSpells,
researchAdvancedTransference,
researchMasterTransference,
researchAdvancedFireCap,
researchAdvancedWaterCap,
researchAdvancedAirCap,
researchAdvancedEarthCap,
researchAdvancedLightCap,
researchAdvancedDarkCap,
researchAdvancedDeathCap,
researchMasterFireCap,
researchMasterWaterCap,
researchMasterAirCap,
researchMasterEarthCap,
researchMasterLightCap,
researchMasterDarkCap,
researchMasterDeathCap,
researchMetalCapacity,
researchAdvancedMetalCap,
researchSandCapacity,
researchAdvancedSandCap,
researchLightningCapacity,
researchAdvancedLightningCap,
researchCrystalCapacity,
researchAdvancedCrystalCap,
researchStellarCapacity,
researchAdvancedStellarCap,
researchVoidCapacity,
researchAdvancedVoidCap,
} from './skills-research';
// Build the flat SKILLS_V2 record (legacy compat)
export const SKILLS_V2: Record<string, SkillV2Def> = {
manaWell, manaFlow, manaOverflow, manaTap, manaSurge, manaSpring,
quickLearner, focusedMind, knowledgeRetention,
meditation, deepTrance, voidMeditation,
enchanting, efficientEnchant, enchantSpeed, essenceRefining, disenchanting,
arcaneFury, combatTraining, precision, elementalMastery, attackSpeed, armorPiercing, spellDamage,
golemMastery, golemEfficiency, golemLongevity,
invocation, pactMastery, guardianLore,
effCrafting, fieldRepair,
fireManaCap, waterManaCap, airManaCap, earthManaCap,
lightManaCap, darkManaCap, deathManaCap, metalManaCap,
sandManaCap, lightningManaCap, transferenceManaCap,
pactWeaving, guardianConstructs, enchantedGolemancy,
researchManaSpells, researchFireSpells, researchWaterSpells, researchAirSpells,
researchEarthSpells, researchLightSpells, researchDarkSpells, researchLifeDeathSpells,
researchAdvancedFire, researchAdvancedWater, researchAdvancedAir, researchAdvancedEarth,
researchAdvancedLight, researchAdvancedDark,
researchMasterFire, researchMasterWater, researchMasterEarth,
researchDamageEffects, researchCombatEffects, researchManaEffects,
researchAdvancedManaEffects, researchUtilityEffects, researchSpecialEffects, researchOverpower,
researchMetalSpells, researchSandSpells, researchLightningSpells,
researchAdvancedMetal, researchAdvancedSand, researchAdvancedLightning,
researchMasterMetal, researchMasterSand, researchMasterLightning,
researchTransferenceSpells, researchAdvancedTransference, researchMasterTransference,
researchAdvancedFireCap, researchAdvancedWaterCap, researchAdvancedAirCap, researchAdvancedEarthCap,
researchAdvancedLightCap, researchAdvancedDarkCap, researchAdvancedDeathCap,
researchMasterFireCap, researchMasterWaterCap, researchMasterAirCap, researchMasterEarthCap,
researchMasterLightCap, researchMasterDarkCap, researchMasterDeathCap,
researchMetalCapacity, researchAdvancedMetalCap,
researchSandCapacity, researchAdvancedSandCap,
researchLightningCapacity, researchAdvancedLightningCap,
researchCrystalCapacity, researchAdvancedCrystalCap,
researchStellarCapacity, researchAdvancedStellarCap,
researchVoidCapacity, researchAdvancedVoidCap,
};
-142
View File
@@ -1,142 +0,0 @@
// ─── Skill System v2 Types ─────────────────────────────────────────────────────
// Shared types for the new flat skill system.
export type StatKey =
| 'maxMana'
| 'manaRegen'
| 'clickMana'
| 'elementCap'
| 'studySpeed'
| 'studyCostMult'
| 'meditationEfficiency'
| 'enchantCapacity'
| 'enchantSpeed'
| 'enchantPower'
| 'disenchantRecovery'
| 'baseDamage'
| 'damageMultiplier'
| 'attackSpeed'
| 'critChance'
| 'critMultiplier'
| 'armorPierce'
| 'insightGain'
| 'golemDamage'
| 'golemDuration'
| 'pactMultiplier'
| 'conversionRate'
| 'spellDamage'
| 'guardianDamage'
| 'craftSpeed'
| 'repairSpeed'
// Per-element capacity stats
| 'fireCap'
| 'waterCap'
| 'airCap'
| 'earthCap'
| 'lightCap'
| 'darkCap'
| 'deathCap'
| 'metalCap'
| 'sandCap'
| 'lightningCap'
| 'transferenceCap'
| 'crystalCap'
| 'stellarCap'
| 'voidCap';
export interface SkillEffect {
stat: StatKey;
mode: 'add' | 'multiply';
valuePerLevel: number;
}
export interface SkillV2Def {
id: string;
name: string;
description: string;
category: string;
maxLevel: number;
costPerLevel: number;
studyHours: number;
effects: SkillEffect[];
attunementRequired?: string;
prerequisites?: Record<string, number>;
}
export interface ComputedStats {
maxMana: number;
manaRegen: number;
clickMana: number;
elementCap: number;
studySpeed: number;
studyCostMult: number;
meditationEfficiency: number;
enchantCapacity: number;
enchantSpeed: number;
enchantPower: number;
disenchantRecovery: number;
baseDamage: number;
damageMultiplier: number;
attackSpeed: number;
critChance: number;
critMultiplier: number;
armorPierce: number;
insightGain: number;
golemDamage: number;
golemDuration: number;
pactMultiplier: number;
conversionRate: number;
spellDamage: number;
guardianDamage: number;
craftSpeed: number;
repairSpeed: number;
// Per-element capacity (for direct skill contributions)
fireCap: number;
waterCap: number;
airCap: number;
earthCap: number;
lightCap: number;
darkCap: number;
deathCap: number;
metalCap: number;
sandCap: number;
lightningCap: number;
transferenceCap: number;
crystalCap: number;
stellarCap: number;
voidCap: number;
}
// Default base stats (all skills at zero, no equipment, no prestige)
export const BASE_STATS: ComputedStats = {
maxMana: 100,
manaRegen: 2,
clickMana: 1,
elementCap: 10,
studySpeed: 1,
studyCostMult: 1,
meditationEfficiency: 1,
enchantCapacity: 100,
enchantSpeed: 1,
enchantPower: 1,
disenchantRecovery: 1,
baseDamage: 5,
damageMultiplier: 1,
attackSpeed: 1,
critChance: 0,
critMultiplier: 1.5,
armorPierce: 0,
insightGain: 1,
golemDamage: 1,
golemDuration: 1,
pactMultiplier: 1,
conversionRate: 1,
spellDamage: 1,
guardianDamage: 1,
craftSpeed: 1,
repairSpeed: 1,
fireCap: 0, waterCap: 0, airCap: 0, earthCap: 0,
lightCap: 0, darkCap: 0, deathCap: 0,
metalCap: 0, sandCap: 0, lightningCap: 0,
transferenceCap: 0, crystalCap: 0, stellarCap: 0, voidCap: 0,
};
-269
View File
@@ -1,269 +0,0 @@
import type { SkillV2Def, SkillEffect, StatKey, ComputedStats } from './skills-v2-types';
import { SKILLS_V2 } from './skills-v2-defs';
// Re-export individual skills from category modules
export {
manaWell,
manaFlow,
manaOverflow,
manaTap,
manaSurge,
manaSpring,
quickLearner,
focusedMind,
knowledgeRetention,
meditation,
deepTrance,
voidMeditation,
} from './skills-core';
export {
enchanting,
efficientEnchant,
enchantSpeed,
essenceRefining,
disenchanting,
} from './skills-enchant';
export {
arcaneFury,
combatTraining,
precision,
elementalMastery,
attackSpeed,
armorPiercing,
spellDamage,
} from './skills-combat';
export {
golemMastery,
golemEfficiency,
golemLongevity,
} from './skills-golemancy';
export {
invocation,
pactMastery,
guardianLore,
} from './skills-invocation';
export {
effCrafting,
fieldRepair,
} from './skills-crafting';
export {
fireManaCap,
waterManaCap,
airManaCap,
earthManaCap,
lightManaCap,
darkManaCap,
deathManaCap,
metalManaCap,
sandManaCap,
lightningManaCap,
transferenceManaCap,
} from './skills-element-caps';
export {
pactWeaving,
guardianConstructs,
enchantedGolemancy,
} from './skills-hybrid';
export {
researchManaSpells,
researchFireSpells,
researchWaterSpells,
researchAirSpells,
researchEarthSpells,
researchLightSpells,
researchDarkSpells,
researchLifeDeathSpells,
researchAdvancedFire,
researchAdvancedWater,
researchAdvancedAir,
researchAdvancedEarth,
researchAdvancedLight,
researchAdvancedDark,
researchMasterFire,
researchMasterWater,
researchMasterEarth,
researchDamageEffects,
researchCombatEffects,
researchManaEffects,
researchAdvancedManaEffects,
researchUtilityEffects,
researchSpecialEffects,
researchOverpower,
researchMetalSpells,
researchSandSpells,
researchLightningSpells,
researchAdvancedMetal,
researchAdvancedSand,
researchAdvancedLightning,
researchMasterMetal,
researchMasterSand,
researchMasterLightning,
researchTransferenceSpells,
researchAdvancedTransference,
researchMasterTransference,
researchAdvancedFireCap,
researchAdvancedWaterCap,
researchAdvancedAirCap,
researchAdvancedEarthCap,
researchAdvancedLightCap,
researchAdvancedDarkCap,
researchAdvancedDeathCap,
researchMasterFireCap,
researchMasterWaterCap,
researchMasterAirCap,
researchMasterEarthCap,
researchMasterLightCap,
researchMasterDarkCap,
researchMasterDeathCap,
researchMetalCapacity,
researchAdvancedMetalCap,
researchSandCapacity,
researchAdvancedSandCap,
researchLightningCapacity,
researchAdvancedLightningCap,
researchCrystalCapacity,
researchAdvancedCrystalCap,
researchStellarCapacity,
researchAdvancedStellarCap,
researchVoidCapacity,
researchAdvancedVoidCap,
} from './skills-research';
export { SKILLS_V2 };
// Default Base Stats
export const BASE_STATS: ComputedStats = {
maxMana: 100,
manaRegen: 2,
clickMana: 1,
elementCap: 10,
studySpeed: 1,
studyCostMult: 1,
meditationEfficiency: 1,
enchantCapacity: 100,
enchantSpeed: 1,
enchantPower: 1,
disenchantRecovery: 1,
baseDamage: 5,
damageMultiplier: 1,
attackSpeed: 1,
critChance: 0,
critMultiplier: 1.5,
armorPierce: 0,
insightGain: 1,
golemDamage: 1,
golemDuration: 1,
pactMultiplier: 1,
conversionRate: 1,
spellDamage: 1,
guardianDamage: 1,
craftSpeed: 1,
repairSpeed: 1,
fireCap: 0, waterCap: 0, airCap: 0, earthCap: 0,
lightCap: 0, darkCap: 0, deathCap: 0,
metalCap: 0, sandCap: 0, lightningCap: 0,
transferenceCap: 0, crystalCap: 0, stellarCap: 0, voidCap: 0,
elementalDamage: 1,
};
const ELEMENT_CAP_STATS: Record<string, keyof ComputedStats> = {
fire: 'fireCap', water: 'waterCap', air: 'airCap', earth: 'earthCap',
light: 'lightCap', dark: 'darkCap', death: 'deathCap', metal: 'metalCap',
sand: 'sandCap', lightning: 'lightningCap', transference: 'transferenceCap',
crystal: 'crystalCap', stellar: 'stellarCap', void: 'voidCap',
};
/**
* Compute all game stats from skill levels.
*/
export function computeStats(
skills: Record<string, number>,
prestigeUpgrades: Record<string, number> = {}
): ComputedStats {
const stats: ComputedStats = { ...BASE_STATS };
for (const [skillId, level] of Object.entries(skills)) {
if (level <= 0) continue;
const def = SKILLS_V2[skillId];
if (!def) continue;
for (const effect of def.effects) {
const key = effect.stat as keyof ComputedStats;
const currentVal = stats[key] as number;
if (effect.mode === 'add') {
(stats[key] as number) = currentVal + effect.valuePerLevel * level;
} else {
const perLevelMultiplier = 1 + effect.valuePerLevel;
let result = currentVal;
for (let i = 0; i < level; i++) result *= perLevelMultiplier;
(stats[key] as number) = result;
}
}
}
if (prestigeUpgrades.manaWell) stats.maxMana += prestigeUpgrades.manaWell * 500;
if (prestigeUpgrades.manaFlow) stats.manaRegen += prestigeUpgrades.manaFlow * 0.5;
if (prestigeUpgrades.elementalAttune) stats.elementCap += prestigeUpgrades.elementalAttune * 25;
if (prestigeUpgrades.pactBinding) stats.pactMultiplier += prestigeUpgrades.pactBinding * 0.1;
if (prestigeUpgrades.insightAmp) stats.insightGain *= 1 + prestigeUpgrades.insightAmp * 0.25;
let elementCapFromSkills = 0;
for (const [, statKey] of Object.entries(ELEMENT_CAP_STATS)) {
const val = stats[statKey] as number;
if (val > 0) elementCapFromSkills += val;
}
if (elementCapFromSkills > 0) stats.elementCap += elementCapFromSkills;
stats.maxMana = Math.max(1, Math.round(stats.maxMana));
stats.manaRegen = Math.round(stats.manaRegen * 100) / 100;
stats.clickMana = Math.max(1, stats.clickMana);
stats.elementCap = Math.max(10, Math.round(stats.elementCap));
stats.baseDamage = Math.max(1, Math.round(stats.baseDamage));
stats.critChance = Math.min(1, Math.max(0, stats.critChance));
stats.armorPierce = Math.min(1, Math.max(0, stats.armorPierce));
stats.attackSpeed = Math.max(0.1, stats.attackSpeed);
stats.insightGain = Math.max(0, stats.insightGain);
stats.golemDamage = Math.max(0.1, stats.golemDamage);
stats.golemDuration = Math.max(1, stats.golemDuration);
stats.enchantCapacity = Math.max(10, Math.round(stats.enchantCapacity));
stats.conversionRate = Math.max(0, stats.conversionRate);
return stats;
}
/**
* Get the base key for a tiered skill (strips _tN suffix).
*/
export function getBaseSkillId(skillId: string): string {
const match = skillId.match(/^(.+?)_t(\d+)$/);
return match ? match[1] : skillId;
}
/**
* Check if a skill has prerequisites that are met.
*/
export function hasPrerequisites(
skills: Record<string, number>,
prerequisites?: Record<string, number>
): boolean {
if (!prerequisites) return true;
for (const [reqId, reqLevel] of Object.entries(prerequisites)) {
if ((skills[reqId] || 0) < reqLevel) return false;
}
return true;
}
/** Legacy compat wrapper */
export function computeStatsLegacy(state: {
skills: Record<string, number>;
prestigeUpgrades?: Record<string, number>;
}): ComputedStats {
return computeStats(state.skills, state.prestigeUpgrades || {});
}
-348
View File
@@ -1,348 +0,0 @@
// ─── Skills ───────────────────────────────────────────────────────────────────
import type { SkillDef } from '../types';
export const SKILLS_DEF: Record<string, SkillDef> = {
// 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 },
// Per-mana-type capacity upgrades (Bug 9)
fireManaCap: { name: "Fire Mana Capacity +10%", desc: "+10% fire mana capacity", cat: "mana", max: 10, base: 200, studyTime: 4, cost: { type: 'element', element: 'fire', amount: 100 } },
waterManaCap: { name: "Water Mana Capacity +10%", desc: "+10% water mana capacity", cat: "mana", max: 10, base: 200, studyTime: 4, cost: { type: 'element', element: 'water', amount: 100 } },
airManaCap: { name: "Air Mana Capacity +10%", desc: "+10% air mana capacity", cat: "mana", max: 10, base: 200, studyTime: 4, cost: { type: 'element', element: 'air', amount: 100 } },
earthManaCap: { name: "Earth Mana Capacity +10%", desc: "+10% earth mana capacity", cat: "mana", max: 10, base: 200, studyTime: 4, cost: { type: 'element', element: 'earth', amount: 100 } },
lightManaCap: { name: "Light Mana Capacity +10%", desc: "+10% light mana capacity", cat: "mana", max: 10, base: 250, studyTime: 5, cost: { type: 'element', element: 'light', amount: 150 } },
darkManaCap: { name: "Dark Mana Capacity +10%", desc: "+10% dark mana capacity", cat: "mana", max: 10, base: 250, studyTime: 5, cost: { type: 'element', element: 'dark', amount: 150 } },
deathManaCap: { name: "Death Mana Capacity +10%", desc: "+10% death mana capacity", cat: "mana", max: 10, base: 300, studyTime: 6, cost: { type: 'element', element: 'death', amount: 200 } },
// Composite element capacity upgrades
metalManaCap: { name: "Metal Mana Capacity +10%", desc: "+10% metal mana capacity", cat: "mana", max: 10, base: 350, studyTime: 6, cost: { type: 'element', element: 'metal', amount: 250 } },
sandManaCap: { name: "Sand Mana Capacity +10%", desc: "+10% sand mana capacity", cat: "mana", max: 10, base: 350, studyTime: 6, cost: { type: 'element', element: 'sand', amount: 250 } },
lightningManaCap: { name: "Lightning Mana Capacity +10%", desc: "+10% lightning mana capacity", cat: "mana", max: 10, base: 350, studyTime: 6, cost: { type: 'element', element: 'lightning', amount: 250 } },
// Utility mana capacity upgrades
transferenceManaCap: { name: "Transference Mana Capacity +10%", desc: "+10% transference mana capacity", cat: "mana", max: 10, base: 200, studyTime: 4, cost: { type: 'element', element: 'transference', amount: 100 } },
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: "mana", 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 } },
enchantSpeed: { name: "Enchant Speed", desc: "-10% enchantment time", cat: "enchant", max: 5, base: 300, studyTime: 4, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } },
essenceRefining: { name: "Essence Refining", desc: "+10% enchantment effect power", cat: "enchant", max: 1, 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: 1, base: 300, studyTime: 4 },
fieldRepair: { name: "Field Repair", desc: "+15% repair efficiency", cat: "craft", max: 1, base: 350, studyTime: 4 },
elemCrafting: { name: "Elem. Crafting", desc: "+25% craft output", cat: "craft", max: 1, base: 500, req: { effCrafting: 1 }, 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 }, cost: { type: 'element', element: 'transference', amount: 100 }, 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 }, cost: { type: 'element', element: 'fire', amount: 100 }, 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 }, cost: { type: 'element', element: 'water', amount: 100 }, 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 }, cost: { type: 'element', element: 'air', amount: 100 }, 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 }, cost: { type: 'element', element: 'earth', amount: 100 }, 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 }, cost: { type: 'element', element: 'light', amount: 100 }, 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 }, cost: { type: 'element', element: 'dark', amount: 100 }, attunementReq: { enchanter: 2 } },
researchLifeDeathSpells: { name: "Death Research", desc: "Unlock Drain spell enchantment", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, cost: { type: 'element', element: 'death', amount: 100 }, 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 }, cost: { type: 'element', element: 'fire', amount: 100 }, 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 }, cost: { type: 'element', element: 'water', amount: 100 }, 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 }, cost: { type: 'element', element: 'air', amount: 100 }, 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 }, cost: { type: 'element', element: 'earth', amount: 100 }, 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 }, cost: { type: 'element', element: 'light', amount: 100 }, 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 }, cost: { type: 'element', element: 'dark', amount: 100 }, 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 }, cost: { type: 'element', element: 'fire', amount: 200 }, 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 }, cost: { type: 'element', element: 'water', amount: 200 }, 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 }, cost: { type: 'element', element: 'earth', amount: 200 }, 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 }, cost: { type: 'element', element: 'metal', amount: 100 }, 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 }, cost: { type: 'element', element: 'sand', amount: 100 }, 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 }, cost: { type: 'element', element: 'lightning', amount: 100 }, 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 }, cost: { type: 'element', element: 'metal', amount: 100 }, 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 }, cost: { type: 'element', element: 'sand', amount: 100 }, 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 }, cost: { type: 'element', element: 'lightning', amount: 100 }, 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 }, cost: { type: 'element', element: 'metal', amount: 200 }, 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 }, cost: { type: 'element', element: 'sand', amount: 200 }, 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 }, cost: { type: 'element', element: 'lightning', amount: 200 }, 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: "mana", max: 1, base: 300, studyTime: 12 },
manaSurge: { name: "Mana Surge", desc: "+3 mana/click", cat: "mana", max: 1, base: 800, studyTime: 36, req: { manaTap: 1 } },
manaSpring: { name: "Mana Spring", desc: "+2 mana regen", cat: "mana", max: 1, base: 600, studyTime: 24 },
deepTrance: { name: "Deep Trance", desc: "Extend meditation bonus to 6hrs for 3x", cat: "mana", max: 1, base: 900, studyTime: 48, req: { meditation: 1 } },
voidMeditation:{ name: "Void Meditation", desc: "Extend meditation bonus to 8hrs for 5x", cat: "mana", max: 1, base: 1500, studyTime: 72, req: { deepTrance: 1 } },
// ═══════════════════════════════════════════════════════════════════════════
// INVOKER SKILLS - Require Invoker attunement
// ═══════════════════════════════════════════════════════════════════════════
// Invocation - Invoker attunement skill
invocation: {
name: "Invocation",
desc: "Enhances spell invocation and guardian pacts",
cat: "invocation",
attunement: 'invoker',
max: 10,
base: 300,
studyTime: 6,
attunementReq: { invoker: 1 }
},
// Pact Mastery - Invoker attunement skill
pactMastery: {
name: "Pact Mastery",
desc: "Enhances pact signing and guardian bonuses",
cat: "pact",
attunement: 'invoker',
max: 10,
base: 350,
studyTime: 6,
attunementReq: { invoker: 1 }
},
// ═══════════════════════════════════════════════════════════════════════════
// GOLEMANCY SKILLS - Require Fabricator attunement
// ═══════════════════════════════════════════════════════════════════════════
// Core Golemancy
golemMastery: { name: "Golem Mastery", desc: "+10% golem damage", cat: "golemancy", max: 1, base: 300, studyTime: 6, attunementReq: { fabricator: 2 } },
golemEfficiency: { name: "Golem Efficiency", desc: "+5% golem attack speed", cat: "golemancy", max: 1, base: 350, studyTime: 6, attunementReq: { fabricator: 2 } },
golemLongevity: { name: "Golem Longevity", desc: "+1 floor duration", cat: "golemancy", max: 1, base: 500, studyTime: 8, attunementReq: { fabricator: 3 } },
golemSiphon: { name: "Golem Siphon", desc: "-10% golem maintenance", cat: "golemancy", max: 1, base: 400, studyTime: 8, attunementReq: { fabricator: 3 } },
// Advanced Golemancy
advancedGolemancy: { name: "Advanced Golemancy", desc: "Unlock hybrid golem recipes", cat: "golemancy", max: 1, base: 800, studyTime: 16, req: { golemMastery: 1 }, attunementReq: { fabricator: 5 } },
golemResonance: { name: "Golem Resonance", desc: "+1 golem slot at Fabricator 10", cat: "golemancy", max: 1, base: 1200, studyTime: 24, req: { golemMastery: 1 }, attunementReq: { fabricator: 8 } },
// ═══════════════════════════════════════════════════════════════════════════
// HYBRID SKILLS - Require TWO attunements at level 5+
// ═══════════════════════════════════════════════════════════════════════════
// Pact-Weaving (Invoker + Enchanter)
pactWeaving: {
name: "Pact-Weaving",
desc: "Weave Guardian essence into weapon enchantments OR world-effects",
cat: "hybrid",
max: 10,
base: 750,
studyTime: 15,
attunementReq: { invoker: 5, enchanter: 5 }
},
// Guardian Constructs (Fabricator + Invoker)
guardianConstructs: {
name: "Guardian Constructs",
desc: "Build monumental, singular golems. Only 1 active at a time, vastly more durable, costs less maintenance.",
cat: "hybrid",
max: 10,
base: 800,
studyTime: 18,
attunementReq: { fabricator: 5, invoker: 5 }
},
// Enchanted Golemancy (Fabricator + Enchanter)
enchantedGolemancy: {
name: "Enchanted Golemancy",
desc: "Imbuing golems with elemental spell logic",
cat: "hybrid",
max: 10,
base: 850,
studyTime: 20,
attunementReq: { fabricator: 5, enchanter: 5 }
},
};
// ─── 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 },
// Research category moved to Mana (Bug 12)
// 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 },
];
// ─── Effect Research Mapping ───────────────────────────────────────────────────
// Maps research skill IDs to the effect IDs they unlock
export const EFFECT_RESEARCH_MAPPING: Record<string, string[]> = {
// 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'],
// ═══════════════════════════════════════════════════════════════════════════
// PER-ELEMENT CAPACITY RESEARCH - Unlocks per-element capacity effects
// ═══════════════════════════════════════════════════════════════════════════
// Basic Element Capacity Effects (Tier 1 - +10 per stack)
researchFireCapacity: ['fire_cap_10'],
researchWaterCapacity: ['water_cap_10'],
researchAirCapacity: ['air_cap_10'],
researchEarthCapacity: ['earth_cap_10'],
researchLightCapacity: ['light_cap_10'],
researchDarkCapacity: ['dark_cap_10'],
researchDeathCapacity: ['death_cap_10'],
// Advanced Element Capacity Effects (Tier 2 - +25 per stack)
researchAdvancedFireCap: ['fire_cap_25'],
researchAdvancedWaterCap: ['water_cap_25'],
researchAdvancedAirCap: ['air_cap_25'],
researchAdvancedEarthCap: ['earth_cap_25'],
researchAdvancedLightCap: ['light_cap_25'],
researchAdvancedDarkCap: ['dark_cap_25'],
researchAdvancedDeathCap: ['death_cap_25'],
// Master Element Capacity Effects (Tier 3 - +50 per stack)
researchMasterFireCap: ['fire_cap_50'],
researchMasterWaterCap: ['water_cap_50'],
researchMasterAirCap: ['air_cap_50'],
researchMasterEarthCap: ['earth_cap_50'],
researchMasterLightCap: ['light_cap_50'],
researchMasterDarkCap: ['dark_cap_50'],
researchMasterDeathCap: ['death_cap_50'],
// Composite Element Capacity Effects
researchMetalCapacity: ['metal_cap_10'],
researchAdvancedMetalCap: ['metal_cap_25', 'metal_cap_50'],
researchSandCapacity: ['sand_cap_10'],
researchAdvancedSandCap: ['sand_cap_25', 'sand_cap_50'],
researchLightningCapacity: ['lightning_cap_10'],
researchAdvancedLightningCap: ['lightning_cap_25', 'lightning_cap_50'],
// Exotic Element Capacity Effects
researchCrystalCapacity: ['crystal_cap_10'],
researchAdvancedCrystalCap: ['crystal_cap_25', 'crystal_cap_50'],
researchStellarCapacity: ['stellar_cap_10'],
researchAdvancedStellarCap: ['stellar_cap_25', 'stellar_cap_50'],
researchVoidCapacity: ['void_cap_10'],
researchAdvancedVoidCap: ['void_cap_25', 'void_cap_50'],
};
// 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'];