LibPlayerSpells-1.0

52.9k Downloads

[WIP] Shaman spells

ckaotik opened this issue ยท 4 comments

commented

Yay, it's me again ;) I added a whole bunch of effects to your shaman list, however I think I might have gone overboard. Would be great if you could fix my mistakes (that I made for sure) as I've listed some spells two or three times. But that's probably something that's easier to fix for you as I don't fully grasp your library.

Some weird things I've noticed by reading AdiButtonAuras's config, that are probably wrong:

  • it thinks Frost Shock is a debuff
  • same goes for Earth Shock, however it says "Show the 'bad' border when the debuff is found on the targeted enemy." (incorrect) as well as "[...] when your debuff Weakened Blows is found on the targeted enemy"
  • Lava Burst says to "show good border if Ascendance is found on target" (should be on yourself?) while Ascendance itself shows the correct "on yourself" and Lava Burst gets highlighted in green while Ascendance is active.
  • Unleashed Elements: if Unleash Flame is found on target ally (should be self?)
  • there's some more cases like this, e.g. Spiritwalker's Grace (target ally instead of self)

As you see, there's quite a few tweaks still missing, but I hope I've gathered all the relevant spells.

There's also some bits and pieces that I'm totally unsure how (or even if) to put them into all this:

73684, -- Unleash Earth (taunt)
8042, 8050, 8056, -- Shocks with shared cooldown

talents:
Frozen Power (63374) => Earth Shock (8042)
Nature's Guardian (30884)
Windwalk Totem (108273)

glyphs:
Shamanistic Rage (63280) => Shamanistic Rage (30823) removes self debuffs

Anyways, here's what I've got so far :)

