feat: Remove banned mana types (life, blood, wood, mental, force) and lifesteal
Some checks failed
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m14s

- Remove life, blood, wood, mental, force mana types from ELEMENTS
- Remove all spells using banned mana types
- Remove lifesteal from all remaining spells and effects
- Update guardian perks to remove lifesteal mentions
- Remove research skills for banned spell types
- Update tests to reflect new element structure
- Add BANNED CONTENT section to AGENTS.md (lifesteal/healing ban)
- Add mana types overview to README.md and AGENTS.md
- All 44 tests pass, lint clean
This commit is contained in:
Z User
2026-03-31 11:44:48 +00:00
parent fcebfab9e5
commit 2b1c115fee
9 changed files with 235 additions and 588 deletions

View File

@@ -30,28 +30,27 @@ export const ELEMENTS: Record<string, ElementDef> = {
earth: { name: "Earth", sym: "⛰️", color: "#F4A261", glow: "#F4A26140", cat: "base" },
light: { name: "Light", sym: "☀️", color: "#FFD700", glow: "#FFD70040", cat: "base" },
dark: { name: "Dark", sym: "🌑", color: "#9B59B6", glow: "#9B59B640", cat: "base" },
life: { name: "Life", sym: "🌿", color: "#2ECC71", glow: "#2ECC7140", cat: "base" },
death: { name: "Death", sym: "💀", color: "#778CA3", glow: "#778CA340", cat: "base" },
// Utility Elements
mental: { name: "Mental", sym: "🧠", color: "#E91E8C", glow: "#E91E8C40", cat: "utility" },
transference: { name: "Transference", sym: "🔗", color: "#1ABC9C", glow: "#1ABC9C40", cat: "utility" },
force: { name: "Force", sym: "💨", color: "#E74C3C", glow: "#E74C3C40", cat: "utility" },
// Composite Elements
blood: { name: "Blood", sym: "🩸", color: "#C0392B", glow: "#C0392B40", cat: "composite", recipe: ["life", "water"] },
metal: { name: "Metal", sym: "⚙️", color: "#BDC3C7", glow: "#BDC3C740", cat: "composite", recipe: ["fire", "earth"] },
wood: { name: "Wood", sym: "🪵", color: "#8B5E3C", glow: "#8B5E3C40", cat: "composite", recipe: ["life", "earth"] },
sand: { name: "Sand", sym: "⏳", color: "#D4AC0D", glow: "#D4AC0D40", cat: "composite", recipe: ["earth", "water"] },
lightning: { name: "Lightning", sym: "⚡", color: "#FFEB3B", glow: "#FFEB3B40", cat: "composite", recipe: ["fire", "air"] },
// Exotic Elements
crystal: { name: "Crystal", sym: "💎", color: "#85C1E9", glow: "#85C1E940", cat: "exotic", recipe: ["sand", "sand", "mental"] },
crystal: { name: "Crystal", sym: "💎", color: "#85C1E9", glow: "#85C1E940", cat: "exotic", recipe: ["sand", "sand", "light"] },
stellar: { name: "Stellar", sym: "⭐", color: "#F0E68C", glow: "#F0E68C40", cat: "exotic", recipe: ["fire", "fire", "light"] },
void: { name: "Void", sym: "🕳️", color: "#4A235A", glow: "#4A235A40", cat: "exotic", recipe: ["dark", "dark", "death"] },
};
export const FLOOR_ELEM_CYCLE = ["fire", "water", "air", "earth", "light", "dark", "life", "death"];
// NOTE: Life, Blood, Wood, Mental, and Force mana types have been removed.
// Lifesteal and healing are BANNED from player abilities - see AGENTS.md
// Crystal recipe updated to use light instead of mental.
export const FLOOR_ELEM_CYCLE = ["fire", "water", "air", "earth", "light", "dark", "death"];
// ─── Room Types ────────────────────────────────────────────────────────────────
// Room types for spire floors
@@ -167,7 +166,7 @@ export const GUARDIANS: Record<number, GuardianDef> = {
],
pactCost: 1000,
pactTime: 4,
uniquePerk: "Water spells have 10% lifesteal"
uniquePerk: "Water spells deal +15% damage"
},
30: {
name: "Ventus Rex", element: "air", hp: 30000, pact: 2.0, color: "#00D4FF",
@@ -211,18 +210,7 @@ export const GUARDIANS: Record<number, GuardianDef> = {
],
pactCost: 15000,
pactTime: 12,
uniquePerk: "Dark spells have 20% lifesteal"
},
70: {
name: "Vita Sempiterna", element: "life", hp: 180000, pact: 3.0, color: "#2ECC71",
armor: 0.20,
boons: [
{ type: 'elementalDamage', value: 10, desc: '+10% Life damage' },
{ type: 'manaRegen', value: 1, desc: '+1 mana regen' },
],
pactCost: 25000,
pactTime: 14,
uniquePerk: "Life spells heal for 30% of damage dealt"
uniquePerk: "Dark spells deal +25% damage to armored enemies"
},
80: {
name: "Mors Ultima", element: "death", hp: 250000, pact: 3.25, color: "#778CA3",
@@ -431,7 +419,6 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
unlock: 150,
studyTime: 3,
desc: "Drain life force from your enemy.",
effects: [{ type: 'lifesteal', value: 0.2 }]
},
rotTouch: {
name: "Rot Touch",
@@ -444,29 +431,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
studyTime: 3,
desc: "Touch of decay and rot."
},
lifeTap: {
name: "Life Tap",
elem: "life",
dmg: 8,
cost: elemCost("life", 1),
tier: 1,
castSpeed: 3,
unlock: 100,
studyTime: 2,
desc: "Tap into life energy for a weak attack.",
effects: [{ type: 'lifesteal', value: 0.3 }]
},
thornWhip: {
name: "Thorn Whip",
elem: "life",
dmg: 12,
cost: elemCost("life", 2),
tier: 1,
castSpeed: 2.5,
unlock: 130,
studyTime: 2,
desc: "A whip of living thorns."
},
// Tier 2 - Advanced Spells (8-12 hours study)
inferno: {
@@ -610,19 +575,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 1.1,
unlock: 1100,
studyTime: 9,
desc: "Tear at the enemy's soul.",
effects: [{ type: 'lifesteal', value: 0.25 }]
},
entangle: {
name: "Entangle",
elem: "life",
dmg: 35,
cost: elemCost("life", 5),
tier: 2,
castSpeed: 1.5,
unlock: 700,
studyTime: 6,
desc: "Vines entangle and crush."
desc: "Tear at the enemy's soul."
},
// Tier 3 - Master Spells (20-30 hours study)
@@ -701,20 +654,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 0.7,
unlock: 10000,
studyTime: 24,
desc: "Mark for death.",
effects: [{ type: 'lifesteal', value: 0.35 }]
},
worldTree: {
name: "World Tree",
elem: "life",
dmg: 180,
cost: elemCost("life", 18),
tier: 3,
castSpeed: 0.75,
unlock: 9000,
studyTime: 22,
desc: "Power of the world tree itself.",
effects: [{ type: 'lifesteal', value: 0.4 }]
desc: "Mark for death."
},
// Tier 4 - Legendary Spells (40-60 hours study, require exotic elements)
@@ -969,66 +909,15 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 3,
unlock: 800,
studyTime: 8,
desc: "Enchant a blade with void. 10% lifesteal.",
desc: "Enchant a blade with void. +20% damage.",
isWeaponEnchant: true,
effects: [{ type: 'lifesteal', value: 0.1 }]
effects: [{ type: 'buff', value: 0.2 }]
},
// ═══════════════════════════════════════════════════════════════════════════
// COMPOUND MANA SPELLS - Blood, Metal, Wood, Sand
// ═══════════════════════════════════════════════════════════════════════════
// ─── BLOOD SPELLS (Life + Water) ─────────────────────────────────────────────
// Blood magic sacrifices HP for power, with lifesteal effects
bloodNeedle: {
name: "Blood Needle",
elem: "blood",
dmg: 12,
cost: elemCost("blood", 2),
tier: 1,
castSpeed: 3,
unlock: 200,
studyTime: 3,
desc: "A needle of congealed blood. Fast and efficient.",
effects: [{ type: 'lifesteal', value: 0.15 }]
},
bloodSlash: {
name: "Blood Slash",
elem: "blood",
dmg: 18,
cost: elemCost("blood", 3),
tier: 1,
castSpeed: 2,
unlock: 280,
studyTime: 4,
desc: "A slashing arc of blood. Good lifesteal.",
effects: [{ type: 'lifesteal', value: 0.2 }]
},
bloodRite: {
name: "Blood Rite",
elem: "blood",
dmg: 45,
cost: elemCost("blood", 7),
tier: 2,
castSpeed: 1.2,
unlock: 1100,
studyTime: 10,
desc: "A ritual of blood. Strong damage and lifesteal.",
effects: [{ type: 'lifesteal', value: 0.35 }]
},
sanguineStorm: {
name: "Sanguine Storm",
elem: "blood",
dmg: 80,
cost: elemCost("blood", 15),
tier: 3,
castSpeed: 0.7,
unlock: 12000,
studyTime: 26,
desc: "A storm of blood droplets. Massive lifesteal.",
effects: [{ type: 'lifesteal', value: 0.5 }]
},
// ─── METAL SPELLS (Fire + Earth) ─────────────────────────────────────────────
// Metal magic is slow but devastating with high armor pierce
metalShard: {
@@ -1080,57 +969,6 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
effects: [{ type: 'armor_pierce', value: 0.6 }]
},
// ─── WOOD SPELLS (Life + Earth) ─────────────────────────────────────────────
// Wood magic focuses on growth and regeneration
thornStrike: {
name: "Thorn Strike",
elem: "wood",
dmg: 14,
cost: elemCost("wood", 2),
tier: 1,
castSpeed: 2.5,
unlock: 180,
studyTime: 3,
desc: "A strike of wooden thorns. Some lifesteal.",
effects: [{ type: 'lifesteal', value: 0.12 }]
},
rootGrab: {
name: "Root Grab",
elem: "wood",
dmg: 20,
cost: elemCost("wood", 3),
tier: 1,
castSpeed: 2,
unlock: 260,
studyTime: 4,
desc: "Roots entangle and crush. Good lifesteal.",
effects: [{ type: 'lifesteal', value: 0.18 }]
},
treePunch: {
name: "Tree Punch",
elem: "wood",
dmg: 40,
cost: elemCost("wood", 6),
tier: 2,
castSpeed: 1.3,
unlock: 1000,
studyTime: 9,
desc: "A massive wooden fist. Strong lifesteal.",
effects: [{ type: 'lifesteal', value: 0.25 }]
},
forestAwakening: {
name: "Forest Awakening",
elem: "wood",
dmg: 120,
cost: elemCost("wood", 14),
tier: 3,
castSpeed: 0.65,
unlock: 11000,
studyTime: 24,
desc: "The forest itself awakens. Excellent lifesteal.",
effects: [{ type: 'lifesteal', value: 0.4 }]
},
// ─── SAND SPELLS (Earth + Water) ────────────────────────────────────────────
// Sand magic slows enemies and deals steady damage
sandBlast: {
@@ -1188,59 +1026,8 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
// UTILITY MANA SPELLS - Mental, Transference, Force
// ═══════════════════════════════════════════════════════════════════════════
// ─── MENTAL SPELLS ──────────────────────────────────────────────────────────
// Mental magic stuns and disrupts enemies
mindSpike: {
name: "Mind Spike",
elem: "mental",
dmg: 10,
cost: elemCost("mental", 2),
tier: 1,
castSpeed: 3.5,
unlock: 200,
studyTime: 3,
desc: "A spike of mental energy. Fast and disruptive.",
effects: [{ type: 'stun', value: 0.1, chance: 0.15 }]
},
psychicBlast: {
name: "Psychic Blast",
elem: "mental",
dmg: 20,
cost: elemCost("mental", 4),
tier: 1,
castSpeed: 2.5,
unlock: 320,
studyTime: 5,
desc: "A blast of psychic energy. Chance to stun.",
effects: [{ type: 'stun', value: 0.15, chance: 0.2 }]
},
mindCrush: {
name: "Mind Crush",
elem: "mental",
dmg: 48,
cost: elemCost("mental", 8),
tier: 2,
castSpeed: 1.2,
unlock: 1200,
studyTime: 11,
desc: "Crush the enemy's mind. High stun chance.",
effects: [{ type: 'stun', value: 0.2, chance: 0.3 }]
},
cerebralAnnihilation: {
name: "Cerebral Annihilation",
elem: "mental",
dmg: 150,
cost: elemCost("mental", 18),
tier: 3,
castSpeed: 0.55,
unlock: 16000,
studyTime: 30,
desc: "Total mental destruction. Very high stun chance.",
effects: [{ type: 'stun', value: 0.25, chance: 0.4 }]
},
// ─── TRANSFERENCE SPELLS ─────────────────────────────────────────────────────
// Transference magic moves mana and provides lifesteal
// Transference magic moves mana and enhances efficiency
transferStrike: {
name: "Transfer Strike",
elem: "transference",
@@ -1250,8 +1037,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 3,
unlock: 150,
studyTime: 2,
desc: "Strike that transfers energy. Good lifesteal.",
effects: [{ type: 'lifesteal', value: 0.2 }]
desc: "Strike that transfers energy. Very efficient.",
},
manaRip: {
name: "Mana Rip",
@@ -1262,8 +1048,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 2.5,
unlock: 250,
studyTime: 4,
desc: "Rip mana from the enemy. Strong lifesteal.",
effects: [{ type: 'lifesteal', value: 0.25 }]
desc: "Rip mana from the enemy. High efficiency.",
},
essenceDrain: {
name: "Essence Drain",
@@ -1274,8 +1059,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 1.3,
unlock: 1050,
studyTime: 10,
desc: "Drain the enemy's essence. Excellent lifesteal.",
effects: [{ type: 'lifesteal', value: 0.35 }]
desc: "Drain the enemy's essence.",
},
soulTransfer: {
name: "Soul Transfer",
@@ -1286,59 +1070,7 @@ export const SPELLS_DEF: Record<string, SpellDef> = {
castSpeed: 0.6,
unlock: 13000,
studyTime: 26,
desc: "Transfer the soul's energy. Massive lifesteal.",
effects: [{ type: 'lifesteal', value: 0.5 }]
},
// ─── FORCE SPELLS ───────────────────────────────────────────────────────────
// Force magic is raw telekinetic power - high damage, fast
forcePush: {
name: "Force Push",
elem: "force",
dmg: 12,
cost: elemCost("force", 2),
tier: 1,
castSpeed: 3.5,
unlock: 180,
studyTime: 3,
desc: "A push of telekinetic force. Very fast.",
},
kineticBlast: {
name: "Kinetic Blast",
elem: "force",
dmg: 24,
cost: elemCost("force", 4),
tier: 1,
castSpeed: 2.8,
unlock: 300,
studyTime: 4,
desc: "A blast of pure kinetic energy. Fast and powerful.",
},
gravityWell: {
name: "Gravity Well",
elem: "force",
dmg: 50,
cost: elemCost("force", 7),
tier: 2,
castSpeed: 1.4,
unlock: 1150,
studyTime: 10,
desc: "A crushing gravity well. Hits 2 enemies.",
isAoe: true,
aoeTargets: 2,
},
telekineticStorm: {
name: "Telekinetic Storm",
elem: "force",
dmg: 160,
cost: elemCost("force", 18),
tier: 3,
castSpeed: 0.5,
unlock: 17000,
studyTime: 30,
desc: "A storm of telekinetic fury. Hits 4 enemies.",
isAoe: true,
aoeTargets: 4,
desc: "Transfer the soul's energy.",
},
};
@@ -1378,7 +1110,7 @@ export const SKILLS_DEF: Record<string, SkillDef> = {
researchEarthSpells: { name: "Earth Spell Research", desc: "Unlock Stone Bullet, Rock Spike spell enchantments", cat: "effectResearch", max: 1, base: 350, studyTime: 6, req: { enchanting: 2 }, attunementReq: { enchanter: 1 } },
researchLightSpells: { name: "Light Spell Research", desc: "Unlock Light Lance, Radiance spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchDarkSpells: { name: "Dark Spell Research", desc: "Unlock Shadow Bolt, Dark Pulse spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchLifeDeathSpells: { name: "Life & Death Research", desc: "Unlock Drain, Life Tap spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchLifeDeathSpells: { name: "Death Research", desc: "Unlock Drain spell enchantment", cat: "effectResearch", max: 1, base: 400, studyTime: 8, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } },
// Tier 2 - Advanced Spell Effects - Require Enchanter 3
researchAdvancedFire: { name: "Advanced Fire Research", desc: "Unlock Inferno, Flame Wave spell enchantments", cat: "effectResearch", max: 1, base: 600, studyTime: 12, req: { researchFireSpells: 1, enchanting: 4 }, attunementReq: { enchanter: 3 } },
@@ -1409,48 +1141,36 @@ export const SKILLS_DEF: Record<string, SkillDef> = {
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 - Blood, Metal, Wood, Sand, Lightning
// COMPOUND MANA SPELL RESEARCH - Metal, Sand, Lightning
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 - Basic Compound Spells
researchBloodSpells: { name: "Blood Spell Research", desc: "Unlock Blood Needle, Blood Slash spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchLifeDeathSpells: 1, researchWaterSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchMetalSpells: { name: "Metal Spell Research", desc: "Unlock Metal Shard, Iron Fist spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchFireSpells: 1, researchEarthSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchWoodSpells: { name: "Wood Spell Research", desc: "Unlock Thorn Strike, Root Grab spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchLifeDeathSpells: 1, researchEarthSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchSandSpells: { name: "Sand Spell Research", desc: "Unlock Sand Blast, Sandstorm spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchEarthSpells: 1, researchWaterSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } },
researchLightningSpells: { name: "Lightning Spell Research", desc: "Unlock Spark, Lightning Bolt spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { researchFireSpells: 1, researchAirSpells: 1, enchanting: 3 }, attunementReq: { enchanter: 2 } },
// Tier 2 - Advanced Compound Spells
researchAdvancedBlood: { name: "Advanced Blood Research", desc: "Unlock Blood Rite spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchBloodSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
researchAdvancedMetal: { name: "Advanced Metal Research", desc: "Unlock Steel Tempest spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchMetalSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
researchAdvancedWood: { name: "Advanced Wood Research", desc: "Unlock Tree Punch spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchWoodSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
researchAdvancedSand: { name: "Advanced Sand Research", desc: "Unlock Desert Wind spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchSandSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
researchAdvancedLightning: { name: "Advanced Lightning Research", desc: "Unlock Chain Lightning, Storm Call spell enchantments", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchLightningSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
// Tier 3 - Master Compound Spells
researchMasterBlood: { name: "Master Blood Research", desc: "Unlock Sanguine Storm spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedBlood: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } },
researchMasterMetal: { name: "Master Metal Research", desc: "Unlock Furnace Blast spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedMetal: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } },
researchMasterWood: { name: "Master Wood Research", desc: "Unlock Forest Awakening spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedWood: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } },
researchMasterSand: { name: "Master Sand Research", desc: "Unlock Dune Collapse spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedSand: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } },
researchMasterLightning: { name: "Master Lightning Research", desc: "Unlock Thunder Strike spell enchantment", cat: "effectResearch", max: 1, base: 1300, studyTime: 26, req: { researchAdvancedLightning: 1, enchanting: 7 }, attunementReq: { enchanter: 5 } },
// ═══════════════════════════════════════════════════════════════════════════
// UTILITY MANA SPELL RESEARCH - Mental, Transference, Force
// UTILITY MANA SPELL RESEARCH - Transference
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 - Basic Utility Spells
researchMentalSpells: { name: "Mental Spell Research", desc: "Unlock Mind Spike, Psychic Blast spell enchantments", cat: "effectResearch", max: 1, base: 450, studyTime: 7, req: { enchanting: 4 }, attunementReq: { enchanter: 2 } },
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 } },
researchForceSpells: { name: "Force Spell Research", desc: "Unlock Force Push, Kinetic Blast spell enchantments", cat: "effectResearch", max: 1, base: 400, studyTime: 6, req: { enchanting: 3 }, attunementReq: { enchanter: 2 } },
// Tier 2 - Advanced Utility Spells
researchAdvancedMental: { name: "Advanced Mental Research", desc: "Unlock Mind Crush spell enchantment", cat: "effectResearch", max: 1, base: 750, studyTime: 14, req: { researchMentalSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
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 } },
researchAdvancedForce: { name: "Advanced Force Research", desc: "Unlock Gravity Well spell enchantment", cat: "effectResearch", max: 1, base: 700, studyTime: 12, req: { researchForceSpells: 1, enchanting: 5 }, attunementReq: { enchanter: 3 } },
// Tier 3 - Master Utility Spells
researchMasterMental: { name: "Master Mental Research", desc: "Unlock Cerebral Annihilation spell enchantment", cat: "effectResearch", max: 1, base: 1400, studyTime: 28, req: { researchAdvancedMental: 1, enchanting: 8 }, attunementReq: { enchanter: 5 } },
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 } },
researchMasterForce: { name: "Master Force Research", desc: "Unlock Telekinetic Storm spell enchantment", cat: "effectResearch", max: 1, base: 1400, studyTime: 28, req: { researchAdvancedForce: 1, enchanting: 8 }, attunementReq: { enchanter: 5 } },
// Research Skills (longer study times: 12-72 hours) - Core skills, any attunement level 3
manaTap: { name: "Mana Tap", desc: "+1 mana/click", cat: "research", max: 1, base: 300, studyTime: 12 },
@@ -1528,7 +1248,7 @@ export const EFFECT_RESEARCH_MAPPING: Record<string, string[]> = {
researchEarthSpells: ['spell_stoneBullet', 'spell_rockSpike'],
researchLightSpells: ['spell_lightLance', 'spell_radiance'],
researchDarkSpells: ['spell_shadowBolt', 'spell_darkPulse'],
researchLifeDeathSpells: ['spell_drain', 'spell_lifeTap'],
researchLifeDeathSpells: ['spell_drain'],
// Tier 2 - Advanced Spell Effects
researchAdvancedFire: ['spell_inferno', 'spell_flameWave'],
@@ -1555,52 +1275,40 @@ export const EFFECT_RESEARCH_MAPPING: Record<string, string[]> = {
researchUtilityEffects: ['meditate_10', 'study_10', 'insight_5'],
// Special Effect Research
researchSpecialEffects: ['spell_echo_10', 'lifesteal_5', 'guardian_dmg_10'],
researchSpecialEffects: ['spell_echo_10', 'guardian_dmg_10'],
researchOverpower: ['overpower_80'],
// ═══════════════════════════════════════════════════════════════════════════
// COMPOUND MANA SPELL RESEARCH - Blood, Metal, Wood, Sand, Lightning
// COMPOUND MANA SPELL RESEARCH - Metal, Sand, Lightning
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 - Basic Compound Spells
researchBloodSpells: ['spell_bloodNeedle', 'spell_bloodSlash'],
researchMetalSpells: ['spell_metalShard', 'spell_ironFist'],
researchWoodSpells: ['spell_thornStrike', 'spell_rootGrab'],
researchSandSpells: ['spell_sandBlast', 'spell_sandstorm'],
researchLightningSpells: ['spell_spark', 'spell_lightningBolt'],
// Tier 2 - Advanced Compound Spells
researchAdvancedBlood: ['spell_bloodRite'],
researchAdvancedMetal: ['spell_steelTempest'],
researchAdvancedWood: ['spell_treePunch'],
researchAdvancedSand: ['spell_desertWind'],
researchAdvancedLightning: ['spell_chainLightning', 'spell_stormCall'],
// Tier 3 - Master Compound Spells
researchMasterBlood: ['spell_sanguineStorm'],
researchMasterMetal: ['spell_furnaceBlast'],
researchMasterWood: ['spell_forestAwakening'],
researchMasterSand: ['spell_duneCollapse'],
researchMasterLightning: ['spell_thunderStrike'],
// ═══════════════════════════════════════════════════════════════════════════
// UTILITY MANA SPELL RESEARCH - Mental, Transference, Force
// UTILITY MANA SPELL RESEARCH - Transference
// ═══════════════════════════════════════════════════════════════════════════
// Tier 1 - Basic Utility Spells
researchMentalSpells: ['spell_mindSpike', 'spell_psychicBlast'],
researchTransferenceSpells: ['spell_transferStrike', 'spell_manaRip'],
researchForceSpells: ['spell_forcePush', 'spell_kineticBlast'],
// Tier 2 - Advanced Utility Spells
researchAdvancedMental: ['spell_mindCrush'],
researchAdvancedTransference: ['spell_essenceDrain'],
researchAdvancedForce: ['spell_gravityWell'],
// Tier 3 - Master Utility Spells
researchMasterMental: ['spell_cerebralAnnihilation'],
researchMasterTransference: ['spell_soulTransfer'],
researchMasterForce: ['spell_telekineticStorm'],
};
// Base effects unlocked when player gets enchanting skill level 1
@@ -1627,7 +1335,6 @@ export const ELEMENT_OPPOSITES: Record<string, string> = {
fire: 'water', water: 'fire',
air: 'earth', earth: 'air',
light: 'dark', dark: 'light',
life: 'death', death: 'life',
lightning: 'earth', // Lightning is weak to earth (grounding)
};
@@ -1641,14 +1348,9 @@ export const ELEMENT_ICON_NAMES: Record<string, string> = {
earth: 'Mountain',
light: 'Sun',
dark: 'Moon',
life: 'Leaf',
death: 'Skull',
mental: 'Brain',
transference: 'Link',
force: 'Wind',
blood: 'Droplets',
metal: 'Target',
wood: 'TreeDeciduous',
sand: 'Hourglass',
lightning: 'Zap',
crystal: 'Gem',