Redesign skill system around attunements
All checks were successful
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 3m31s
All checks were successful
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 3m31s
- Add attunementLevel field to SkillDef type - Organize skills into Core, Enchanter, Invoker, and Fabricator trees - Core skills (mana, study, ascension) available to all players - Enchanter skills require Enchanter attunement and scale with level - Invoker skills for pact mastery and invocation (requires Invoker attunement) - Fabricator skills for golemancy and fabrication (requires Fabricator attunement) - Add attunement level requirements for advanced skills (Lv 3, 5, 7, 8) - Update SkillsTab UI to show attunement requirements - Update store to validate attunement requirements before studying
This commit is contained in:
@@ -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) {
|
||||
)}
|
||||
</div>
|
||||
<div className="text-xs text-gray-400 italic">{def.desc}{currentTier > 1 && ` (Tier ${currentTier}: ${fmtDec(tierMultiplier, 0)}x effect)`}</div>
|
||||
{!attunementMet && attunementReqText && (
|
||||
<div className="text-xs text-orange-400 mt-1">
|
||||
🔒 {attunementReqText}
|
||||
</div>
|
||||
)}
|
||||
{!prereqMet && def.req && (
|
||||
<div className="text-xs text-red-400 mt-1">
|
||||
Requires: {Object.entries(def.req).map(([r, rl]) => `${SKILLS_DEF[r]?.name} Lv.${rl}`).join(', ')}
|
||||
|
||||
@@ -651,82 +651,140 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
|
||||
};
|
||||
|
||||
// ─── 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<string, SkillDef> = {
|
||||
// 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<string, PrestigeDef> = {
|
||||
};
|
||||
|
||||
// ─── 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 ───────────────────────────────────────────────────────────
|
||||
|
||||
@@ -1000,6 +1000,14 @@ export const useGameStore = create<GameStore>()(
|
||||
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)) {
|
||||
|
||||
@@ -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<string, number>;
|
||||
|
||||
Reference in New Issue
Block a user