local lib = LibStub("LibPlayerSpells-1.0")
if not lib then return end
lib:__RegisterSpells("SHAMAN", "50400", 3, {
    COOLDOWN = {
        [16190] = 'MANA_REGEN',  -- Mana Tide Totem
        [51490] = "PERSONAL MANA_REGEN", -- Thunderstorm
          2062, -- Earth Elemental Totem
          2484, -- Earthbind Totem
          2894, -- Fire Elemental Totem
          5394, -- Healing Stream Totem
          8143, -- Tremor Totem
          8177, -- Grounding Totem
         51485, -- Earthgrab Totem (talent)
         98008, -- Spirit Link Totem
        108269, -- Capacitator Totem
        108270, -- Stone Bulwark Totem (talent)
        108280, -- Healing Tide Totem
        120668, -- Stormlash Totem

         16188, -- Ancestral Swiftness (talent)
         20608, -- Reincarnation
         51505, -- Lava Burst
         51533, -- Feral Spirit
         61882, -- Earthquake
         73680, -- Unleash Elements
        108281, -- Ancestral Guidance (talent)
        108285, -- Call of the Elements (talent)
        117012, -- Unleashed Fury (talent)
        117014, -- Elemental Blast (talent)
        INTERRUPT = {
             57994, -- Wind Shear
            113287, -- Solar Beam (Symbiosis)
        },
        AURA = {
            73920, -- Healing Rain
            HELPFUL = {
                61295, -- Riptide
            },
            PERSONAL = {
                HELPFUL = {
                     79206, -- Spiritwalker's Grace
                },
                SURVIVAL = {
                     30823, -- Shamanistic Rage
                    108270, -- Stone Bulwark Totem (talent)
                    108271, -- Astral Shift (talent)
                },
                BURST = {
                     16166, -- Elemental Mastery (talent)
                    114049, -- Ascendance
                },
            },
        },
    },
    AURA = {
        PERSONAL = {
            HELPFUL = {
                UNIQUE_AURA = {
                      324, -- Lightning Shield
                    52127, -- Water Shield
                },
                  8024, -- Flametongue Weapon
                  8033, -- Frostbrand Weapon
                  8017, -- Rockbiter Weapon
                  8232, -- Windfury Weapon
                 51564, -- Tidal Waves
                 51730, -- Earthliving Weapon
                 73681, -- Unleash Wind
                 73683, -- Unleash Flame
                 73685, -- Unleash Life
                118472, -- Unleashed Fury (Windfury)
                118473, -- Unleashed Fury (Earthliving)
                118474, -- Unleashed Fury (Rockbiter)
                118475, -- Unleashed Fury (Frostbrand)
                114050, -- Ascendance (Elemental)
                114051, -- Ascendance (Enhancement)
                114052, -- Ascendance (Restoration)
                118522, -- Elemental Blast
            },
            IMPORTANT = {
                  324, -- Lighning Shield (Elemental, for Fulmination)
                16246, -- Clearcasting (buff)
            },
        },
        HELPFUL = {
            [  974] = 'UNIQUE_AURA', -- Earth Shield
             51945, -- Earthliving (proc)
            105284, -- Ancestral Vigor (applied by Riptide)
        },
        HARMFUL = {
              8034, -- Frostbrand (proc)
              8050, -- Flame Shock
             73682, -- Unleash Frost
             73684, -- Unleash Earth (taunt)
            115798, -- Weakened Blows
            118470, -- Unleashed Fury (Flametongue)
        },
    },
    RAIDBUFF = {
        [  2825] = 'BURST_HASTE', -- Bloodlust (Horde shaman)
        [ 30809] = 'ATK_SPEED',   -- Unleashed Rage
        [ 32182] = 'BURST_HASTE', -- Heroism (Alliance shaman)
        [ 77747] = 'SPL_POWER',   -- Burning Wrath
        [116956] = 'MASTERY',     -- Grace of Air
    },
    DISPEL = {
        [370] = "HARMFUL", -- Purge
        ["HELPFUL COOLDOWN"] = {
            51886, -- Cleanse Spirit
            77130, -- Purify Spirit
        },
    },
}, {
    -- Map aura to provider
    [ 73683] =  73680, -- Unleash Elements (Flametongue)
    [ 73681] =  73680, -- Unleash Elements (Windfury)
    [ 73685] =  73680, -- Unleash Elements (Earthliving)
    [ 73684] =  73680, -- Unleash Elements (Rockbiter)
    [ 73682] =  73680, -- Unleash Elements (Frostbrand)
    [118470] = 117012, -- Unleashed Fury (Flametongue)
    [118472] = 117012, -- Unleashed Fury (Windfury)
    [118473] = 117012, -- Unleashed Fury (Earthliving)
    [118474] = 117012, -- Unleashed Fury (Rockbiter)
    [118475] = 117012, -- Unleashed Fury (Frostbrand)
    [118522] = 117014, -- Elemental Blast
    [114050] = 114049, -- Ascendance (Elemental)
    [114051] = 114049, -- Ascendance (Enhancement)
    [114052] = 114049, -- Ascendance (Restoration)
    [115798] = 8042,   -- Weakened Blows by Earth Shock
}, {
    -- Map aura to modified spell(s)
    [114050] = {114074, 51505}, -- Ascendance (Elemental): Chain Lightning, Lava Burst
    [114051] = 17364, -- Ascendance (Enhancement): Stormstrike
    [114052] = {61295, 73920, 1064, 8004, 77472, 331}, -- Ascendance (Restoration): Riptide, Healing Rain, Chain Heal, Healing Surge, Greater Healing Wave, Healing Wave (any healing spell)
})
commented

Okay, so I made some minor-ish changes and removed duplicates as well as HELPFUL/PERSONAL combinations. I also moved some spells from regular cooldowns into BURST, IMPORTANT and SURVIVAL so AdiSpellHUD tracks them better :)
I have removed the Earth Shock/Weakened Blows combo as well since for some reason, Frost Shock and Weakened Blows are already being recognized by AdiButtonAuras. Weird.

