-- DynamicTooltips: Warlock Spell Data (Retail)
-- Updated for The War Within / Midnight expansion
-- Spell Power coefficients for Retail WoW scaling system

local _, DT = ...
DT.ClassData = DT.ClassData or {}

-- Only load Retail data if running on Retail client
if DT.isRetail == false then return end

DT.ClassData.Warlock = {
    -- ========================================================================
    -- AFFLICTION SPEC
    -- ========================================================================
    
    -- Agony - Primary DoT, ramps up damage over time
    [980] = { name = "Agony", sp = 0.012, school = "Shadow", type = "DoT", duration = 18, spec = "Affliction" },
    
    -- Corruption - Instant Shadow DoT
    [172] = { name = "Corruption", sp = 0.12, school = "Shadow", type = "DoT", duration = 14, spec = "Affliction" },
    
    -- Unstable Affliction - Primary damage DoT
    [316099] = { name = "Unstable Affliction", sp = 0.145, school = "Shadow", type = "DoT", duration = 21, spec = "Affliction" },
    
    -- Malefic Rapture - Consumes shards, explodes DoTs
    [324536] = { name = "Malefic Rapture", sp = 0.40, school = "Shadow", type = "Direct", spec = "Affliction" },
    
    -- Drain Soul - Channeled damage, execute bonus
    [198590] = { name = "Drain Soul", sp = 0.10, school = "Shadow", type = "Channel", duration = 5, spec = "Affliction" },
    
    -- Seed of Corruption - AoE DoT that explodes
    [27243] = { name = "Seed of Corruption", sp = 0.15, school = "Shadow", type = "DoT", isAoE = true, spec = "Affliction" },
    [27285] = { name = "Seed of Corruption", sp = 0.30, school = "Shadow", type = "Direct", note = "Explosion", isAoE = true, spec = "Affliction" },
    
    -- Phantom Singularity - Talent, large AoE DoT
    [205179] = { name = "Phantom Singularity", sp = 0.80, school = "Shadow", type = "DoT", duration = 16, isAoE = true, spec = "Affliction" },
    
    -- Vile Taint - Ground AoE DoT
    [278350] = { name = "Vile Taint", sp = 0.35, school = "Shadow", type = "DoT", duration = 10, isAoE = true, spec = "Affliction" },
    
    -- Soul Rot - Multi-target DoT
    [386997] = { name = "Soul Rot", sp = 0.35, school = "Shadow", type = "DoT", duration = 8, isAoE = true, spec = "Affliction" },
    
    -- Haunt - Direct damage + debuff
    [48181] = { name = "Haunt", sp = 0.72, school = "Shadow", type = "Direct", spec = "Affliction" },
    
    -- Siphon Life - Talent DoT that heals
    [63106] = { name = "Siphon Life", sp = 0.08, school = "Shadow", type = "DoT", duration = 15, healsForDamage = true, spec = "Affliction" },
    
    -- Summon Darkglare - Cooldown, empowers DoTs
    [205180] = { name = "Summon Darkglare", sp = 0, school = "Shadow", type = "Summon", spec = "Affliction" },
    
    -- ========================================================================
    -- DEMONOLOGY SPEC
    -- ========================================================================
    
    -- Shadow Bolt - Basic filler
    [686] = { name = "Shadow Bolt", sp = 0.62, school = "Shadow", type = "Direct", spec = "Demonology" },
    
    -- Demonbolt - Empowered filler after core
    [264178] = { name = "Demonbolt", sp = 0.72, school = "Shadow", type = "Direct", spec = "Demonology" },
    
    -- Hand of Gul'dan - AoE, summons imps
    [105174] = { name = "Hand of Gul'dan", sp = 0.50, school = "Shadow", type = "Direct", isAoE = true, spec = "Demonology" },
    
    -- Call Dreadstalkers - Summon attack demons
    [104316] = { name = "Call Dreadstalkers", sp = 0.40, school = "Shadow", type = "Summon", spec = "Demonology" },
    
    -- Summon Demonic Tyrant - Major cooldown
    [265187] = { name = "Summon Demonic Tyrant", sp = 0, school = "Shadow", type = "Summon", spec = "Demonology" },
    
    -- Implosion - Sacrifices imps for AoE
    [196277] = { name = "Implosion", sp = 0.35, school = "Shadow", type = "Direct", isAoE = true, spec = "Demonology" },
    
    -- Doom - Long duration DoT
    [603] = { name = "Doom", sp = 2.50, school = "Shadow", type = "DoT", duration = 15, spec = "Demonology" },
    
    -- Bilescourge Bombers - Talent ground AoE
    [267211] = { name = "Bilescourge Bombers", sp = 0.30, school = "Shadow", type = "DoT", isAoE = true, spec = "Demonology" },
    
    -- Demonic Strength - Empowers Felguard
    [267171] = { name = "Demonic Strength", sp = 0, type = "Buff", spec = "Demonology" },
    
    -- Soul Strike - Felguard ability
    [264057] = { name = "Soul Strike", sp = 0.30, school = "Shadow", type = "Direct", spec = "Demonology" },
    
    -- Nether Portal - Summon random demons
    [267217] = { name = "Nether Portal", sp = 0, school = "Shadow", type = "Summon", spec = "Demonology" },
    
    -- Grimoire: Felguard - Extra Felguard
    [111898] = { name = "Grimoire: Felguard", sp = 0, school = "Shadow", type = "Summon", spec = "Demonology" },
    
    -- ========================================================================
    -- DESTRUCTION SPEC
    -- ========================================================================
    
    -- Incinerate - Basic Fire filler
    [29722] = { name = "Incinerate", sp = 0.58, school = "Fire", type = "Direct", spec = "Destruction" },
    
    -- Chaos Bolt - Hard-hitting always-crit
    [116858] = { name = "Chaos Bolt", sp = 1.80, school = "Chaos", type = "Direct", spec = "Destruction" },
    
    -- Immolate - Fire DoT
    [348] = { name = "Immolate", sp = 0.15, school = "Fire", type = "DoT", dotSp = 0.18, duration = 18, spec = "Destruction" },
    
    -- Conflagrate - Fire burst, generates shards
    [17962] = { name = "Conflagrate", sp = 0.55, school = "Fire", type = "Direct", spec = "Destruction" },
    
    -- Rain of Fire - Ground AoE
    [5740] = { name = "Rain of Fire", sp = 0.20, school = "Fire", type = "DoT", duration = 8, isAoE = true, spec = "Destruction" },
    
    -- Havoc - Cleave ability (buff)
    [80240] = { name = "Havoc", sp = 0, type = "Buff", spec = "Destruction" },
    
    -- Shadowburn - Execute
    [17877] = { name = "Shadowburn", sp = 0.60, school = "Fire", type = "Direct", spec = "Destruction" },
    
    -- Soul Fire - Slow hard-hitting cast
    [6353] = { name = "Soul Fire", sp = 1.20, school = "Fire", type = "Direct", spec = "Destruction" },
    
    -- Summon Infernal - Major cooldown
    [1122] = { name = "Summon Infernal", sp = 0, school = "Fire", type = "Summon", spec = "Destruction" },
    
    -- Channel Demonfire - Shoots bolts from Immolate targets
    [196447] = { name = "Channel Demonfire", sp = 0.18, school = "Fire", type = "Channel", duration = 3, spec = "Destruction" },
    
    -- Cataclysm - Talent AoE applies Immolate
    [152108] = { name = "Cataclysm", sp = 1.20, school = "Fire", type = "Direct", isAoE = true, spec = "Destruction" },
    
    -- Dimensional Rift - Random bolts
    [387976] = { name = "Dimensional Rift", sp = 0.80, school = "Chaos", type = "Direct", spec = "Destruction" },
    
    -- ========================================================================
    -- SHARED ABILITIES (All Specs)
    -- ========================================================================
    
    -- Shadow Bolt (shared version for non-Demo)
    [232670] = { name = "Shadow Bolt", sp = 0.50, school = "Shadow", type = "Direct", spec = "All" },
    
    -- Drain Life - Channeled heal
    [234153] = { name = "Drain Life", sp = 0.15, school = "Shadow", type = "Channel", duration = 5, healsForDamage = true, spec = "All" },
    
    -- Health Funnel - Heal pet
    [755] = { name = "Health Funnel", sp = 0.28, school = "Shadow", type = "Channel", isHeal = true, spec = "All" },
    
    -- Mortal Coil - Horror + heal
    [6789] = { name = "Mortal Coil", sp = 0.05, school = "Shadow", type = "Direct", isHeal = true, spec = "All" },
    
    -- Unending Resolve - Defensive cooldown
    [104773] = { name = "Unending Resolve", sp = 0, type = "Defensive", spec = "All" },
    
    -- Dark Pact - Shield absorb
    [108416] = { name = "Dark Pact", sp = 0, type = "Shield", spec = "All" },
    
    -- Demonic Circle: Teleport
    [48020] = { name = "Demonic Circle: Teleport", sp = 0, type = "Utility", spec = "All" },
    
    -- Soulstone - Battle rez
    [20707] = { name = "Soulstone", sp = 0, type = "Utility", spec = "All" },
    
    -- Create Healthstone
    [6201] = { name = "Create Healthstone", sp = 0, type = "Utility", spec = "All" },
    
    -- Ritual of Summoning
    [698] = { name = "Ritual of Summoning", sp = 0, type = "Utility", spec = "All" },
    
    -- Banish
    [710] = { name = "Banish", sp = 0, type = "CC", spec = "All" },
    
    -- Fear
    [5782] = { name = "Fear", sp = 0, type = "CC", spec = "All" },
    
    -- Howl of Terror
    [5484] = { name = "Howl of Terror", sp = 0, type = "CC", isAoE = true, spec = "All" },
    
    -- Shadowfury - AoE stun
    [30283] = { name = "Shadowfury", sp = 0.20, school = "Shadow", type = "Direct", isAoE = true, spec = "All" },
    
    -- ========================================================================
    -- DEMON SUMMONS
    -- ========================================================================
    
    -- Summon Imp
    [688] = { name = "Summon Imp", sp = 0, type = "Summon", spec = "All" },
    
    -- Summon Voidwalker
    [697] = { name = "Summon Voidwalker", sp = 0, type = "Summon", spec = "All" },
    
    -- Summon Felhunter
    [691] = { name = "Summon Felhunter", sp = 0, type = "Summon", spec = "All" },
    
    -- Summon Succubus / Incubus
    [712] = { name = "Summon Succubus", sp = 0, type = "Summon", spec = "All" },
    [713] = { name = "Summon Incubus", sp = 0, type = "Summon", spec = "All" },
    
    -- Summon Felguard (Demo only)
    [30146] = { name = "Summon Felguard", sp = 0, type = "Summon", spec = "Demonology" },
    
    -- ========================================================================
    -- HERO TALENTS - HELLCALLER (Affliction/Destruction)
    -- ========================================================================
    
    -- Wither - Replaces Corruption, spreads
    [445468] = { name = "Wither", sp = 0.14, school = "Shadow", type = "DoT", duration = 18, spec = "Hellcaller" },
    
    -- Mark of Xavius - Extends DoTs
    [445454] = { name = "Mark of Xavius", sp = 0, type = "Debuff", spec = "Hellcaller" },
    
    -- Blackened Soul - Damage proc
    [445421] = { name = "Blackened Soul", sp = 0.55, school = "Shadow", type = "Direct", spec = "Hellcaller" },
    
    -- Bleakheart Tactics - Passive
    [445420] = { name = "Bleakheart Tactics", sp = 0, type = "Passive", spec = "Hellcaller" },
    
    -- Xalan's Cruelty - Proc buff
    [445450] = { name = "Xalan's Cruelty", sp = 0, type = "Buff", spec = "Hellcaller" },
    
    -- ========================================================================
    -- HERO TALENTS - SOUL HARVESTER (Affliction/Demonology)
    -- ========================================================================
    
    -- Demonic Soul - Resource generation
    [445385] = { name = "Demonic Soul", sp = 0, type = "Buff", spec = "Soul Harvester" },
    
    -- Succulent Soul - Soul shard proc
    [445403] = { name = "Succulent Soul", sp = 0, type = "Passive", spec = "Soul Harvester" },
    
    -- Necrolyte Teachings - Summon enhancement
    [445389] = { name = "Necrolyte Teachings", sp = 0, type = "Passive", spec = "Soul Harvester" },
    
    -- Shared Fate - DoT extension
    [445392] = { name = "Shared Fate", sp = 0, type = "Passive", spec = "Soul Harvester" },
    
    -- Soul Anathema - DoT proc
    [445413] = { name = "Soul Anathema", sp = 0.30, school = "Shadow", type = "DoT", spec = "Soul Harvester" },
    
    -- ========================================================================
    -- HERO TALENTS - DIABOLIST (Demonology/Destruction)
    -- ========================================================================
    
    -- Diabolic Ritual - Major cooldown enhancement
    [445422] = { name = "Diabolic Ritual", sp = 0, type = "Buff", spec = "Diabolist" },
    
    -- Ruination - Empowered bolt
    [445465] = { name = "Ruination", sp = 1.50, school = "Shadow", type = "Direct", spec = "Diabolist" },
    
    -- Infernal Bolt - Empowered demon damage
    [445428] = { name = "Infernal Bolt", sp = 0.75, school = "Fire", type = "Direct", spec = "Diabolist" },
    
    -- Cloven Soul - Debuff enhancer
    [445443] = { name = "Cloven Soul", sp = 0, type = "Debuff", spec = "Diabolist" },
    
    -- Touch of Rancora - DoT component
    [445445] = { name = "Touch of Rancora", sp = 0.25, school = "Shadow", type = "DoT", spec = "Diabolist" },
    
    -- ========================================================================
    -- PET ABILITIES - IMP
    -- ========================================================================
    
    -- Firebolt - Imp basic attack
    [3110] = { name = "Firebolt", sp = 0.25, school = "Fire", type = "Direct", isPet = true, petName = "Imp" },
    
    -- Cauterize Master - Imp dispel magic on warlock
    [119899] = { name = "Cauterize Master", sp = 0, type = "Utility", isPet = true, petName = "Imp" },
    
    -- Flee - Imp escape
    [89792] = { name = "Flee", sp = 0, type = "Utility", isPet = true, petName = "Imp" },
    
    -- Singe Magic - Imp dispel (single target)
    [89808] = { name = "Singe Magic", sp = 0, type = "Utility", isPet = true, petName = "Imp" },
    
    -- ========================================================================
    -- PET ABILITIES - VOIDWALKER
    -- ========================================================================
    
    -- Shadow Shield - Voidwalker shield (reworked)
    [115236] = { name = "Shadow Shield", sp = 0, type = "Shield", isPet = true, petName = "Voidwalker" },
    
    -- Suffering - Voidwalker taunt
    [17735] = { name = "Suffering", sp = 0, type = "Utility", isPet = true, petName = "Voidwalker" },
    
    -- Threatening Presence - Voidwalker threat aura
    [134477] = { name = "Threatening Presence", sp = 0, type = "Buff", isPet = true, petName = "Voidwalker" },
    
    -- Void Reflexes - Voidwalker passive threat
    [117225] = { name = "Void Reflexes", sp = 0, type = "Passive", isPet = true, petName = "Voidwalker" },
    
    -- Consume Shadows - Voidwalker self-heal out of combat
    [3716] = { name = "Consume Shadows", sp = 0.50, school = "Shadow", type = "Heal", isHeal = true, isPet = true, petName = "Voidwalker" },
    
    -- Shadow Bulwark - Voidwalker defensive cooldown
    [17767] = { name = "Shadow Bulwark", sp = 0, type = "Defensive", isPet = true, petName = "Voidwalker" },
    
    -- ========================================================================
    -- PET ABILITIES - FELHUNTER
    -- ========================================================================
    
    -- Shadow Bite - Felhunter basic attack
    [54049] = { name = "Shadow Bite", sp = 0.40, school = "Shadow", type = "Direct", isPet = true, petName = "Felhunter" },
    
    -- Devour Magic - Felhunter dispel (enemy buff removal)
    [19505] = { name = "Devour Magic", sp = 0, type = "Utility", isPet = true, petName = "Felhunter" },
    
    -- Spell Lock - Felhunter interrupt + silence
    [19647] = { name = "Spell Lock", sp = 0, type = "Interrupt", isPet = true, petName = "Felhunter" },
    
    -- Clone Magic - Felhunter steals beneficial magic
    [115284] = { name = "Clone Magic", sp = 0, type = "Utility", isPet = true, petName = "Felhunter" },
    
    -- ========================================================================
    -- PET ABILITIES - SUCCUBUS / INCUBUS
    -- ========================================================================
    
    -- Lash of Pain - Succubus/Incubus basic attack
    [7814] = { name = "Lash of Pain", sp = 0.35, school = "Shadow", type = "Direct", isPet = true, petName = "Succubus" },
    
    -- Seduction - Succubus/Incubus CC
    [6358] = { name = "Seduction", sp = 0, type = "CC", isPet = true, petName = "Succubus" },
    
    -- Whiplash - Succubus/Incubus AoE knockback
    [6360] = { name = "Whiplash", sp = 0.20, school = "Shadow", type = "Direct", isAoE = true, isPet = true, petName = "Succubus" },
    
    -- Lesser Invisibility - Succubus/Incubus stealth
    [7870] = { name = "Lesser Invisibility", sp = 0, type = "Buff", isPet = true, petName = "Succubus" },
    
    -- ========================================================================
    -- PET ABILITIES - FELGUARD (Demonology)
    -- ========================================================================
    
    -- Felstorm - Felguard AoE spin attack
    [89751] = { name = "Felstorm", sp = 0.20, school = "Physical", type = "Channel", duration = 5, isAoE = true, isPet = true, petName = "Felguard" },
    
    -- Legion Strike - Felguard cleave attack
    [30213] = { name = "Legion Strike", sp = 0.35, school = "Physical", type = "Direct", isPet = true, petName = "Felguard" },
    
    -- Axe Toss - Felguard stun
    [89766] = { name = "Axe Toss", sp = 0, type = "CC", isPet = true, petName = "Felguard" },
    
    -- Pursuit - Felguard charge
    [30151] = { name = "Pursuit", sp = 0.20, school = "Physical", type = "Direct", isPet = true, petName = "Felguard" },
    
    -- Threatening Presence - Felguard threat stance
    [134481] = { name = "Threatening Presence", sp = 0, type = "Buff", isPet = true, petName = "Felguard" },
    
    -- Demonic Strength - Felguard empowered Felstorm (handled by player spell)
    
    -- ========================================================================
    -- PET ABILITIES - DEMONOLOGY SUMMONS
    -- ========================================================================
    
    -- Wild Imp - Fel Firebolt
    [104318] = { name = "Fel Firebolt", sp = 0.12, school = "Fire", type = "Direct", isPet = true, petName = "Wild Imp" },
    
    -- Dreadstalker - Dreadbite
    [271971] = { name = "Dreadbite", sp = 0.25, school = "Shadow", type = "Direct", isPet = true, petName = "Dreadstalker" },
    
    -- Vilefiend - Bile Spit
    [267999] = { name = "Bile Spit", sp = 0.35, school = "Shadow", type = "Direct", isPet = true, petName = "Vilefiend" },
    
    -- Vilefiend - Headbutt
    [267997] = { name = "Headbutt", sp = 0.50, school = "Physical", type = "Direct", isPet = true, petName = "Vilefiend" },
    
    -- Demonic Tyrant - Demonfire
    [270481] = { name = "Demonfire", sp = 0.40, school = "Shadow", type = "Direct", isPet = true, petName = "Demonic Tyrant" },
    
    -- Darkglare - Eye Beam
    [205231] = { name = "Eye Beam", sp = 0.35, school = "Shadow", type = "Channel", isPet = true, petName = "Darkglare" },
    
    -- ========================================================================
    -- PET ABILITIES - INFERNAL (Destruction)
    -- ========================================================================
    
    -- Infernal - Immolation
    [19483] = { name = "Immolation", sp = 0.15, school = "Fire", type = "DoT", isAoE = true, isPet = true, petName = "Infernal" },
    
    -- Infernal - Meteor Strike (on summon)
    [171017] = { name = "Meteor Strike", sp = 0.60, school = "Fire", type = "Direct", isAoE = true, isPet = true, petName = "Infernal" },
    
    -- Infernal Awakening - Stun on impact
    [22703] = { name = "Infernal Awakening", sp = 0.40, school = "Fire", type = "Direct", isAoE = true, isPet = true, petName = "Infernal" },
    
    -- ========================================================================
    -- PET ABILITIES - OBSERVER/SHIVARRA/ETC (Grimoire summons, if applicable)
    -- ========================================================================
    
    -- Observer - Tongue Lash
    [115782] = { name = "Tongue Lash", sp = 0.30, school = "Shadow", type = "Direct", isPet = true, petName = "Observer" },
    
    -- Observer - Optical Blast
    [115781] = { name = "Optical Blast", sp = 0.40, school = "Shadow", type = "Direct", isPet = true, petName = "Observer", note = "Interrupt" },
    
    -- Shivarra - Fellash
    [115770] = { name = "Fellash", sp = 0.35, school = "Shadow", type = "Direct", isPet = true, petName = "Shivarra" },
    
    -- Shivarra - Mesmerize
    [115268] = { name = "Mesmerize", sp = 0, type = "CC", isPet = true, petName = "Shivarra" },
    
    -- Wrathguard - Mortal Cleave
    [115831] = { name = "Mortal Cleave", sp = 0.45, school = "Physical", type = "Direct", isPet = true, petName = "Wrathguard" },
    
    -- Wrathguard - Wrathstorm
    [115832] = { name = "Wrathstorm", sp = 0.25, school = "Physical", type = "Channel", duration = 5, isAoE = true, isPet = true, petName = "Wrathguard" },
}
