// ─── Special Effect IDs ──────────────────────────────────────────────────────── // These are the IDs used in the 'specialId' field of special effects import type { ComputedEffects } from './upgrade-effects.types'; export const SPECIAL_EFFECTS = { // Mana Flow special effects MANA_CASCADE: 'manaCascade', STEADY_STREAM: 'steadyStream', MANA_TORRENT: 'manaTorrent', FLOW_SURGE: 'flowSurge', MANA_OVERFLOW: 'manaOverflow', MANA_WATERFALL: 'manaWaterfall', ETERNAL_FLOW: 'eternalFlow', // Mana Well special effects DESPAIR_WELLS: 'despairWells', DESPERATE_WELLS: 'desperateWells', MANA_ECHO: 'manaEcho', EMERGENCY_RESERVE: 'emergencyReserve', MANA_THRESHOLD: 'manaThreshold', MANA_CONVERSION: 'manaConversion', PANIC_RESERVE: 'panicReserve', MANA_CONDENSE: 'manaCondense', DEEP_RESERVE: 'deepReserve', MANA_TIDE: 'manaTide', VOID_STORAGE: 'voidStorage', MANA_CORE: 'manaCore', MANA_HEART: 'manaHeart', MANA_GENESIS: 'manaGenesis', // Mana Overflow special effects CLICK_SURGE: 'clickSurge', MANA_FLOOD: 'manaFlood', // Combat special effects FIRST_STRIKE: 'firstStrike', OVERPOWER: 'overpower', BERSERKER: 'berserker', EXECUTIONER: 'executioner', COMBO_MASTER: 'comboMaster', ADRENALINE_RUSH: 'adrenalineRush', // Study special effects QUICK_GRASP: 'quickGrasp', DEEP_CONCENTRATION: 'deepConcentration', QUICK_MASTERY: 'quickMastery', PARALLEL_STUDY: 'parallelStudy', STUDY_MOMENTUM: 'studyMomentum', KNOWLEDGE_ECHO: 'knowledgeEcho', KNOWLEDGE_TRANSFER: 'knowledgeTransfer', MENTAL_CLARITY: 'mentalClarity', STUDY_REFUND: 'studyRefund', DEEP_UNDERSTANDING: 'deepUnderstanding', STUDY_RUSH: 'studyRush', CHAIN_STUDY: 'chainStudy', // Element special effects ELEMENTAL_AFFINITY: 'elementalAffinity', EXOTIC_MASTERY: 'exoticMastery', ELEMENTAL_RESONANCE: 'elementalResonance', MANA_CONDUIT: 'manaConduit', // Enchanting special effects ENCHANT_MASTERY: 'enchantMastery', ENCHANT_PRESERVATION: 'enchantPreservation', THRIFTY_ENCHANTER: 'thriftyEnchanter', OPTIMIZED_ENCHANTING: 'optimizedEnchanting', HASTY_ENCHANTER: 'hastyEnchanter', INSTANT_DESIGNS: 'instantDesigns', PURE_ESSENCE: 'pureEssence', // Crafting special effects BATCH_CRAFTING: 'batchCrafting', MASS_PRODUCTION: 'massProduction', SCAVENGE: 'scavenge', RECLAIM: 'reclaim', // Golemancy special effects GOLEM_FURY: 'golemFury', GOLEM_RESONANCE: 'golemResonance', RAPID_STRIKES: 'rapidStrikes', BLITZ_ATTACK: 'blitzAttack', // Ascension special effects INSIGHT_BOUNTY: 'insightBounty', } as const; /** * Check if a special effect is active */ export function hasSpecial(effects: ComputedEffects, specialId: string): boolean { return effects?.specials?.has(specialId) ?? false; }