diff --git a/src/components/game/tabs/SkillsTab.tsx b/src/components/game/tabs/SkillsTab.tsx
index 92e4d97..e1f2bf0 100755
--- a/src/components/game/tabs/SkillsTab.tsx
+++ b/src/components/game/tabs/SkillsTab.tsx
@@ -186,6 +186,21 @@ export function SkillsTab({ store }: SkillsTabProps) {
const tierDef = SKILL_EVOLUTION_PATHS[id]?.tiers.find(t => t.tier === currentTier);
const skillDisplayName = tierDef?.name || def.name;
+ // Check attunement requirements
+ let attunementMet = true;
+ let attunementReqText = '';
+ if (def.attunement) {
+ const attState = store.attunements?.[def.attunement];
+ const requiredLevel = def.attunementLevel || 1;
+ if (!attState?.active) {
+ attunementMet = false;
+ attunementReqText = `Requires ${def.attunement.charAt(0).toUpperCase() + def.attunement.slice(1)} attunement`;
+ } else if ((attState.level || 1) < requiredLevel) {
+ attunementMet = false;
+ attunementReqText = `Requires ${def.attunement.charAt(0).toUpperCase() + def.attunement.slice(1)} Lv.${requiredLevel}`;
+ }
+ }
+
// Check prerequisites
let prereqMet = true;
if (def.req) {
@@ -212,7 +227,7 @@ export function SkillsTab({ store }: SkillsTabProps) {
const cost = Math.floor(baseCost * costMult);
// Can start studying?
- const canStudy = !maxed && prereqMet && store.rawMana >= cost && !isStudying;
+ const canStudy = !maxed && attunementMet && prereqMet && store.rawMana >= cost && !isStudying;
// Check for milestone upgrades
const milestoneInfo = hasMilestoneUpgrade(tieredSkillId, level, store.skillTiers || {}, store.skillUpgrades);
@@ -254,6 +269,11 @@ export function SkillsTab({ store }: SkillsTabProps) {
)}
{def.desc}{currentTier > 1 && ` (Tier ${currentTier}: ${fmtDec(tierMultiplier, 0)}x effect)`}
+ {!attunementMet && attunementReqText && (
+
+ 🔒 {attunementReqText}
+
+ )}
{!prereqMet && def.req && (
Requires: {Object.entries(def.req).map(([r, rl]) => `${SKILLS_DEF[r]?.name} Lv.${rl}`).join(', ')}
diff --git a/src/lib/game/constants.ts b/src/lib/game/constants.ts
index 0c9ac2f..30bc8f2 100755
--- a/src/lib/game/constants.ts
+++ b/src/lib/game/constants.ts
@@ -651,82 +651,140 @@ export const SPELLS_DEF: Record = {
};
// ─── Skills ───────────────────────────────────────────────────────────────────
+// Skills are organized by attunement - each attunement has its own skill tree
+// Core skills are available to everyone, attunement skills require the attunement
export const SKILLS_DEF: Record = {
- // Mana Skills (4-8 hours study)
+ // ═══════════════════════════════════════════════════════════════════════════
+ // CORE SKILLS (Always Available)
+ // ═══════════════════════════════════════════════════════════════════════════
+
+ // Mana Skills (foundation for all mana manipulation)
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 },
+ 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 },
- // Study Skills (3-6 hours study)
+ // Study Skills (improve learning efficiency)
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 },
+ deepTrance: { name: "Deep Trance", desc: "Extend meditation to 6hrs for 3x", cat: "study", max: 1, base: 900, studyTime: 48, req: { meditation: 1 } },
+ voidMeditation:{ name: "Void Meditation", desc: "Extend meditation to 8hrs for 5x", cat: "study", max: 1, base: 1500, studyTime: 72, req: { deepTrance: 1 } },
- // Enchanting Skills (4-8 hours study) - Core crafting system
- enchanting: { name: "Enchanting", desc: "Unlocks enchantment design", cat: "enchant", max: 10, base: 200, studyTime: 5 },
- efficientEnchant:{ name: "Efficient Enchant", desc: "-5% enchantment capacity cost", cat: "enchant", max: 5, base: 350, studyTime: 6, req: { enchanting: 3 } },
- disenchanting: { name: "Disenchanting", desc: "Recover 20% mana from removed enchantments", cat: "enchant", max: 3, base: 400, studyTime: 6, req: { enchanting: 2 } },
- enchantSpeed: { name: "Enchant Speed", desc: "-10% enchantment time", cat: "enchant", max: 5, base: 300, studyTime: 4, req: { enchanting: 2 } },
- scrollCrafting: { name: "Scroll Crafting", desc: "Create scrolls to store enchantment designs", cat: "enchant", max: 3, base: 500, studyTime: 8, req: { enchanting: 5 } },
- essenceRefining: { name: "Essence Refining", desc: "+10% enchantment effect power", cat: "enchant", max: 5, base: 450, studyTime: 7, req: { enchanting: 4 } },
-
- // Crafting Skills (4-6 hours study)
- 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 },
-
- // Effect Research Skills (unlock enchantment effects for designing)
- // 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 } },
- researchFireSpells: { name: "Fire Spell Research", desc: "Unlock Ember Shot, Fireball spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
- researchWaterSpells: { name: "Water Spell Research", desc: "Unlock Water Jet, Ice Shard spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
- researchAirSpells: { name: "Air Spell Research", desc: "Unlock Gust, Wind Slash spell enchantments", cat: "effectResearch", max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
- researchEarthSpells: { name: "Earth Spell Research", desc: "Unlock Stone Bullet, Rock Spike spell enchantments", cat: "effectResearch", max: 1, base: 350, studyTime: 6, req: { enchanting: 2 } },
- researchLightSpells: { name: "Light Spell Research", desc: "Unlock Light Lance, Radiance spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
- researchDarkSpells: { name: "Dark Spell Research", desc: "Unlock Shadow Bolt, Dark Pulse spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
- researchLifeDeathSpells: { name: "Life & Death Research", desc: "Unlock Drain, Life Tap spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
-
- // Tier 2 - Advanced Spell Effects
- 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 } },
- 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 } },
- 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 } },
- 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 } },
- 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 } },
- 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 } },
-
- // Tier 3 - Master Spell Effects
- researchMasterFire: { name: "Master Fire Research", desc: "Unlock Pyroclasm spell enchantment", cat: "effectResearch", max: 1, base: 1200, studyTime: 24, req: { researchAdvancedFire: 1, enchanting: 7 } },
- researchMasterWater: { name: "Master Water Research", desc: "Unlock Tsunami spell enchantment", cat: "effectResearch", max: 1, base: 1200, studyTime: 24, req: { researchAdvancedWater: 1, enchanting: 7 } },
- researchMasterEarth: { name: "Master Earth Research", desc: "Unlock Meteor Strike spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedEarth: 1, enchanting: 8 } },
-
- // 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 } },
- 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 } },
-
- // Mana Effect Research
- researchManaEffects: { name: "Mana Effect Research", desc: "Unlock Mana Reserve, Trickle, Mana Tap effects", cat: "effectResearch", max: 1, base: 200, studyTime: 4, req: { enchanting: 1 } },
- researchAdvancedManaEffects: { name: "Advanced Mana Research", desc: "Unlock Mana Reservoir, Stream, River, Mana Surge effects", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { researchManaEffects: 1, enchanting: 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 } },
-
- // 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 } },
- researchOverpower: { name: "Overpower Research", desc: "Unlock Overpower effect", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchSpecialEffects: 1, enchanting: 5 } },
-
- // Research Skills (longer study times: 12-72 hours)
- 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)
+ // Ascension Skills (powerful effects for endgame)
insightHarvest: { name: "Insight Harvest", desc: "+10% insight gain", cat: "ascension", max: 5, base: 1000, studyTime: 20 },
- temporalMemory: { name: "Temporal Memory", desc: "Keep 1 spell learned across loops", cat: "ascension", max: 3, base: 2000, studyTime: 36 },
+ temporalMemory: { name: "Temporal Memory", desc: "Keep 1 spell across loops", cat: "ascension", max: 3, base: 2000, studyTime: 36 },
guardianBane: { name: "Guardian Bane", desc: "+20% dmg vs guardians", cat: "ascension", max: 3, base: 1500, studyTime: 30 },
+
+ // ═══════════════════════════════════════════════════════════════════════════
+ // ENCHANTER SKILLS (Right Hand Attunement)
+ // Transference mana flows through your right hand for enchanting
+ // ═══════════════════════════════════════════════════════════════════════════
+
+ // Basic Enchanting (Lv 1)
+ enchanting: { name: "Enchanting", desc: "Unlocks enchantment design", cat: "enchant", attunement: 'enchanter', attunementLevel: 1, max: 10, base: 200, studyTime: 5 },
+ efficientEnchant:{ name: "Efficient Enchant", desc: "-5% enchantment capacity cost", cat: "enchant", attunement: 'enchanter', attunementLevel: 1, max: 5, base: 350, studyTime: 6, req: { enchanting: 3 } },
+ disenchanting: { name: "Disenchanting", desc: "Recover 20% mana from removed enchantments", cat: "enchant", attunement: 'enchanter', attunementLevel: 1, max: 3, base: 400, studyTime: 6, req: { enchanting: 2 } },
+ enchantSpeed: { name: "Enchant Speed", desc: "-10% enchantment time", cat: "enchant", attunement: 'enchanter', attunementLevel: 1, max: 5, base: 300, studyTime: 4, req: { enchanting: 2 } },
+
+ // Advanced Enchanting (Lv 3)
+ scrollCrafting: { name: "Scroll Crafting", desc: "Create scrolls to store enchantment designs", cat: "enchant", attunement: 'enchanter', attunementLevel: 3, max: 3, base: 500, studyTime: 8, req: { enchanting: 5 } },
+ essenceRefining: { name: "Essence Refining", desc: "+10% enchantment effect power", cat: "enchant", attunement: 'enchanter', attunementLevel: 3, max: 5, base: 450, studyTime: 7, req: { enchanting: 4 } },
+ transferenceMastery: { name: "Transference Mastery", desc: "+25% transference mana conversion", cat: "enchant", attunement: 'enchanter', attunementLevel: 3, max: 3, base: 600, studyTime: 10, req: { enchanting: 5 } },
+
+ // Master Enchanting (Lv 5+)
+ soulBinding: { name: "Soul Binding", desc: "Enchantments persist through loops", cat: "enchant", attunement: 'enchanter', attunementLevel: 5, max: 2, base: 1500, studyTime: 24, req: { essenceRefining: 3 } },
+ ancientEcho: { name: "Ancient Echo", desc: "+1 enchantment capacity per 2 Enchanter levels", cat: "enchant", attunement: 'enchanter', attunementLevel: 5, max: 5, base: 1000, studyTime: 16 },
+
+ // Effect Research (Lv 2+)
+ researchManaSpells: { name: "Mana Spell Research", desc: "Unlock Mana Strike spell enchantment", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 1, max: 1, base: 200, studyTime: 4, req: { enchanting: 1 } },
+ researchFireSpells: { name: "Fire Spell Research", desc: "Unlock Ember Shot, Fireball spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 2, max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
+ researchWaterSpells: { name: "Water Spell Research", desc: "Unlock Water Jet, Ice Shard spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 2, max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
+ researchAirSpells: { name: "Air Spell Research", desc: "Unlock Gust, Wind Slash spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 2, max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
+ researchEarthSpells: { name: "Earth Spell Research", desc: "Unlock Stone Bullet, Rock Spike spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 2, max: 1, base: 350, studyTime: 6, req: { enchanting: 2 } },
+ researchLightSpells: { name: "Light Spell Research", desc: "Unlock Light Lance, Radiance spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 3, max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
+ researchDarkSpells: { name: "Dark Spell Research", desc: "Unlock Shadow Bolt, Dark Pulse spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 3, max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
+ researchLifeDeathSpells: { name: "Life & Death Research", desc: "Unlock Drain, Life Tap spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 3, max: 1, base: 400, studyTime: 8, req: { enchanting: 3 } },
+
+ // Advanced Effect Research (Lv 4+)
+ researchAdvancedFire: { name: "Advanced Fire Research", desc: "Unlock Inferno, Flame Wave spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 4, max: 1, base: 600, studyTime: 12, req: { researchFireSpells: 1, enchanting: 4 } },
+ researchAdvancedWater: { name: "Advanced Water Research", desc: "Unlock Tidal Wave, Ice Storm spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 4, max: 1, base: 600, studyTime: 12, req: { researchWaterSpells: 1, enchanting: 4 } },
+ researchAdvancedAir: { name: "Advanced Air Research", desc: "Unlock Hurricane, Wind Blade spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 4, max: 1, base: 600, studyTime: 12, req: { researchAirSpells: 1, enchanting: 4 } },
+ researchAdvancedEarth: { name: "Advanced Earth Research", desc: "Unlock Earthquake, Stone Barrage spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 4, max: 1, base: 600, studyTime: 12, req: { researchEarthSpells: 1, enchanting: 4 } },
+ researchAdvancedLight: { name: "Advanced Light Research", desc: "Unlock Solar Flare, Divine Smite spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 5, max: 1, base: 700, studyTime: 14, req: { researchLightSpells: 1, enchanting: 5 } },
+ researchAdvancedDark: { name: "Advanced Dark Research", desc: "Unlock Void Rift, Shadow Storm spell enchantments", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 5, max: 1, base: 700, studyTime: 14, req: { researchDarkSpells: 1, enchanting: 5 } },
+
+ // Master Effect Research (Lv 7+)
+ researchMasterFire: { name: "Master Fire Research", desc: "Unlock Pyroclasm spell enchantment", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 7, max: 1, base: 1200, studyTime: 24, req: { researchAdvancedFire: 1, enchanting: 7 } },
+ researchMasterWater: { name: "Master Water Research", desc: "Unlock Tsunami spell enchantment", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 7, max: 1, base: 1200, studyTime: 24, req: { researchAdvancedWater: 1, enchanting: 7 } },
+ researchMasterEarth: { name: "Master Earth Research", desc: "Unlock Meteor Strike spell enchantment", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 8, max: 1, base: 1300, studyTime: 26, req: { researchAdvancedEarth: 1, enchanting: 8 } },
+
+ // Combat & Utility Effect Research
+ researchDamageEffects: { name: "Damage Effect Research", desc: "Unlock Minor/Moderate Power, Amplification effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 1, max: 1, base: 250, studyTime: 5, req: { enchanting: 1 } },
+ researchCombatEffects: { name: "Combat Effect Research", desc: "Unlock Sharp Edge, Swift Casting effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 3, max: 1, base: 350, studyTime: 6, req: { researchDamageEffects: 1, enchanting: 3 } },
+ researchManaEffects: { name: "Mana Effect Research", desc: "Unlock Mana Reserve, Trickle, Mana Tap effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 1, max: 1, base: 200, studyTime: 4, req: { enchanting: 1 } },
+ researchAdvancedManaEffects: { name: "Advanced Mana Research", desc: "Unlock Mana Reservoir, Stream, River effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 3, max: 1, base: 400, studyTime: 8, req: { researchManaEffects: 1, enchanting: 3 } },
+ researchUtilityEffects: { name: "Utility Effect Research", desc: "Unlock Meditative Focus, Quick Study, Insightful effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 2, max: 1, base: 300, studyTime: 6, req: { enchanting: 2 } },
+ researchSpecialEffects: { name: "Special Effect Research", desc: "Unlock Echo Chamber, Siphoning, Bane effects", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 4, max: 1, base: 500, studyTime: 10, req: { enchanting: 4 } },
+ researchOverpower: { name: "Overpower Research", desc: "Unlock Overpower effect", cat: "effectResearch", attunement: 'enchanter', attunementLevel: 5, max: 1, base: 700, studyTime: 12, req: { researchSpecialEffects: 1, enchanting: 5 } },
+
+ // ═══════════════════════════════════════════════════════════════════════════
+ // INVOKER SKILLS (Chest Attunement)
+ // Form pacts with guardians, gain their elemental powers
+ // ═══════════════════════════════════════════════════════════════════════════
+
+ // Pact Fundamentals (Lv 1)
+ pactMastery: { name: "Pact Mastery", desc: "+10% pact multiplier bonus", cat: "pact", attunement: 'invoker', attunementLevel: 1, max: 5, base: 300, studyTime: 6 },
+ guardianAffinity:{ name: "Guardian Affinity", desc: "-15% pact signing time", cat: "pact", attunement: 'invoker', attunementLevel: 1, max: 5, base: 350, studyTime: 5 },
+ elementalBond: { name: "Elemental Bond", desc: "+20 elemental mana cap per pact", cat: "pact", attunement: 'invoker', attunementLevel: 1, max: 5, base: 400, studyTime: 6 },
+
+ // Invocation Basics (Lv 2)
+ invocationBasics:{ name: "Invocation Basics", desc: "Unlock guardian power activation", cat: "invocation", attunement: 'invoker', attunementLevel: 1, max: 1, base: 500, studyTime: 8 },
+ powerChannel: { name: "Power Channel", desc: "+15% guardian power effectiveness", cat: "invocation", attunement: 'invoker', attunementLevel: 2, max: 5, base: 400, studyTime: 7, req: { invocationBasics: 1 } },
+ elementalResonance: { name: "Elemental Resonance", desc: "+25% elemental damage per pact", cat: "invocation", attunement: 'invoker', attunementLevel: 2, max: 3, base: 500, studyTime: 8 },
+
+ // Advanced Invocation (Lv 4+)
+ dualInvocation: { name: "Dual Invocation", desc: "Activate 2 guardian powers at once", cat: "invocation", attunement: 'invoker', attunementLevel: 4, max: 1, base: 1200, studyTime: 18, req: { powerChannel: 3 } },
+ pactSynergy: { name: "Pact Synergy", desc: "+5% all stats per pact (stacking)", cat: "pact", attunement: 'invoker', attunementLevel: 3, max: 5, base: 600, studyTime: 10, req: { pactMastery: 3 } },
+ guardianCaller: { name: "Guardian Caller", desc: "Summon guardian spirit for 1 floor", cat: "invocation", attunement: 'invoker', attunementLevel: 5, max: 1, base: 1500, studyTime: 20, req: { dualInvocation: 1 } },
+
+ // Master Invocation (Lv 7+)
+ primordialPact: { name: "Primordial Pact", desc: "+50% to all pact boons", cat: "pact", attunement: 'invoker', attunementLevel: 7, max: 1, base: 2000, studyTime: 30, req: { pactSynergy: 5 } },
+ awakenedHeart: { name: "Awakened Heart", desc: "Permanent +1 mana regen per pact", cat: "invocation", attunement: 'invoker', attunementLevel: 8, max: 1, base: 2500, studyTime: 36, req: { guardianCaller: 1 } },
+
+ // ═══════════════════════════════════════════════════════════════════════════
+ // FABRICATOR SKILLS (Left Hand Attunement)
+ // Shape earth and metal to craft golems and equipment
+ // ═══════════════════════════════════════════════════════════════════════════
+
+ // Golemancy Basics (Lv 1)
+ golemancy: { name: "Golemancy", desc: "Unlock basic golem crafting", cat: "golemancy", attunement: 'fabricator', attunementLevel: 1, max: 1, base: 400, studyTime: 8 },
+ golemVitality: { name: "Golem Vitality", desc: "+20% golem HP", cat: "golemancy", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 350, studyTime: 5, req: { golemancy: 1 } },
+ golemEfficiency: { name: "Golem Efficiency", desc: "-10% golem mana cost", cat: "golemancy", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 400, studyTime: 6, req: { golemancy: 1 } },
+
+ // Fabrication Basics (Lv 1)
+ fabrication: { name: "Fabrication", desc: "Unlock equipment crafting", cat: "fabrication", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 300, studyTime: 6 },
+ efficientCrafting:{ name: "Efficient Crafting", desc: "-10% craft time", cat: "fabrication", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 300, studyTime: 4, req: { fabrication: 1 } },
+ fieldRepair: { name: "Field Repair", desc: "+15% repair efficiency", cat: "fabrication", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 350, studyTime: 4 },
+ earthShaping: { name: "Earth Shaping", desc: "+25% earth mana conversion", cat: "fabrication", attunement: 'fabricator', attunementLevel: 1, max: 5, base: 400, studyTime: 6 },
+
+ // Advanced Fabrication (Lv 3+)
+ metalworking: { name: "Metalworking", desc: "Unlock metal equipment recipes", cat: "fabrication", attunement: 'fabricator', attunementLevel: 3, max: 1, base: 800, studyTime: 12, req: { fabrication: 3 } },
+ golemCommand: { name: "Golem Command", desc: "Control +1 golem simultaneously", cat: "golemancy", attunement: 'fabricator', attunementLevel: 3, max: 2, base: 700, studyTime: 10, req: { golemancy: 1, golemVitality: 3 } },
+ runicCarving: { name: "Runic Carving", desc: "Equipment has +10% base capacity", cat: "fabrication", attunement: 'fabricator', attunementLevel: 3, max: 3, base: 600, studyTime: 8, req: { fabrication: 3 } },
+
+ // Master Fabrication (Lv 5+)
+ alloyMastery: { name: "Alloy Mastery", desc: "Unlock advanced alloy recipes", cat: "fabrication", attunement: 'fabricator', attunementLevel: 5, max: 1, base: 1200, studyTime: 18, req: { metalworking: 1 } },
+ golemancyMaster: { name: "Golemancy Master", desc: "Golems have +50% all stats", cat: "golemancy", attunement: 'fabricator', attunementLevel: 5, max: 1, base: 1500, studyTime: 20, req: { golemCommand: 2 } },
+ earthsHeart: { name: "Earth's Heart", desc: "+1 earth mana per Fabricator level/hr", cat: "fabrication", attunement: 'fabricator', attunementLevel: 5, max: 1, base: 1000, studyTime: 14, req: { earthShaping: 5 } },
+
+ // Legendary Fabrication (Lv 8+)
+ legendaryCraft: { name: "Legendary Crafting", desc: "Chance for crafted items to gain +1 tier", cat: "fabrication", attunement: 'fabricator', attunementLevel: 8, max: 1, base: 2500, studyTime: 30, req: { alloyMastery: 1, runicCarving: 3 } },
+ awakenedHand: { name: "Awakened Hand", desc: "Craft time -50%, +25% quality", cat: "fabrication", attunement: 'fabricator', attunementLevel: 8, max: 1, base: 3000, studyTime: 36, req: { legendaryCraft: 1 } },
};
// ─── Prestige Upgrades ────────────────────────────────────────────────────────
@@ -747,28 +805,32 @@ export const PRESTIGE_DEF: Record = {
};
// ─── Skill Categories ─────────────────────────────────────────────────────────
-// Skills are now organized by attunement - each attunement grants access to specific skill categories
+// Skills are organized by attunement - each attunement grants access to specific skill categories
export const SKILL_CATEGORIES = [
- // Core categories (always available)
+ // ═══════════════════════════════════════════════════════════════════════════
+ // 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)
+ // ═══════════════════════════════════════════════════════════════════════════
+ // ENCHANTER (Right Hand Attunement)
+ // ═══════════════════════════════════════════════════════════════════════════
{ id: 'enchant', name: 'Enchanting', icon: '✨', attunement: 'enchanter' },
{ id: 'effectResearch', name: 'Effect Research', icon: '🔬', attunement: 'enchanter' },
- // Invoker attunement (Chest)
+ // ═══════════════════════════════════════════════════════════════════════════
+ // INVOKER (Chest Attunement)
+ // ═══════════════════════════════════════════════════════════════════════════
{ id: 'invocation', name: 'Invocation', icon: '💜', attunement: 'invoker' },
{ id: 'pact', name: 'Pact Mastery', icon: '🤝', attunement: 'invoker' },
- // Fabricator attunement (Left Hand)
+ // ═══════════════════════════════════════════════════════════════════════════
+ // FABRICATOR (Left Hand Attunement)
+ // ═══════════════════════════════════════════════════════════════════════════
{ 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 ───────────────────────────────────────────────────────────
diff --git a/src/lib/game/store.ts b/src/lib/game/store.ts
index e7caea9..27c67f5 100755
--- a/src/lib/game/store.ts
+++ b/src/lib/game/store.ts
@@ -1000,6 +1000,14 @@ export const useGameStore = create()(
const currentLevel = state.skills[skillId] || 0;
if (currentLevel >= sk.max) return;
+ // Check attunement requirement
+ if (sk.attunement) {
+ const attState = state.attunements?.[sk.attunement];
+ if (!attState?.active) return; // Attunement not active
+ const requiredLevel = sk.attunementLevel || 1;
+ if ((attState.level || 1) < requiredLevel) return; // Attunement level too low
+ }
+
// Check prerequisites
if (sk.req) {
for (const [r, rl] of Object.entries(sk.req)) {
diff --git a/src/lib/game/types.ts b/src/lib/game/types.ts
index 8b4e6fd..6458d1d 100755
--- a/src/lib/game/types.ts
+++ b/src/lib/game/types.ts
@@ -103,6 +103,7 @@ export interface SkillDef {
desc: string;
cat: string;
attunement?: string; // Which attunement this skill belongs to (null = core)
+ attunementLevel?: number; // Minimum attunement level required (default 1)
max: number;
base: number; // Mana cost to start studying
req?: Record;