local _, ns = ...
local D = ns.RemindersData
D.capabilities = D.capabilities or {}

D.capabilities.dispel_curse = {
    label       = "Curse Removal",
    description = "Ability to remove Curse debuffs from friendly targets. Many dungeon bosses and trash apply dangerous curses that, left unchecked, can overwhelm healing.",
    icon        = 136082,
    color       = { 0.6, 0.2, 0.8 },
    tags        = { "dispel", "curse" },

    providers = {
        {
            class     = "MAGE",
            specID    = nil,
            spellID   = 475,
            spellName = "Remove Curse",
            talentSpellID = 475,
            note      = "No cooldown. Can rapidly cleanse overlapping curses.",
            icon      = 136082,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Curse" },
        },
        {
            class     = "DRUID",
            specID    = 105,
            spellID   = 88423,
            spellName = "Nature's Cure",
            note      = "Also removes poison and magic (Resto only). 8 sec CD.",
            icon      = 236288,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Curse", "Magic", "Poison" },
        },
        {
            class     = "SHAMAN",
            specID    = 264,
            spellID   = 77130,
            spellName = "Purify Spirit",
            note      = "Resto only. Also removes magic. 8 sec CD.",
            icon      = 236288,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Curse", "Magic" },
        },
    },

    conditions = {
        none = {
            severity    = "critical",
            banner      = "No curse dispel in group!",
            panelStatus = "NONE",
            detail      = "Nobody in your group can remove curses. This will be dangerous on curse-heavy encounters.",
            suggestion  = "Invite a Mage (no-CD Remove Curse) or swap to a healer spec with curse removal (Resto Druid/Shaman).",
        },
        single = {
            severity    = "info",
            banner      = nil,
            panelStatus = nil,
            detail      = "One curse dispeller. Be mindful of overlapping curse applications -- they may fall behind on heavy waves.",
            suggestion  = nil,
        },
        adequate = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "Curse removal is well covered.",
            suggestion  = nil,
        },
    },

    thresholds = { none = 0, single = 1, adequate = 2 },

    personalReminder = {
        severity = "warning",
        banner   = "You can talent into curse removal!",
        detail   = "Your class has access to %spellName% but you don't currently have it. Consider picking it up for this content.",
    },
}

D.capabilities.dispel_poison = {
    label       = "Poison Removal",
    description = "Ability to remove Poison debuffs from friendly targets.",
    icon        = 136067,
    color       = { 0.0, 0.6, 0.1 },
    tags        = { "dispel", "poison" },

    providers = {
        {
            class     = "DRUID",
            specID    = 105,
            spellID   = 88423,
            spellName = "Nature's Cure",
            note      = "Also removes curses and magic (Resto only). 8 sec CD.",
            icon      = 236288,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Curse", "Magic", "Poison" },
        },
        {
            class     = "PALADIN",
            specID    = 65,
            spellID   = 4987,
            spellName = "Cleanse",
            note      = "Holy only. Also removes magic and disease. 8 sec CD.",
            icon      = 135949,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "MONK",
            specID    = 270,
            spellID   = 115450,
            spellName = "Detox",
            note      = "Mistweaver only. Also removes magic. 8 sec CD.",
            icon      = 460692,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "EVOKER",
            specID    = 1468,
            spellID   = 365585,
            spellName = "Expunge",
            talentSpellID = 365585,
            note      = "Preservation only. Also removes bleed. 8 sec CD.",
            icon      = 4630445,
            rangeText = "Medium-Short",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Poison", "Bleed" },
        },
    },

    conditions = {
        none = {
            severity    = "critical",
            banner      = "No poison dispel in group!",
            panelStatus = "NONE",
            detail      = "Nobody can remove poisons. Stacking poison DoTs will be very difficult to heal through.",
            suggestion  = "Bring a healer that can cleanse poison: Resto Druid, Holy Paladin, MW Monk, or Pres Evoker.",
        },
        single = {
            severity    = "info",
            banner      = nil,
            panelStatus = nil,
            detail      = "One poison dispeller. Priority-dispel on high stacks.",
            suggestion  = nil,
        },
        adequate = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "Poison removal is well covered.",
            suggestion  = nil,
        },
    },

    thresholds = { none = 0, single = 1, adequate = 2 },

    personalReminder = {
        severity = "warning",
        banner   = "You can talent into poison removal!",
        detail   = "Your class has access to %spellName%. Consider it for this content.",
    },
}

