95 lines
2.9 KiB
TypeScript
95 lines
2.9 KiB
TypeScript
// ─── 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;
|
|
}
|