lib:__RegisterSpells("SHAMAN", "50400", 3, {
    COOLDOWN = {
        [16190] = 'MANA_REGEN',  -- Mana Tide Totem
        [51490] = "PERSONAL MANA_REGEN", -- Thunderstorm
          2484, -- Earthbind Totem
          5394, -- Healing Stream Totem
          8143, -- Tremor Totem
          8177, -- Grounding Totem
         51485, -- Earthgrab Totem (talent)
        108269, -- Capacitator Totem
         16188, -- Ancestral Swiftness (talent)
         20608, -- Reincarnation
         51505, -- Lava Burst
         61882, -- Earthquake
         73680, -- Unleash Elements
        108281, -- Ancestral Guidance (talent)
        108285, -- Call of the Elements (talent)
        117012, -- Unleashed Fury (talent)
        117014, -- Elemental Blast (talent)
        INTERRUPT = {
             57994, -- Wind Shear
            113287, -- Solar Beam (Symbiosis)
        },
        AURA = {
            [ 61295] = 'HELPFUL', -- Riptide
            [120668] = 'BURST', -- Stormlash Totem
            PERSONAL = {
                SURVIVAL = {
                      2062, -- Earth Elemental Totem
                     30823, -- Shamanistic Rage
                     98008, -- Spirit Link Totem
                    108270, -- Stone Bulwark Totem (talent)
                    108271, -- Astral Shift (talent)
                    108280, -- Healing Tide Totem
                },
                BURST = {
                      2894, -- Fire Elemental Totem
                     16166, -- Elemental Mastery (talent)
                     51533, -- Feral Spirit
                    114049, -- Ascendance
                },
                79206, -- Spiritwalker's Grace
                73920, -- Healing Rain (indicator)
            },
        },
    },
    AURA = {
        PERSONAL = {
            IMPORTANT = {
                16246, -- Clearcasting (buff)
                53390, -- Tidal Waves
            },
            UNIQUE_AURA = {
                  324, -- Lightning Shield
                52127, -- Water Shield
            },
              8024, -- Flametongue Weapon
              8033, -- Frostbrand Weapon
              8017, -- Rockbiter Weapon
              8232, -- Windfury Weapon
             51730, -- Earthliving Weapon
             73681, -- Unleash Wind
             73683, -- Unleash Flame
             73685, -- Unleash Life
            118472, -- Unleashed Fury (Windfury)
            118473, -- Unleashed Fury (Earthliving)
            118474, -- Unleashed Fury (Rockbiter)
            118475, -- Unleashed Fury (Frostbrand)
            114050, -- Ascendance (Elemental)
            114051, -- Ascendance (Enhancement)
            114052, -- Ascendance (Restoration)
            118522, -- Elemental Blast (talent)
        },
        HELPFUL = {
            [  974] = 'UNIQUE_AURA', -- Earth Shield
             51945, -- Earthliving (proc)
            105284, -- Ancestral Vigor (applied by Riptide)
        },
        HARMFUL = {
              8034, -- Frostbrand (proc)
              8050, -- Flame Shock
              8056, -- Frost Shock
             73682, -- Unleash Frost
             73684, -- Unleash Earth (taunt)
            118470, -- Unleashed Fury (Flametongue)
        },
    },
    RAIDBUFF = {
        [  2825] = 'BURST_HASTE', -- Bloodlust (Horde shaman)
        [ 32182] = 'BURST_HASTE', -- Heroism (Alliance shaman)
        [ 30809] = 'ATK_SPEED',   -- Unleashed Rage
        [ 77747] = 'SPL_POWER',   -- Burning Wrath
        [116956] = 'MASTERY',     -- Grace of Air
    },
    DISPEL = {
        [370] = "HARMFUL", -- Purge
        ["HELPFUL COOLDOWN"] = {
            51886, -- Cleanse Spirit
            77130, -- Purify Spirit
        },
    },
}, {
    -- Map aura to provider
    [ 51945] =  51730, -- Earthliving
    [ 53390] =  51564, -- Tidal Waves
    [ 73683] =  73680, -- Unleash Elements (Flametongue)
    [ 73681] =  73680, -- Unleash Elements (Windfury)
    [ 73685] =  73680, -- Unleash Elements (Earthliving)
    [ 73684] =  73680, -- Unleash Elements (Rockbiter)
    [ 73682] =  73680, -- Unleash Elements (Frostbrand)
    [118470] = 117012, -- Unleashed Fury (Flametongue)
    [118472] = 117012, -- Unleashed Fury (Windfury)
    [118473] = 117012, -- Unleashed Fury (Earthliving)
    [118474] = 117012, -- Unleashed Fury (Rockbiter)
    [118475] = 117012, -- Unleashed Fury (Frostbrand)
    [118522] = 117014, -- Elemental Blast
    [114050] = 114049, -- Ascendance (Elemental)
    [114051] = 114049, -- Ascendance (Enhancement)
    [114052] = 114049, -- Ascendance (Restoration)
}, {
    -- Map aura to modified spell(s)
    [114050] = {114074, 51505}, -- Ascendance (Elemental): Chain Lightning, Lava Burst
    [114051] = 17364, -- Ascendance (Enhancement): Stormstrike
    [114052] = {61295, 73920, 1064, 8004, 77472, 331}, -- Ascendance (Restoration): Riptide, Healing Rain, Chain Heal, Healing Surge, Greater Healing Wave, Healing Wave
    [ 53390] = {8004, 77472, 331}, -- Tidal Waves
})
commented

