[WIP] Shaman spells
ckaotik opened this issue ยท 4 comments
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)
})
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
})
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.
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 ;)