D.capabilities.dispel_disease = {
    label       = "Disease Removal",
    description = "Ability to remove Disease debuffs from friendly targets.",
    icon        = 136066,
    color       = { 0.6, 0.4, 0.0 },
    tags        = { "dispel", "disease" },

    providers = {
        {
            class     = "PALADIN",
            specID    = 65,
            spellID   = 4987,
            spellName = "Cleanse",
            note      = "Holy only. Also removes magic and poison. 8 sec CD.",
            icon      = 135949,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "MONK",
            specID    = 270,
            spellID   = 115450,
            spellName = "Detox",
            note      = "Mistweaver Detox also removes magic. 8 sec CD.",
            icon      = 460692,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "PRIEST",
            specID    = 256,
            spellID   = 527,
            spellName = "Purify",
            note      = "Disc only. Also removes magic. 8 sec CD.",
            icon      = 135894,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic" },
        },
        {
            class     = "PRIEST",
            specID    = 257,
            spellID   = 527,
            spellName = "Purify",
            note      = "Holy only. Also removes magic. 8 sec CD.",
            icon      = 135894,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic" },
        },
    },

    conditions = {
        none = {
            severity    = "warning",
            banner      = "No disease dispel in group!",
            panelStatus = "NONE",
            detail      = "No one can remove diseases. Some dungeons have dangerous disease effects that stack if not removed.",
            suggestion  = "A Holy Paladin, Priest healer, or MW Monk can remove disease.",
        },
        single = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "One disease dispeller. Should be sufficient for most content.",
            suggestion  = nil,
        },
        adequate = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "Disease removal is well covered.",
            suggestion  = nil,
        },
    },

    thresholds = { none = 0, single = 1, adequate = 2 },

    personalReminder = {
        severity = "warning",
        banner   = "You can talent into disease removal!",
        detail   = "Your class has access to %spellName%. Consider it for this content.",
    },
}

D.capabilities.dispel_bleed = {
    label       = "Bleed Removal",
    description = "Ability to remove Bleed debuffs from friendly targets. Rare, but valuable when physical DoTs would otherwise force heavy defensive usage.",
    icon        = 4630445,
    color       = { 0.85, 0.25, 0.25 },
    tags        = { "dispel", "bleed" },

    providers = {
        {
            class     = "EVOKER",
            specID    = 1468,
            spellID   = 365585,
            spellName = "Expunge",
            talentSpellID = 365585,
            note      = "Preservation only. Also removes poison. 8 sec CD.",
            icon      = 4630445,
            rangeText = "Medium-Short",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Poison", "Bleed" },
        },
    },

    conditions = {
        none = {
            severity    = "warning",
            banner      = "No bleed removal in group!",
            panelStatus = "NONE",
            detail      = "Nobody in your group can remove bleed effects. This is usually manageable, but some physical DoTs are much safer with a bleed cleanse.",
            suggestion  = "If the route or delve has dangerous bleeds, a Preservation Evoker can cover them with Expunge.",
        },
        single = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "One bleed dispeller is available.",
            suggestion  = nil,
        },
        adequate = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "Bleed removal is covered.",
            suggestion  = nil,
        },
    },

    thresholds = { none = 0, single = 1, adequate = 1 },

    personalReminder = nil,
}

D.capabilities.dispel_magic = {
    label       = "Magic Removal",
    description = "Ability to remove Magic debuffs from friendly targets.",
    icon        = 136120,
    color       = { 0.2, 0.5, 1.0 },
    tags        = { "dispel", "magic" },

    providers = {
        {
            class     = "PRIEST",
            specID    = 256,
            spellID   = 527,
            spellName = "Purify",
            note      = "Disc only. Also removes disease. 8 sec CD.",
            icon      = 135894,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic" },
        },
        {
            class     = "PRIEST",
            specID    = 257,
            spellID   = 527,
            spellName = "Purify",
            note      = "Holy only. Also removes disease. 8 sec CD.",
            icon      = 135894,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic" },
        },
        {
            class     = "PALADIN",
            specID    = 65,
            spellID   = 4987,
            spellName = "Cleanse",
            note      = "Holy only. Also removes poison and disease. 8 sec CD.",
            icon      = 135949,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 8000,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "MONK",
            specID    = 270,
            spellID   = 115450,
            spellName = "Detox",
            note      = "Mistweaver only. Also removes poison. 8 sec CD.",
            icon      = 460692,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Disease", "Magic", "Poison" },
        },
        {
            class     = "DRUID",
            specID    = 105,
            spellID   = 88423,
            spellName = "Nature's Cure",
            note      = "Resto only. Also removes curse and poison. 8 sec CD.",
            icon      = 236288,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Curse", "Magic", "Poison" },
        },
        {
            class     = "SHAMAN",
            specID    = 264,
            spellID   = 77130,
            spellName = "Purify Spirit",
            note      = "Resto only. Also removes curse. 8 sec CD.",
            icon      = 236288,
            rangeText = "Long",
            castTimeMS = 0,
            cooldownMS = 1500,
            dispelTargets = { "Curse", "Magic" },
        },
    },

    conditions = {
        none = {
            severity    = "critical",
            banner      = "No magic dispel in group!",
            panelStatus = "NONE",
            detail      = "Nobody can remove magic debuffs from allies. Many boss and trash mechanics apply magic effects that must be dispelled quickly.",
            suggestion  = "Bring a healer with magic dispel coverage such as Priest, Holy Paladin, MW Monk, Resto Druid, or Resto Shaman.",
        },
        single = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "One magic dispeller (your healer). Standard for 5-man.",
            suggestion  = nil,
        },
        adequate = {
            severity    = nil,
            banner      = nil,
            panelStatus = nil,
            detail      = "Magic removal is well covered.",
            suggestion  = nil,
        },
    },

    thresholds = { none = 0, single = 1, adequate = 1 },

    personalReminder = nil,
}