Here are some hints (though you seem to have got this right):

  • aura-to-provider map: by default, the "provider" is the spell itself (like most dot). When this is not the case, the left-side spell must be listed in the first table, the right-side spell must be found in the player spellbook in order to provide the left-side aura (e.g. if the right-side spell is not found, AdiButtonAuras will not even try to watch for the left-side spell). This can be used to have conditional display depending on a talent or a specialization passive. Most, if not all, specialization specific behavior are implemented by passive spells, which can be found in the spellbook.
  • aura-to-modifier map: by default, the "modified" spell (e.g. where to display the aura with AdiButtonAuras) if the same as the aura (or the provider). When this is not the case, you can list them there. The left-side spell must be in the first table, the right-side spell(s) must be in the spellbook.

Concerning the targeting and other flags, they are detailed there: https://github.com/Adirelle/LibPlayerSpells-1.0/blob/master/LibPlayerSpells-1.0.lua#L79

Basically, HELPFUL, HARMFUL, PERSONAL, PET should be exclusive (maybe I should have named them FRIEND, ENEMY, SELF and PET, but this is too late I suppose). HELPFUL actually means "on the targeted ally" where PERSONAL restricts to the player only. In AdiButtonAuras, this is used to select the unit to watch : HELPFUL => "ally" pseudo-unit (which generally resolves to either "target" or "player"), HARMFUL => "enemy" pseudo-unit (which generally resolves to "target"), PERSONAL => "player", "PET" => "pet". So you should avoid to nest HELPFUL and PERSONAL, even if you can add them in very special cases.

UNIQUE_AURA means there can be only one aura on a given unit, even if several casters use them. This is the case for example for Druids' Symbiosis, or Hunters' Mark. Right now, there is nothing to handle things like Druids' Lifebloom, Mages' and Shaman's armors, etc.

Lastly, avoid listing the same spell several times in the first part, I'm not sure how they are merged exactly.

Great job anyway, keep going on.

commented

Just noticed: Spirit Link is marked as "COOLDOWNS AURA PERSONAL SURVIVAL" but is not player specific, so it should rather be just "COOLDOWN AURA SURVIVAL".

98008, -- Spirit Link Totem

Also, both elemental totems are not applied as auras and should probably only be "COOLDOWN SURVIVAL" and "COOLDOWN BURST" respectively. Same probably goes for Feral Spirit which should be "COOLDOWN BURST", but I'm not sure about that as I don't have an enhancement shaman at hand.

2062, -- Earth Elemental Totem
2894, -- Fire Elemental Totem
51533, -- Feral Spirit

I have to admit, by researching all these spells one gets a whole new grasp on that class ;)

commented

I've learned a lot about the classes I play and those I don't by writing these addons.