You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1198 lines
63 KiB
1198 lines
63 KiB
-- ShamanRestoration.lua
|
|
-- August 2025
|
|
-- Patch 11.2
|
|
|
|
if UnitClassBase( "player" ) ~= "SHAMAN" then return end
|
|
|
|
local addon, ns = ...
|
|
local Hekili = _G[ addon ]
|
|
local class, state = Hekili.Class, Hekili.State
|
|
local spec = Hekili:NewSpecialization( 264 )
|
|
|
|
---- Local function declarations for increased performance
|
|
-- Strings
|
|
local strformat = string.format
|
|
-- Tables
|
|
local insert, remove, sort, wipe = table.insert, table.remove, table.sort, table.wipe
|
|
-- Math
|
|
local abs, ceil, floor, max, sqrt = math.abs, math.ceil, math.floor, math.max, math.sqrt
|
|
|
|
-- Common WoW APIs, comment out unneeded per-spec
|
|
-- local GetSpellCastCount = C_Spell.GetSpellCastCount
|
|
-- local GetSpellInfo = C_Spell.GetSpellInfo
|
|
-- local GetSpellInfo = ns.GetUnpackedSpellInfo
|
|
-- local GetPlayerAuraBySpellID = C_UnitAuras.GetPlayerAuraBySpellID
|
|
-- local FindUnitBuffByID, FindUnitDebuffByID = ns.FindUnitBuffByID, ns.FindUnitDebuffByID
|
|
-- local IsSpellOverlayed = C_SpellActivationOverlay.IsSpellOverlayed
|
|
-- local IsSpellKnownOrOverridesKnown = C_SpellBook.IsSpellInSpellBook
|
|
-- local IsActiveSpell = ns.IsActiveSpell
|
|
|
|
-- Specialization-specific local functions (if any)
|
|
local GetSpecializationInfoByID = _G.GetSpecializationInfoByID
|
|
local GetWeaponEnchantInfo = _G.GetWeaponEnchantInfo
|
|
|
|
spec:RegisterResource( Enum.PowerType.Mana )
|
|
|
|
-- Talents
|
|
spec:RegisterTalents( {
|
|
|
|
-- Shaman
|
|
ancestral_wolf_affinity = { 103610, 382197, 1 }, -- Cleanse Spirit, Wind Shear, Purge, and totem casts no longer cancel Ghost Wolf
|
|
arctic_snowstorm = { 103619, 462764, 1 }, -- Enemies within $s1 yds of your Frost Shock are snared by $s2%
|
|
ascending_air = { 103607, 462791, 1 }, -- Wind Rush Totem's cooldown is reduced by $s1 sec and its movement speed effect lasts an additional $s2 sec
|
|
astral_bulwark = { 103611, 377933, 1 }, -- Astral Shift reduces damage taken by an additional $s1%
|
|
astral_shift = { 103616, 108271, 1 }, -- Shift partially into the elemental planes, taking $s1% less damage for $s2 sec
|
|
brimming_with_life = { 103582, 381689, 1 }, -- Maximum health increased by $s1%, and while you are at full health, Reincarnation cools down $s2% faster
|
|
call_of_the_elements = { 103592, 383011, 1 }, -- Reduces the cooldown of Totemic Recall by $s1 sec
|
|
capacitor_totem = { 103579, 192058, 1 }, -- Summons a totem at the target location that gathers electrical energy from the surrounding air and explodes after $s1 sec, stunning all enemies within $s2 yards for $s3 sec
|
|
chain_heal = { 103588, 1064, 1 }, -- Heals the friendly target for $s1, then jumps up to $s2 yards to heal the $s3 most injured nearby allies. Healing is reduced by $s4% with each jump
|
|
chain_lightning = { 103583, 188443, 1 }, -- Hurls a lightning bolt at the enemy, dealing $s$s2 Nature damage and then jumping to additional nearby enemies. Affects $s3 total targets
|
|
creation_core = { 103592, 383012, 1 }, -- Totemic Recall affects an additional totem
|
|
earth_elemental = { 103585, 198103, 1 }, -- Calls forth a Greater Earth Elemental to protect you and your allies for $s1 min. While this elemental is active, your maximum health is increased by $s2%
|
|
earth_shield = { 103596, 974, 1 }, -- Protects the target with an earthen shield, increasing your healing on them by $s1% and healing them for $s2 when they take damage. This heal can only occur once every $s3 sec. Maximum $s4 charges. Earth Shield can only be placed on the Shaman and one other target at a time. The Shaman can have up to two Elemental Shields active on them
|
|
earthgrab_totem = { 103617, 51485, 1 }, -- Summons a totem at the target location for $s1 sec. The totem pulses every $s2 sec, rooting all enemies within $s3 yards for $s4 sec. Enemies previously rooted by the totem instead suffer $s5% movement speed reduction
|
|
elemental_orbit = { 103602, 383010, 1 }, -- Increases the number of Elemental Shields you can have active on yourself by $s1. You can have Earth Shield on yourself and one ally at the same time
|
|
elemental_resistance = { 103601, 462368, 1 }, -- Healing from Healing Stream Totem reduces Fire, Frost, and Nature damage taken by $s1% for $s2 sec. Healing from Cloudburst Totem reduces Fire, Frost, and Nature damage taken by $s3% for $s4 sec
|
|
elemental_warding = { 103597, 381650, 1 }, -- Reduces all magic damage taken by $s1%
|
|
encasing_cold = { 103619, 462762, 1 }, -- Frost Shock snares its targets by an additional $s1% and its duration is increased by $s2 sec
|
|
enhanced_imbues = { 103606, 462796, 1 }, -- The effects of your weapon and shield imbues are increased by $s1%
|
|
fire_and_ice = { 103605, 382886, 1 }, -- Increases all Fire and Frost damage you deal by $s1%
|
|
frost_shock = { 103604, 196840, 1 }, -- Chills the target with frost, causing $s$s2 Frost damage and reducing the target's movement speed by $s3% for $s4 sec
|
|
graceful_spirit = { 103626, 192088, 1 }, -- Reduces the cooldown of Spiritwalker's Grace by $s1 sec and increases your movement speed by $s2% while it is active
|
|
greater_purge = { 103624, 378773, 1 }, -- Purges the enemy target, removing $s1 beneficial Magic effects
|
|
guardians_cudgel = { 103618, 381819, 1 }, -- When Capacitor Totem fades or is destroyed, another Capacitor Totem is automatically dropped in the same place
|
|
gust_of_wind = { 103591, 192063, 1 }, -- A gust of wind hurls you forward
|
|
healing_stream_totem = { 103590, 5394, 1 }, -- Summons a totem at your feet for $s1 sec that heals an injured party or raid member within $s2 yards for $s3 every $s4 sec. If you already know Healing Stream Totem, instead gain $s5 additional charge of Healing Stream Totem
|
|
hex = { 103623, 51514, 1 }, -- Transforms the enemy into a frog for $s1 min. While hexed, the victim is incapacitated, and cannot attack or cast spells. Damage may cancel the effect. Limit $s2. Only works on Humanoids and Beasts
|
|
improved_purify_spirit = { 81073, 383016, 1 }, -- Purify Spirit additionally removes all Curse effects
|
|
jet_stream = { 103607, 462817, 1 }, -- Wind Rush Totem's movement speed bonus is increased by $s1% and now removes snares
|
|
lava_burst = { 103598, 51505, 1 }, -- Hurls molten lava at the target, dealing $s$s2 Fire damage. Lava Burst will always critically strike if the target is affected by Flame Shock
|
|
lightning_lasso = { 103589, 305483, 1 }, -- Grips the target in lightning, stunning and dealing $s$s2 Nature damage over $s3 sec while the target is lassoed. Can move while channeling
|
|
mana_spring = { 103587, 381930, 1 }, -- Your Lava Burst and Riptide casts restore $s1 mana to you and $s2 allies nearest to you within $s3 yards. Allies can only benefit from one Shaman's Mana Spring effect at a time, prioritizing healers
|
|
natures_fury = { 103622, 381655, 1 }, -- Increases the critical strike chance of your Nature spells and abilities by $s1%
|
|
natures_guardian = { 103613, 30884, 1 }, -- When your health is brought below $s1%, you instantly heal for $s2% of your maximum health. Cannot occur more than once every $s3 sec
|
|
natures_swiftness = { 103620, 378081, 1 }, -- Your next healing or damaging Nature spell is instant cast and costs no mana
|
|
planes_traveler = { 103611, 381647, 1 }, -- Reduces the cooldown of Astral Shift by $s1 sec
|
|
poison_cleansing_totem = { 103609, 383013, 1 }, -- Summons a totem at your feet that removes all Poison effects from a nearby party or raid member within $s1 yards every $s2 sec for $s3 sec
|
|
primordial_bond = { 103612, 381764, 1 }, -- While you have an elemental active, your damage taken is reduced by $s1%
|
|
purge = { 103624, 370, 1 }, -- Purges the enemy target, removing $s1 beneficial Magic effect
|
|
refreshing_waters = { 103594, 378211, 1 }, -- Your Healing Surge is $s1% more effective on yourself
|
|
seasoned_winds = { 103628, 355630, 1 }, -- Interrupting a spell with Wind Shear decreases your damage taken from that spell school by $s1% for $s2 sec. Stacks up to $s3 times
|
|
spirit_walk = { 103591, 58875, 1 }, -- Removes all movement impairing effects and increases your movement speed by $s1% for $s2 sec
|
|
spirit_wolf = { 103581, 260878, 1 }, -- While transformed into a Ghost Wolf, you gain $s1% increased movement speed and $s2% damage reduction every $s3 sec, stacking up to $s4 times
|
|
spiritwalkers_aegis = { 103626, 378077, 1 }, -- When you cast Spiritwalker's Grace, you become immune to Silence and Interrupt effects for $s1 sec
|
|
spiritwalkers_grace = { 103584, 79206, 1 }, -- Calls upon the guidance of the spirits for $s1 sec, permitting movement while casting Shaman spells. Castable while casting. Increases movement speed by $s2%
|
|
static_charge = { 103618, 265046, 1 }, -- Reduces the cooldown of Capacitor Totem by $s1 sec for each enemy it stuns, up to a maximum reduction of $s2 sec
|
|
stone_bulwark_totem = { 103629, 108270, 1 }, -- Summons a totem at your feet that grants you an absorb shield preventing $s$s2 million damage for $s3 sec, and an additional $s4 every $s5 sec for $s6 sec
|
|
thunderous_paws = { 103581, 378075, 1 }, -- Ghost Wolf removes snares and increases your movement speed by an additional $s1% for the first $s2 sec. May only occur once every $s3 sec
|
|
thundershock = { 103621, 378779, 1 }, -- Thunderstorm knocks enemies up instead of away and its cooldown is reduced by $s1 sec
|
|
thunderstorm = { 103603, 51490, 1 }, -- Calls down a bolt of lightning, dealing $s$s2 Nature damage to all enemies within $s3 yards, reducing their movement speed by $s4% for $s5 sec, and knocking them away from the Shaman. Usable while stunned
|
|
totemic_focus = { 103625, 382201, 1 }, -- Increases the radius of your totem effects by $s1%. Increases the duration of your Earthbind and Earthgrab Totems by $s2 sec. Increases the duration of your Healing Stream, Tremor, Poison Cleansing, Ancestral Protection, Earthen Wall, and Wind Rush Totems by $s3 sec
|
|
totemic_projection = { 103586, 108287, 1 }, -- Relocates your active totems to the specified location
|
|
totemic_recall = { 103595, 108285, 1 }, -- Resets the cooldown of your most recently used totem with a base cooldown shorter than $s1 minutes
|
|
totemic_surge = { 103599, 381867, 1 }, -- Reduces the cooldown of your totems by $s1 sec
|
|
traveling_storms = { 103621, 204403, 1 }, -- Thunderstorm now can be cast on allies within $s1 yards, reduces enemies movement speed by $s2%, and knocks enemies $s3% further
|
|
tremor_totem = { 103593, 8143, 1 }, -- Summons a totem at your feet that shakes the ground around it for $s1 sec, removing Fear, Charm and Sleep effects from party and raid members within $s2 yards
|
|
voodoo_mastery = { 103600, 204268, 1 }, -- Your Hex target is slowed by $s1% during Hex and for $s2 sec after it ends. Reduces the cooldown of Hex by $s3 sec
|
|
wind_rush_totem = { 103627, 192077, 1 }, -- Summons a totem at the target location for $s1 sec, continually granting all allies who pass within $s2 yards $s3% increased movement speed for $s4 sec
|
|
wind_shear = { 103615, 57994, 1 }, -- Disrupts the target's concentration with a burst of wind, interrupting spellcasting and preventing any spell in that school from being cast for $s1 sec
|
|
winds_of_alakir = { 103614, 382215, 1 }, -- Increases the movement speed bonus of Ghost Wolf by $s1%. When you have $s2 or more totems active, your movement speed is increased by $s3%
|
|
|
|
-- Restoration
|
|
acid_rain = { 81039, 378443, 1 }, -- Deal $s$s2 Nature damage every $s3 sec to up to $s4 enemies inside of your Healing Rain
|
|
ancestral_awakening = { 81043, 382309, 2 }, -- When you heal with your Healing Wave, Healing Surge, or Riptide you have a $s1% chance to summon an Ancestral spirit to aid you, instantly healing an injured friendly party or raid target within $s2 yards for $s3% of the amount healed. Critical strikes increase this chance to $s4%
|
|
ancestral_protection_totem = { 81046, 207399, 1 }, -- Summons a totem at the target location for $s1 sec. All allies within $s2 yards of the totem gain $s3% increased health. If an ally dies, the totem will be consumed to allow them to Reincarnate with $s4% health and mana. Cannot reincarnate an ally who dies to massive damage
|
|
ancestral_reach = { 81031, 382732, 1 }, -- Chain Heal bounces an additional time and its healing is increased by $s1%
|
|
ancestral_vigor = { 103429, 207401, 2 }, -- Targets you heal with Healing Wave, Healing Surge, Chain Heal, or Riptide's initial heal gain $s1% increased health for $s2 sec
|
|
ascendance = { 81055, 114052, 1 }, -- Transform into a Water Ascendant, duplicating all healing you deal at $s1% effectiveness for $s2 sec and immediately healing for $s3. Ascendant healing is distributed evenly among allies within $s4 yds
|
|
cloudburst_totem = { 81048, 157153, 1 }, -- Summons a totem at your feet for $s1 sec that collects power from all of your healing spells. When the totem expires or dies, the stored power is released, healing all injured allies within $s2 yards for $s3% of all healing done while it was active, divided evenly among targets. Casting this spell a second time recalls the totem and releases the healing
|
|
coalescing_water = { 103915, 470076, 1 }, -- Chain Heal's mana cost is reduced by $s1% and Chain Heal increases the initial healing of your next Riptide by $s2%, stacking up to $s3 times
|
|
current_control = { 92675, 404015, 1 }, -- Reduces the cooldown of Healing Tide Totem by $s1 sec
|
|
deeply_rooted_elements = { 81051, 378270, 1 }, -- Casting Riptide has a $s1% chance to activate Ascendance for $s2 sec. Ascendance Transform into a Water Ascendant, duplicating all healing you deal at $s5% effectiveness for $s6 sec and immediately healing for $s7. Ascendant healing is distributed evenly among allies within $s8 yds
|
|
deluge = { 103428, 200076, 1 }, -- Healing Wave, Healing Surge, and Chain Heal heal for an additional $s1% on targets affected by your Healing Rain or Riptide
|
|
downpour = { 80976, 462486, 1 }, -- Casting Healing Rain has a $s1% chance to activate Downpour, allowing you to cast Downpour within $s2 sec. Downpour A burst of water at your Healing Rain's location heals up to $s5 injured allies within $s6 yards for $s7 and increases their maximum health by $s8% for $s9 sec
|
|
earthen_harmony = { 103430, 382020, 1 }, -- Earth Shield reduces damage taken by $s1% and its healing is increased by up to $s2% as its target's health decreases. Maximum benefit is reached below $s3% health
|
|
earthen_wall_totem = { 81046, 198838, 1 }, -- Summons a totem at the target location with $s1 million health for $s2 sec. $s3 damage from each attack against allies within $s4 yards of the totem is redirected to the totem
|
|
earthliving_weapon = { 81049, 382021, 1 }, -- Imbue your weapon with the element of Earth for $s1 |$s2hour:hrs;. Your Riptide, Healing Wave, Healing Surge, and Chain Heal healing a $s3% chance to trigger Earthliving on the target, healing for $s4 over $s5 sec
|
|
echo_of_the_elements = { 81044, 333919, 1 }, -- Riptide and Lava Burst have an additional charge
|
|
first_ascendant = { 103433, 462440, 1 }, -- The cooldown of Ascendance is reduced by $s1 sec
|
|
flow_of_the_tides = { 81031, 382039, 1 }, -- Chain Heal bounces an additional time and casting Chain Heal on a target affected by Riptide consumes Riptide, increasing the healing of your Chain Heal by $s1%
|
|
healing_rain = { 81040, 73920, 1 }, -- Blanket the target area in healing rains, restoring $s1 health to up to $s2 allies over $s3 sec
|
|
healing_tide_totem = { 81032, 108280, 1 }, -- Summons a totem at your feet for $s1 sec, which pulses every $s2 sec, healing all party or raid members within $s3 yards for $s4. Healing reduced beyond $s5 targets
|
|
healing_stream_totem_2 = { 81022, 5394, 1 }, -- Summons a totem at your feet for $s1 sec that heals an injured party or raid member within $s2 yards for $s3 every $s4 sec. If you already know Healing Stream Totem, instead gain $s5 additional charge of Healing Stream Totem
|
|
high_tide = { 81042, 157154, 1 }, -- Every $s1 million mana you spend brings a High Tide, making your next $s2 Chain Heals heal for an additional $s3% and not reduce with each jump
|
|
improved_earthliving_weapon = { 81050, 382315, 1 }, -- Earthliving receives $s1% additional benefit from Mastery: Deep Healing. Healing Surge always triggers Earthliving on its target
|
|
living_stream = { 81048, 382482, 1 }, -- Healing Stream Totem heals for $s1% more, decaying over its duration
|
|
mana_tide = { 81045, 1217525, 1 }, -- Healing Tide Totem now additionally grants $s1% increased mana regeneration to allies
|
|
master_of_the_elements = { 81019, 462375, 1 }, -- Casting Lava Burst increases the healing of your next Healing Surge by $s1%, stacking up to $s2 times. Healing Surge applies Flame Shock to a nearby enemy when empowered by Master of the Elements
|
|
overflowing_shores = { 92677, 383222, 1 }, -- Healing Rain instantly restores $s1 health to $s2 allies within its area, and its radius is increased by $s3 yards
|
|
preeminence = { 103433, 462443, 1 }, -- Your haste is increased by $s1% while Ascendance is active and its duration is increased by $s2 sec
|
|
primal_tide_core = { 103436, 382045, 1 }, -- Every $s1 casts of Riptide also applies Riptide to another friendly target near your Riptide target
|
|
reactive_warding = { 103435, 462454, 1 }, -- When refreshing Earth Shield, your target is healed for $s1 for each stack of Earth Shield they are missing. When refreshing Water Shield, you are refunded $s2 mana for each stack of Water Shield missing. Additionally, Earth Shield and Water Shield can consume charges $s3 sec faster
|
|
resurgence = { 81024, 16196, 1 }, -- Your direct heal criticals refund a percentage of your maximum mana: $s1% from Healing Wave, $s2% from Healing Surge, Unleash Life, or Riptide, and $s3% from Chain Heal
|
|
riptide = { 81027, 61295, 1 }, -- Restorative waters wash over a friendly target, healing them for $s1 and an additional $s2 over $s3 sec
|
|
spirit_link_totem = { 81033, 98008, 1 }, -- Summons a totem at the target location for $s1 sec, which reduces damage taken by all party and raid members within $s2 yards by $s3%. Immediately and every $s4 sec, the health of all affected players is redistributed evenly
|
|
spiritwalkers_tidal_totem = { 81045, 404522, 1 }, -- After using Healing Tide Totem, the cast time of your next $s1 Healing Surges within $s2 sec is reduced by $s3% and their mana cost is reduced by $s4%
|
|
spouting_spirits = { 103432, 462383, 1 }, -- Spirit Link Totem reduces damage taken by an additional $s1%, and it restores $s2 health to all nearby allies $s3 second after it is dropped. Healing reduced beyond $s4 targets
|
|
therazanes_resilience = { 103435, 1217622, 1 }, -- Earth Shield and Water Shield no longer lose charges and are $s1% effective
|
|
tidal_waves = { 81021, 51564, 1 }, -- Casting Riptide grants $s1 stacks of Tidal Waves. Tidal Waves reduces the cast time of your next Healing Wave or Chain Heal by $s2%, or increases the critical effect chance of your next Healing Surge by $s3%
|
|
tide_turner = { 92675, 404019, 1 }, -- The lowest health target of Healing Tide Totem is healed for $s1% more and receives $s2% increased healing from you for $s3 sec
|
|
tidebringer = { 81041, 236501, 1 }, -- Every $s1 sec, the cast time of your next Chain Heal is reduced by $s2%, and jump distance increased by $s3%. Maximum of $s4 charges
|
|
tidewaters = { 103434, 462424, 1 }, -- When you cast Healing Rain, each ally with your Riptide on them is healed for $s1
|
|
torrent = { 81047, 200072, 1 }, -- Riptide's initial heal is increased $s1% and has a $s2% increased critical strike chance
|
|
undercurrent = { 81052, 382194, 2 }, -- For each Riptide active on an ally, your heals are $s1% more effective
|
|
undulation = { 81037, 200071, 1 }, -- Every third Healing Wave or Healing Surge heals for an additional $s1%
|
|
unleash_life = { 81037, 73685, 1 }, -- Unleash elemental forces of Life, healing a friendly target for $s1 and increasing the effect of your next healing spell. Riptide, Healing Wave, or Healing Surge: $s2% increased healing. Chain Heal: $s3% increased healing and bounces to $s4 additional target. Healing Rain or Downpour: Affects $s5 additional targets. Wellspring: $s6% of overhealing done is converted to an absorb effect
|
|
water_totem_mastery = { 81018, 382030, 1 }, -- Consuming Tidal Waves has a chance to reduce the cooldown of your Healing Stream, Cloudburst, Healing Tide, and Poison Cleansing totems by $s1 sec
|
|
wavespeakers_blessing = { 103427, 381946, 2 }, -- Increases Riptide's duration by $s1 sec and its healing over time by $s2%
|
|
wellspring = { 81051, 197995, 1 }, -- Creates a surge of water that flows forward, healing friendly targets in a wide arc in front of you for $s1
|
|
whispering_waves = { 104124, 1217598, 1 }, -- $s1% of Healing Wave's healing from you and your ancestors is duplicated onto each of your targets with Riptide
|
|
white_water = { 81038, 462587, 1 }, -- Your critical heals have $s1% effectiveness instead of the usual $s2%
|
|
|
|
-- Farseer
|
|
ancestral_swiftness = { 94894, 443454, 1 }, -- Your next healing or damaging spell is instant, costs no mana, and deals $s1% increased damage and healing. If you know Nature's Swiftness, it is replaced by Ancestral Swiftness and causes Ancestral Swiftness to call an Ancestor to your side for $s2 sec
|
|
ancient_fellowship = { 94862, 443423, 1 }, -- Ancestors have a $s1% chance to call another Ancestor for $s2 sec when they depart
|
|
call_of_the_ancestors = { 94888, 443450, 1 }, -- Benefiting from Undulation calls an Ancestor to your side for $s1 sec. Casting Unleash Life calls an Ancestor to your side for $s2 sec. Whenever you cast a healing or damaging spell, the Ancestor will cast a similar spell
|
|
earthen_communion = { 94858, 443441, 1 }, -- Earth Shield has an additional $s1 charges and heals you for $s2% more
|
|
elemental_reverb = { 94869, 443418, 1 }, -- Lava Burst gains an additional charge and deals $s1% increased damage. Riptide gains an additional charge and heals for $s2% more
|
|
final_calling = { 94875, 443446, 1 }, -- When an Ancestor departs, they cast Hydrobubble on a nearby injured ally. Hydrobubble Surrounds your target in a protective water bubble for $s4 sec. The shield absorbs the next $s$s5 incoming damage, but the absorb amount decays fully over its duration
|
|
heed_my_call = { 94884, 443444, 1 }, -- Ancestors last an additional $s1 sec
|
|
latent_wisdom = { 94862, 443449, 1 }, -- Your Ancestors' spells are $s1% more powerful
|
|
maelstrom_supremacy = { 94883, 443447, 1 }, -- Increases the healing done by Healing Wave, Healing Surge, Wellspring, Downpour, and Chain Heal by $s1%
|
|
natural_harmony = { 94858, 443442, 1 }, -- Reduces the cooldown of Nature's Guardian by $s1 sec and causes it to heal for an additional $s2% of your maximum health
|
|
offering_from_beyond = { 94887, 443451, 1 }, -- When an Ancestor is called, they reduce the cooldown of Riptide by $s1 sec
|
|
primordial_capacity = { 94860, 443448, 1 }, -- Increases your maximum mana by $s1%. Tidal Waves can now stack up to $s2 times
|
|
routine_communication = { 94884, 443445, 1 }, -- Riptide has a $s1% chance to call an Ancestor to your side for $s2 sec
|
|
spiritwalkers_momentum = { 94861, 443425, 1 }, -- Using spells with a cast time increases the duration of Spiritwalker's Grace and Spiritwalker's Aegis by $s1 sec, up to a maximum of $s2 sec
|
|
|
|
-- Totemic
|
|
amplification_core = { 94874, 445029, 1 }, -- While Surging Totem is active, your damage and healing done is increased by $s1%
|
|
earthsurge = { 94881, 455590, 1 }, -- Allies affected by your Earthen Wall Totem, Ancestral Protection Totem, and Earthliving effect receive $s1% increased healing from you
|
|
imbuement_mastery = { 94871, 445028, 1 }, -- Increases the duration of your Earthliving effect by $s1 sec
|
|
lively_totems = { 94882, 445034, 1 }, -- When you summon a Healing Tide Totem, Healing Stream Totem, Cloudburst Totem, or Spirit Link Totem you cast a free instant Chain Heal at $s1% effectiveness
|
|
oversized_totems = { 94859, 445026, 1 }, -- Increases the size and radius of your totems by $s1%, and the health of your totems by $s2%
|
|
oversurge = { 94874, 445030, 1 }, -- Surging Totem heals for $s1% more during Ascendance
|
|
pulse_capacitor = { 94866, 445032, 1 }, -- Increases the healing done by Surging Totem by $s1%
|
|
reactivity = { 94872, 445035, 1 }, -- Your Healing Stream Totems now also heals a second ally at $s1% effectiveness. Cloudburst Totem stores $s2% additional healing
|
|
supportive_imbuements = { 94866, 445033, 1 }, -- Learn a new weapon imbue, Tidecaller's Guard. Tidecaller's Guard Imbue your shield with the element of Water for $s3 |$s4hour:hrs;. Your healing done is increased by $s5% and the duration of your Healing Stream Totem and Cloudburst Totem is increased by $s6 sec
|
|
surging_totem = { 94877, 444995, 1 }, -- Summons a totem at the target location that maintains Healing Rain with $s1% increased effectiveness for $s2 sec. Replaces Healing Rain
|
|
swift_recall = { 94859, 445027, 1 }, -- Successfully removing a harmful effect with Tremor Totem or Poison Cleansing Totem, or controlling an enemy with Capacitor Totem or Earthgrab Totem reduces the cooldown of the totem used by $s1 sec. Cannot occur more than once every $s2 sec per totem
|
|
totemic_coordination = { 94881, 445036, 1 }, -- Chain Heals from Lively Totem and Totemic Rebound are $s1% more effective
|
|
totemic_rebound = { 94890, 445025, 1 }, -- Chain Heal now jumps to a nearby totem within $s1 yards once it reaches its last target, causing the totem to cast Chain Heal on an injured ally within $s2 yards for $s3. Jumps to $s4 nearby targets within $s5 yards
|
|
whirling_elements = { 94879, 445024, 1 }, -- Elemental motes orbit around your Surging Totem. Your abilities consume the motes for enhanced effects. Water: Your next Healing Wave or Healing Surge also heals an ally inside of your Healing Rain at $s1% effectiveness. Air: The cast time of your next healing spell is reduced by $s2%. Earth: Your next Chain Heal applies Earthliving at $s3% effectiveness to all targets hit
|
|
wind_barrier = { 94891, 445031, 1 }, -- If you have a totem active, your totem grants you a shield absorbing $s1 damage for $s2 sec every $s3 sec
|
|
} )
|
|
|
|
-- PvP Talents
|
|
spec:RegisterPvpTalents( {
|
|
burrow = 5576, -- (409293) Burrow beneath the ground, becoming unattackable, removing movement impairing effects, and increasing your movement speed by $s2% for $s3 sec. When the effect ends, enemies within $s4 yards are knocked in the air and take $s$s5 Physical damage
|
|
counterstrike_totem = 708, -- (204331) Summons a totem at your feet for $s1 sec. Whenever enemies within $s2 yards of the totem deal direct damage, the totem will deal $s3% of the damage dealt back to attacker
|
|
electrocute = 714, -- (206642) When you successfully Purge a beneficial effect, the enemy suffers $s$s2 Nature damage over $s3 sec
|
|
grounding_totem = 715, -- (204336) Summons a totem at your feet that will redirect all harmful spells cast within $s1 yards on a nearby party or raid member to itself. Will not redirect area of effect spells. Lasts $s2 sec
|
|
living_tide = 5388, -- (353115) Healing Tide Totem's cooldown is reduced by $s1 sec and it heals for $s2% more each time it pulses
|
|
rain_dance = 3755, -- (290250) Healing Rain is now instant, $s1% more effective, and costs $s2% less mana
|
|
static_field_totem = 5567, -- (355580) Summons a totem with $s1% of your health at the target location for $s2 sec that forms a circuit of electricity that enemies cannot pass through
|
|
storm_conduit = 5704, -- (1217092) Casting Lightning Bolt or Chain Lightning reduces the cooldown of Astral Shift, Gust of Wind, Wind Shear, and Nature Totems by $s1 sec. Interrupt duration reduced by $s2% on Lightning Bolt and Chain Lightning casts
|
|
totem_of_wrath = 5705, -- (460697) Nature's Swiftness summons a totem at your feet for $s1 sec that increases the critical effect of damage and healing spells of all nearby allies within $s2 yards by $s3% for $s4 sec
|
|
unleash_shield = 5437, -- (356736) Unleash your Elemental Shield's energy on an enemy target: Lightning Shield: Knocks them away. Earth Shield: Roots them in place for $s5 sec. Water Shield: Summons a whirlpool for $s8 sec, reducing damage and healing by $s9% while they stand within it
|
|
} )
|
|
|
|
-- Auras
|
|
spec:RegisterAuras( {
|
|
ascendance = {
|
|
id = 114052,
|
|
duration = function() return talent.preeminence.enabled and 18 or 15 end,
|
|
max_stack = 1,
|
|
},
|
|
downpour = {
|
|
id = 462488,
|
|
duration = function() return talent.surging_totem.enabled and 22 or 8 end,
|
|
max_stack = 1
|
|
},
|
|
downpour_hot = {
|
|
id = 207778,
|
|
duration = 6,
|
|
max_stack = 1
|
|
},
|
|
earthliving_weapon = {
|
|
id = 382021,
|
|
duration = 3600,
|
|
max_stack = 1
|
|
},
|
|
earthliving_weapon_hot = {
|
|
id = 382024,
|
|
duration = 6,
|
|
max_stack = 1
|
|
},
|
|
-- Talent: Heals for ${$w2*(1+$w1/100)} upon taking damage.
|
|
-- https://wowhead.com/beta/spell=974
|
|
earth_shield = {
|
|
id = function () return talent.elemental_orbit.enabled and 383648 or 974 end,
|
|
duration = 3600,
|
|
type = "Magic",
|
|
max_stack = function() if talent.therazanes_resilience.enabled then return 1 end
|
|
return 9 + 3 * talent.earthen_communion.rank
|
|
end,
|
|
dot = "buff",
|
|
friendly = true,
|
|
shared = "player",
|
|
copy = { 383648, 974 }
|
|
},
|
|
-- Your Healing Rain is currently active. $?$w1!=0[Magic damage taken reduced by $w1%.][]
|
|
-- https://wowhead.com/beta/spell=73920
|
|
healing_rain = {
|
|
id = 73920,
|
|
duration = function () return 24 and talent.surging_totem.enabled or 10 end,
|
|
max_stack = 1
|
|
},
|
|
master_of_the_elements = {
|
|
id = 462377,
|
|
duration = 30,
|
|
max_stack = 2
|
|
},
|
|
spiritwalkers_tidal_totem = {
|
|
id = 404523,
|
|
duration = 10,
|
|
max_stack = 3
|
|
},
|
|
-- Receiving $422915s1% of all Riptide healing $@auracaster deals.
|
|
tidal_reservoir = {
|
|
id = 424461,
|
|
duration = 15,
|
|
max_stack = 1,
|
|
},
|
|
tidal_waves = {
|
|
id = 53390,
|
|
duration = 15,
|
|
max_stack = 2,
|
|
},
|
|
tide_turner = {
|
|
id = 404072,
|
|
duration = 4,
|
|
max_stack = 1
|
|
},
|
|
tidebringer = {
|
|
id = 236502,
|
|
duration = 3600,
|
|
max_stack = 2
|
|
},
|
|
tidecallers_guard = {
|
|
id = 457493,
|
|
duration = 3600,
|
|
max_stack = 1,
|
|
copy = 457496
|
|
},
|
|
unleash_life = {
|
|
id = 73685,
|
|
duration = 10,
|
|
max_stack = 1
|
|
},
|
|
water_shield = {
|
|
id = 52127,
|
|
duration = 3600,
|
|
max_stack = 9,
|
|
shared = "player",
|
|
dot = "buff"
|
|
},
|
|
high_tide = {
|
|
id = 288675,
|
|
duration = 25,
|
|
max_stack = 2
|
|
},
|
|
cloudburst_totem = {
|
|
id = 157504,
|
|
duration = 18,
|
|
max_stack = 1
|
|
},
|
|
} )
|
|
|
|
spec:RegisterGear({
|
|
-- The War Within
|
|
tww3 = {
|
|
items = { 237640, 237536, 237637, 237636, 237638 },
|
|
auras = {
|
|
-- Totemic both specs
|
|
elemental_overflow = {
|
|
id = 1239170,
|
|
duration = 20,
|
|
max_stack = 1
|
|
},
|
|
-- Farseer both specs
|
|
ancestral_wisdom = {
|
|
id = 1238279,
|
|
duration = 8,
|
|
max_stack = 1
|
|
},
|
|
}
|
|
},
|
|
tww2 = {
|
|
items = { 229260, 229261, 229262, 229263, 229265 }
|
|
},
|
|
tww1 = {
|
|
items = { 212014, 212012, 212011, 212010, 212009 },
|
|
},
|
|
-- Dragonflight
|
|
tier31 = {
|
|
items = { 207207, 207208, 207209, 207210, 207212 }
|
|
},
|
|
tier30 = {
|
|
items = { 202473, 202471, 202470, 202469, 202468 },
|
|
auras = {
|
|
rainstorm = {
|
|
id = 409386,
|
|
duration = 6,
|
|
max_stack = 40
|
|
},
|
|
swelling_rain = {
|
|
id = 409391,
|
|
duration = 15,
|
|
max_stack = 40
|
|
}
|
|
}
|
|
},
|
|
tier29 = {
|
|
items = { 200399, 200401, 200396, 200398, 200400, 217238, 217240, 217236, 217237, 217239 }
|
|
},
|
|
} )
|
|
|
|
local recall_totems = {
|
|
capacitor_totem = 1,
|
|
earthbind_totem = 1,
|
|
earthgrab_totem = 1,
|
|
grounding_totem = 1,
|
|
healing_stream_totem = 1,
|
|
cloudburst_totem = 1,
|
|
earthen_wall_totem = 1,
|
|
poison_cleansing_totem = 1,
|
|
skyfury_totem = 1,
|
|
stoneskin_totem = 1,
|
|
tranquil_air_totem = 1,
|
|
tremor_totem = 1,
|
|
wind_rush_totem = 1,
|
|
}
|
|
|
|
local recallTotem1
|
|
local recallTotem2
|
|
|
|
spec:RegisterTotems( {
|
|
tremor_totem = {
|
|
id = 136108
|
|
},
|
|
wind_rush_totem = {
|
|
id = 538576
|
|
},
|
|
healing_stream_totem = {
|
|
id = 135127
|
|
},
|
|
cloudburst_totem = {
|
|
id = 971076
|
|
},
|
|
earthen_wall_totem = {
|
|
id = 136098
|
|
},
|
|
poison_cleansing_totem = {
|
|
id = 136070
|
|
},
|
|
stoneskin_totem = {
|
|
id = 4667425
|
|
},
|
|
surging_totem = {
|
|
id = 5927655
|
|
},
|
|
} )
|
|
|
|
spec:RegisterStateExpr( "recall_totem_1", function()
|
|
return recallTotem1
|
|
end )
|
|
|
|
spec:RegisterStateExpr( "recall_totem_2", function()
|
|
return recallTotem2
|
|
end )
|
|
|
|
spec:RegisterStateExpr( "earth_shield", function()
|
|
return "earth_shield"
|
|
end )
|
|
|
|
spec:RegisterStateExpr( "lightning_shield", function()
|
|
return "lightning_shield"
|
|
end )
|
|
|
|
spec:RegisterHook( "reset_precast", function ()
|
|
local mh, _, _, mh_enchant, oh, _, _, oh_enchant = GetWeaponEnchantInfo()
|
|
|
|
if mh and mh_enchant == 6498 then applyBuff( "earthliving_weapon" ) end
|
|
if buff.earthliving_weapon.down and ( now - action.earthliving_weapon.lastCast < 1 ) then applyBuff( "earthliving_weapon" ) end
|
|
|
|
if oh and oh_enchant == 7528 then applyBuff( "tidecallers_guard" ) end
|
|
if buff.tidecallers_guard.down and action.tidecallers_guard.time_since < 1 then applyBuff( "tidecallers_guard" ) end
|
|
|
|
recall_totem_1 = nil
|
|
recall_totem_2 = nil
|
|
end )
|
|
|
|
spec:RegisterHook( "runHandler", function( action )
|
|
if talent.totemic_recall.enabled and recall_totems[ action ] then
|
|
recall_totem_2 = recall_totem_1
|
|
recall_totem_1 = action
|
|
end
|
|
end )
|
|
|
|
spec:RegisterCombatLogEvent( function( _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName, school )
|
|
if sourceGUID == state.GUID then
|
|
if subtype == "SPELL_CAST_SUCCESS" then
|
|
local ability = class.abilities[ spellID ]
|
|
local key = ability and ability.key
|
|
|
|
if key and recall_totems[ key ] then
|
|
recallTotem2 = recallTotem1
|
|
recallTotem1 = key
|
|
end
|
|
end
|
|
end
|
|
end )
|
|
|
|
-- Abilities
|
|
spec:RegisterAbilities( {
|
|
-- Summons a totem at the target location for 30 sec. All allies within 20 yards of the totem gain 10% increased health. If an ally dies, the totem will be consumed to allow them to Reincarnate with 20% health and mana. Cannot reincarnate an ally who dies to massive damage.
|
|
ancestral_protection_totem = {
|
|
id = 207399,
|
|
cast = 0,
|
|
cooldown = 300,
|
|
gcd = "totem",
|
|
|
|
spend = 0.11,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136080,
|
|
|
|
toggle = "defensives",
|
|
|
|
handler = function ()
|
|
summonTotem( "ancestral_protection_totem" )
|
|
applyBuff( "ancestral_protection_totem" )
|
|
end,
|
|
},
|
|
|
|
-- Transform into a Water Ascendant, duplicating all healing you deal for 15 sec and immediately healing for 58,058. Ascendant healing is distributed evenly among allies within 20 yds.
|
|
ascendance = {
|
|
id = 114052,
|
|
cast = 0,
|
|
cooldown = function() return talent.first_ascendant.enabled and 120 or 180 end,
|
|
gcd = "spell",
|
|
|
|
startsCombat = false,
|
|
texture = 135791,
|
|
|
|
toggle = "cooldowns",
|
|
|
|
handler = function ()
|
|
applyBuff( "ascendance" )
|
|
if talent.preeminence.enabled then stat.haste = stat.haste + 0.25 end
|
|
end,
|
|
},
|
|
|
|
-- Heals the friendly target for 13,918, then jumps to heal the 3 most injured nearby allies. Healing is reduced by 30% with each jump.
|
|
chain_heal = {
|
|
id = 1064,
|
|
cast = function() return 2.5 * ( buff.tidebringer.up and 0.5 or 1 ) * haste end,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.056,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136042,
|
|
|
|
handler = function ()
|
|
if buff.tidebringer.up and buff.natures_swiftness.down and buff.ancestral_swiftness.down then removeStack( "tidebringer" ) end
|
|
removeStack( "tidal_waves" )
|
|
removeBuff( "swelling_rain" ) -- T30
|
|
removeStack( "natures_swiftness" )
|
|
removeStack( "ancestral_swiftness" )
|
|
removeStack( "high_tide" )
|
|
|
|
if set_bonus.tier31_2pc > 0 then applyDebuff( "target", "tidal_reservoir" ) end
|
|
end,
|
|
},
|
|
|
|
-- Hurls a lightning bolt at the enemy, dealing 9,800 Nature damage and then jumping to additional nearby enemies. Affects 3 total targets.
|
|
chain_lightning = {
|
|
id = 188443,
|
|
cast = 2,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = function () return buff.natures_swiftness.up and 0 or 0.01 end,
|
|
spendType = "mana",
|
|
|
|
talent = "chain_lightning",
|
|
startsCombat = true,
|
|
texture = 136015,
|
|
|
|
handler = function ()
|
|
if buff.ancestral_swiftness.up then removeBuff( "ancestral_swiftness" ) end
|
|
if buff.natures_swiftness.up then removeBuff( "natures_swiftness" ) end
|
|
end,
|
|
},
|
|
|
|
-- Summons a totem at your feet for 15 sec that collects power from all of your healing spells. When the totem expires or dies, the stored power is released, healing all injured allies within 40 yards for 20% of all healing done while it was active, divided evenly among targets. Casting this spell a second time recalls the totem and releases the healing.
|
|
cloudburst_totem = {
|
|
id = 157153,
|
|
cast = 0,
|
|
charges = function()
|
|
if talent.healing_stream_totem.rank + talent.healing_stream_totem_2.rank > 1 then return 2 end
|
|
end,
|
|
cooldown = 45,
|
|
recharge = function()
|
|
if talent.healing_stream_totem.rank + talent.healing_stream_totem_2.rank > 1 then return 45 end
|
|
end,
|
|
hasteCD = true,
|
|
gcd = "totem",
|
|
icd = 1,
|
|
|
|
spend = 0.09,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 971076,
|
|
|
|
handler = function ()
|
|
summonTotem( "cloudburst_totem" )
|
|
applyBuff( "cloudburst_totem" )
|
|
end,
|
|
},
|
|
|
|
-- A burst of water at your Healing Rain's location heals up to 5 injured allies within 12 yards for (275% of Spell power) and increases their maximum health by 10% for 6 sec.
|
|
downpour = {
|
|
id = 462603,
|
|
known = 73920,
|
|
cast = 0,
|
|
cooldown = function() return talent.surging_totem.enabled and 24 or 10 end,
|
|
gcd = "off",
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 1698701,
|
|
buff = "downpour",
|
|
talent = "downpour",
|
|
|
|
handler = function ()
|
|
removeBuff( "downpour" )
|
|
applyBuff( "downpour_hot" )
|
|
end,
|
|
|
|
bind = "healing_rain"
|
|
},
|
|
|
|
-- Summons a totem at the target location with 309,139 health for 15 sec. 2,164 damage from each attack against allies within 10 yards of the totem is redirected to the totem.
|
|
earthen_wall_totem = {
|
|
id = 198838,
|
|
cast = 0,
|
|
cooldown = 60,
|
|
gcd = "totem",
|
|
|
|
spend = 0.11,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136098,
|
|
|
|
toggle = "cooldowns",
|
|
|
|
handler = function ()
|
|
summonTotem( "earthen_wall_totem" )
|
|
applyBuff( "earthen_wall_totem" )
|
|
end,
|
|
},
|
|
|
|
-- Imbue your weapon with the element of Earth for 1 |4hour:hrs;. Your Riptide, Healing Wave, Healing Surge, and Chain Heal healing a 20% chance to trigger Earthliving on the target, healing for 7,447 over 12 sec.
|
|
earthliving_weapon = {
|
|
id = 382021,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "totem",
|
|
|
|
startsCombat = false,
|
|
texture = 237578,
|
|
essential = true,
|
|
nobuff = "earthliving_weapon",
|
|
|
|
handler = function ()
|
|
applyBuff( "earthliving_weapon" )
|
|
end,
|
|
},
|
|
|
|
-- Sears the target with fire, causing 3,099 Fire damage and then an additional 19,919 Fire damage over 18 sec. Flame Shock can be applied to a maximum of 6 targets.
|
|
flame_shock = {
|
|
id = 470411,
|
|
cast = 0,
|
|
cooldown = 6,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135813,
|
|
|
|
handler = function ()
|
|
applyDebuff( "target", "flame_shock" )
|
|
end,
|
|
},
|
|
|
|
-- Imbue your weapon with the element of Fire for 1 |4hour:hrs;, causing each of your attacks to deal 71 additional Fire damage.
|
|
flametongue_weapon = {
|
|
id = 318038,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
startsCombat = false,
|
|
texture = 135814,
|
|
|
|
handler = function ()
|
|
applyBuff( "flametongue_weapon" )
|
|
end,
|
|
},
|
|
|
|
-- Chills the target with frost, causing 5,788 Frost damage and reducing the target's movement speed by 50% for 6 sec.
|
|
frost_shock = {
|
|
id = 196840,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
talent = "frost_shock",
|
|
startsCombat = false,
|
|
texture = 135849,
|
|
|
|
handler = function ()
|
|
applyDebuff( "frost_shock" )
|
|
end,
|
|
},
|
|
|
|
-- Purges the enemy target, removing 2 beneficial Magic effects.
|
|
greater_purge = {
|
|
id = 378773,
|
|
cast = 0,
|
|
cooldown = 12,
|
|
gcd = "spell",
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 451166,
|
|
debuff = "dispellable_magic",
|
|
|
|
handler = function ()
|
|
removeDebuff( "target", "dispellable_magic" )
|
|
end,
|
|
},
|
|
|
|
-- Summons a totem at your feet that will redirect all harmful spells cast within 30 yards on a nearby party or raid member to itself. Will not redirect area of effect spells. Lasts 3 sec.
|
|
grounding_totem = {
|
|
id = 204336,
|
|
cast = 0,
|
|
cooldown = 30,
|
|
gcd = "totem",
|
|
|
|
spend = 0.06,
|
|
spendType = "mana",
|
|
|
|
pvptalent = "grounding_totem",
|
|
startsCombat = false,
|
|
texture = 136039,
|
|
|
|
handler = function ()
|
|
summonTotem( "grounding_totem" )
|
|
end,
|
|
},
|
|
|
|
-- Blanket the target area in healing rains, restoring 12,334 health to up to 6 allies over 10 sec.
|
|
healing_rain = {
|
|
id = 73920,
|
|
cast = 2,
|
|
cooldown = 10,
|
|
gcd = "spell",
|
|
|
|
spend = 0.22,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136037,
|
|
nobuff = "downpour",
|
|
notalent = "surging_totem",
|
|
|
|
handler = function ()
|
|
|
|
applyBuff( "healing_rain" )
|
|
|
|
if talent.downpour.enabled then
|
|
applyBuff( "downpour" )
|
|
setCooldown( "downpour", 0 )
|
|
end
|
|
if set_bonus.tier30_4pc > 0 and active_dot.riptide > 0 then
|
|
applyBuff( "rainstorm", nil, active_dot.riptide )
|
|
applyBuff( "swelling_rain", nil, active_dot.riptide )
|
|
end
|
|
end,
|
|
|
|
bind = { "downpour", "surging_totem" }
|
|
},
|
|
|
|
-- Talent: Summons a totem at your feet for $d that heals $?s147074[two injured party or raid members][an injured party or raid member] within $52042A1 yards for $52042s1 every $5672t1 sec. If you already know $?s157153[$@spellname157153][$@spellname5394], instead gain $392915s1 additional $Lcharge:charges; of $?s157153[$@spellname157153][$@spellname5394].
|
|
healing_stream_totem = {
|
|
id = 5394,
|
|
cast = 0,
|
|
charges = function()
|
|
if talent.healing_stream_totem.rank + talent.healing_stream_totem_2.rank > 1 then return 2 end
|
|
end,
|
|
cooldown = function () return 30 - ( talent.totemic_surge.enabled and 6 or 0 ) end,
|
|
recharge = function()
|
|
if talent.healing_stream_totem.rank + talent.healing_stream_totem_2.rank > 1 then return ( 30 - (talent.totemic_surge.enabled and 6 or 0 ))
|
|
else return nil end
|
|
end,
|
|
gcd = "totem",
|
|
|
|
spend = 0.09,
|
|
spendType = "mana",
|
|
|
|
notalent = "cloudburst_totem",
|
|
startsCombat = false,
|
|
texture = 135127,
|
|
|
|
handler = function ()
|
|
summonTotem( "healing_stream_totem" )
|
|
end,
|
|
},
|
|
|
|
-- A quick surge of healing energy that restores $s1 of a friendly target's health.
|
|
healing_surge = {
|
|
id = 8004,
|
|
cast = function() return buff.spiritwalkers_tidal_totem.up and 0 or 1.5 end,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = function() return 0.044 * ( buff.spiritwalkers_tidal_totem.up and 0.5 or 1 ) end,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136044,
|
|
|
|
handler = function ()
|
|
removeStack( "tidal_waves" )
|
|
removeBuff( "swelling_rain" ) -- T30
|
|
removeStack( "natures_swiftness" )
|
|
removeStack( "spiritwalkers_tidal_totem" )
|
|
|
|
if buff.master_of_the_elements.up then
|
|
active_dot.flame_shock = min( true_active_enemies, active_dot.flame_shock + 1 )
|
|
removeBuff( "master_of_the_elements" )
|
|
end
|
|
|
|
if talent.earthen_harmony.enabled then
|
|
addStack( "earth_shield", nil, 1 )
|
|
end
|
|
|
|
if talent.improved_earthliving_weapon.enabled and buff.earthliving_weapon.up then
|
|
applyBuff( "earthliving_weapon_hot" )
|
|
end
|
|
|
|
if set_bonus.tier31_2pc > 0 then applyDebuff( "target", "tidal_reservoir" ) end
|
|
end,
|
|
},
|
|
|
|
-- Summons a totem at your feet for 10 sec, which pulses every 1.7 sec, healing all party or raid members within 40 yards for 2827.1. Healing increased by 100% when not in a raid.
|
|
healing_tide_totem = {
|
|
id = 108280,
|
|
cast = 0,
|
|
cooldown = function() return talent.current_control.enabled and 135 or 180 end,
|
|
gcd = "totem",
|
|
|
|
spend = 0.06,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 538569,
|
|
|
|
toggle = "defensives",
|
|
|
|
handler = function ()
|
|
summonTotem( "healing_tide_totem" )
|
|
if talent.spiritwalkers_tidal_totem.enabled then applyBuff( "spiritwalkers_tidal_totem", nil, 3 ) end
|
|
end,
|
|
},
|
|
|
|
-- An efficient wave of healing energy that restores 21,075 of a friendly target’s health.
|
|
healing_wave = {
|
|
id = 77472,
|
|
cast = 2.5,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.15,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136043,
|
|
|
|
handler = function ()
|
|
removeStack( "tidal_waves" )
|
|
removeBuff( "swelling_rain" ) -- T30
|
|
removeStack( "natures_swiftness" )
|
|
|
|
if talent.earthen_harmony.enabled then
|
|
addStack( "earth_shield", nil, 1 )
|
|
end
|
|
|
|
if set_bonus.tier31_2pc > 0 then applyDebuff( "target", "tidal_reservoir" ) end
|
|
end,
|
|
},
|
|
|
|
-- Hurls molten lava at the target, dealing 16,967 Fire damage. Lava Burst will always critically strike if the target is affected by Flame Shock.
|
|
lava_burst = {
|
|
id = 51505,
|
|
cast = function() return buff.lava_surge.up and 0 or ( 2 * haste ) end,
|
|
charges = function()
|
|
if talent.echo_of_the_elements.enabled then return 2 end
|
|
end,
|
|
cooldown = 8,
|
|
recharge = function()
|
|
if talent.echo_of_the_elements.enabled then return 8 end
|
|
end,
|
|
gcd = "spell",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 237582,
|
|
velocity = 30,
|
|
|
|
indicator = function()
|
|
return active_enemies > 1 and settings.cycle and dot.flame_shock.down and active_dot.flame_shock > 0 and "cycle" or nil
|
|
end,
|
|
|
|
handler = function ()
|
|
removeBuff( "lava_surge" )
|
|
if talent.master_of_the_elements.enabled then addStack( "master_of_the_elements" ) end
|
|
end,
|
|
},
|
|
|
|
-- Hurls a bolt of lightning at the target, dealing 10,473 Nature damage.
|
|
lightning_bolt = {
|
|
id = 188196,
|
|
cast = 2,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
spend = 0.01,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 136048,
|
|
|
|
handler = function ()
|
|
if buff.ancestral_swiftness.up then removeBuff( "ancestral_swiftness" ) end
|
|
if buff.natures_swiftness.up then removeBuff( "natures_swiftness" ) end
|
|
end,
|
|
},
|
|
|
|
-- Summons a totem at your feet for 8 sec, granting 100% increased mana regeneration to allies within 20 yards.
|
|
--[[mana_tide_totem = {
|
|
id = 16191,
|
|
cast = 0,
|
|
cooldown = 180,
|
|
gcd = "totem",
|
|
|
|
startsCombat = false,
|
|
texture = 4667424,
|
|
|
|
toggle = "cooldowns",
|
|
|
|
handler = function ()
|
|
summonTotem( "mana_tide_totem" )
|
|
if talent.spiritwalkers_tidal_totem.enabled then applyBuff( "spiritwalkers_tidal_totem", nil, 3 ) end
|
|
end,
|
|
},--]]
|
|
|
|
-- Talent: Summons a totem at your feet that removes $383015s1 poison effect from a nearby party or raid member within $383015a yards every $383014t1 sec for $d.
|
|
poison_cleansing_totem = {
|
|
id = 383013,
|
|
cast = 0,
|
|
cooldown = function () return 45 - 3 * talent.totemic_surge.rank end,
|
|
gcd = "totem",
|
|
|
|
spend = 0.02,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 136070,
|
|
|
|
handler = function ()
|
|
summonTotem( "poison_cleansing_totem" )
|
|
end,
|
|
},
|
|
|
|
-- Blast your target with a Primordial Wave, dealing 4,265 Shadow damage and apply Flame Shock to an enemy, or heal an ally for 4,308 and apply Riptide to them. Your next Healing Wave will also hit all targets affected by your Riptide for 60% of normal healing.
|
|
--[[primordial_wave = {
|
|
id = 428332,
|
|
cast = 0,
|
|
cooldown = 30,
|
|
gcd = "spell",
|
|
|
|
spend = 0.03,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 3578231,
|
|
|
|
handler = function ()
|
|
applyBuff( "riptide")
|
|
applyDebuff( "target", "flame_shock" )
|
|
end,
|
|
|
|
copy = 428332,
|
|
},--]]
|
|
|
|
-- Restorative waters wash over a friendly target, healing them for 13,520 and an additional 10,502 over 18 sec.
|
|
riptide = {
|
|
id = 61295,
|
|
cast = 0,
|
|
charges = function () return 2 + ( talent.elemental_reverb.enabled and 1 or 0 ) end,
|
|
cooldown = 6,
|
|
recharge = 6,
|
|
gcd = "spell",
|
|
|
|
spend = 0.08,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 252995,
|
|
|
|
handler = function ()
|
|
applyBuff( "riptide" )
|
|
if talent.tidal_waves.enabled then
|
|
addStack( "tidal_waves", nil, 2 )
|
|
end
|
|
end,
|
|
},
|
|
|
|
-- Summons a totem at the target location for 6 sec, which reduces damage taken by all party and raid members within 10 yards by 10%. Immediately and every 1 sec, the health of all affected players is redistributed evenly.
|
|
spirit_link_totem = {
|
|
id = 98008,
|
|
cast = 0,
|
|
charges = 1,
|
|
cooldown = 180,
|
|
recharge = 180,
|
|
gcd = "totem",
|
|
|
|
spend = 0.11,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 237586,
|
|
|
|
toggle = "cooldowns",
|
|
|
|
handler = function ()
|
|
summonTotem( "spirit_link_totem" )
|
|
end,
|
|
},
|
|
|
|
surging_totem = {
|
|
id = 444995,
|
|
cast = 0,
|
|
cooldown = 24,
|
|
gcd = "totem",
|
|
|
|
spend = 0.11,
|
|
spendType = "mana",
|
|
talent = "surging_totem",
|
|
startsCombat = false,
|
|
texture = 5927655,
|
|
|
|
handler = function ()
|
|
summonTotem( "surging_totem" )
|
|
|
|
if talent.downpour.enabled then
|
|
setCooldown( "downpour", 0 )
|
|
applyBuff( "downpour" )
|
|
end
|
|
end,
|
|
|
|
bind = { "healing_rain", "downpour" }
|
|
},
|
|
|
|
tidecallers_guard = {
|
|
id = 457481,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
startsCombat = false,
|
|
talent = "supportive_imbuements",
|
|
nobuff = "tidecallers_guard",
|
|
equipped = "shield",
|
|
|
|
handler = function ()
|
|
applyBuff( "tidecallers_guard" )
|
|
end,
|
|
},
|
|
|
|
-- Talent: Resets the cooldown of your most recently used totem with a base cooldown shorter than 3 minutes.
|
|
totemic_recall = {
|
|
id = 108285,
|
|
cast = 0,
|
|
cooldown = function() return talent.call_of_the_elements.enabled and 120 or 180 end,
|
|
gcd = "spell",
|
|
school = "nature",
|
|
toggle = function() if settings.healing_mode then return "cooldowns" end end,
|
|
talent = "totemic_recall",
|
|
startsCombat = false,
|
|
|
|
usable = function() return recall_totem_1 ~= nil end,
|
|
|
|
handler = function ()
|
|
if recall_totem_1 then setCooldown( recall_totem_1, 0 ) end
|
|
if talent.creation_core.enabled and recall_totem_2 then setCooldown( recall_totem_2, 0 ) end
|
|
end,
|
|
},
|
|
|
|
-- Unleash elemental forces of Life, healing a friendly target for 12,592 and increasing the effect of your next healing spell. Riptide, Healing Wave, or Healing Surge: 35% increased healing. Chain Heal: 15% increased healing and bounces to 1 additional target. Healing Rain or Downpour: 2 additional allies healed. Wellspring: 25% of overhealing done is converted to an absorb effect.
|
|
unleash_life = {
|
|
id = 73685,
|
|
cast = 0,
|
|
charges = 1,
|
|
cooldown = 15,
|
|
recharge = 15,
|
|
gcd = "spell",
|
|
|
|
spend = 0.04,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 462328,
|
|
|
|
handler = function ()
|
|
applyBuff( "unleash_life" )
|
|
end,
|
|
},
|
|
|
|
-- Unleash your Elemental Shield's energy on an enemy target: Lightning Shield: Knocks them away. Earth Shield: Roots them in place for 2 sec. Water Shield: Summons a whirlpool for 6 sec, reducing damage and healing by 50% while they stand within it.
|
|
unleash_shield = {
|
|
id = 356736,
|
|
cast = 0,
|
|
cooldown = 30,
|
|
gcd = "spell",
|
|
|
|
startsCombat = false,
|
|
texture = 538567,
|
|
|
|
handler = function ()
|
|
end,
|
|
},
|
|
|
|
-- The caster is surrounded by globes of water, granting 238 mana per 5 sec. When a melee attack hits the caster, the caster regains 2% of their mana. This effect can only occur once every few seconds. Only one of your Elemental Shields can be active on you at once.
|
|
water_shield = {
|
|
id = 52127,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
|
|
startsCombat = false,
|
|
texture = 132315,
|
|
essential = true,
|
|
nobuff = "water_shield",
|
|
|
|
handler = function ()
|
|
applyBuff( "water_shield" )
|
|
end,
|
|
},
|
|
|
|
-- Creates a surge of water that flows forward, healing friendly targets in a wide arc in front of you for 12,592.
|
|
wellspring = {
|
|
id = 197995,
|
|
cast = 1.5,
|
|
cooldown = 20,
|
|
gcd = "spell",
|
|
|
|
spend = 0.2,
|
|
spendType = "mana",
|
|
|
|
startsCombat = false,
|
|
texture = 893778,
|
|
|
|
handler = function ()
|
|
if buff.ancestral_swiftness.up then removeBuff( "ancestral_swiftness" ) end
|
|
if buff.natures_swiftness.up then removeBuff( "natures_swiftness" ) end
|
|
end,
|
|
},
|
|
} )
|
|
|
|
--[[spec:RegisterSetting( "experimental_msg", nil, {
|
|
type = "description",
|
|
name = "|cFFFF0000WARNING|r: Healer support in this addon is focused on DPS output only. This is more useful for solo content or downtime when your healing output is less critical in a group/encounter. Use at your own risk.",
|
|
width = "full",
|
|
} )--]]
|
|
|
|
spec:RegisterSetting( "experimental_msg", nil, {
|
|
type = "description",
|
|
name = strformat( "%s %s supports a healing maintenance with the Totemic %s build. It will recommend using %s and %s, keep %s / %s recharging, and use %s with to enhance particular spells. Your %s will also be maintained.",
|
|
select( 7, GetSpecializationInfoByID( spec.id ) ), ( UnitClass( "player" ) ), Hekili:GetSpellLinkWithTexture( spec.abilities.chain_heal.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.healing_rain.id ),
|
|
Hekili:GetSpellLinkWithTexture( spec.abilities.surging_totem.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.riptide.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.healing_stream_totem.id ),
|
|
Hekili:GetSpellLinkWithTexture( spec.abilities.unleash_life.id ), Hekili:GetSpellLinkWithTexture( spec.talents.earth_shield[2] ) ),
|
|
width = "full",
|
|
} )
|
|
|
|
spec:RegisterSetting( "healing_mode", false, {
|
|
name = "Healing Helper Mode",
|
|
desc = "If checked, healing abilities may be recommended using the default priority package.",
|
|
type = "toggle",
|
|
width = "full",
|
|
} )
|
|
|
|
spec:RegisterSetting( "second_shield", "earth_shield", {
|
|
name = strformat( "|T236224:0|t Preferred Second %s", _G.SHIELDSLOT ),
|
|
desc = strformat( "Specify which %s spell to use after %s when %s is talented.", _G.SHIELDSLOT, Hekili:GetSpellLinkWithTexture( spec.abilities.water_shield.id ),
|
|
Hekili:GetSpellLinkWithTexture( spec.talents.elemental_orbit[2] ) ),
|
|
type = "select",
|
|
values = function()
|
|
return {
|
|
earth_shield = class.abilityList.earth_shield,
|
|
lightning_shield = class.abilityList.lightning_shield,
|
|
}
|
|
end,
|
|
width = "full"
|
|
} )
|
|
|
|
spec:RegisterRanges( "lightning_bolt", "flame_shock", "wind_shear", "primal_strike" )
|
|
|
|
spec:RegisterOptions( {
|
|
enabled = true,
|
|
|
|
aoe = 3,
|
|
cycle = false,
|
|
|
|
nameplates = false,
|
|
nameplateRange = 40,
|
|
rangeFilter = false,
|
|
|
|
damage = true,
|
|
damageDots = true,
|
|
damageExpiration = 8,
|
|
|
|
potion = "tempered_potion",
|
|
|
|
package = "Restoration Shaman",
|
|
} )
|
|
|
|
spec:RegisterPack( "Restoration Shaman", 20241020, [[Hekili:vJ1xVTTnq8plgdWnbjvZYojTDiopS9YAXqFyUa7njrlrBtejrpkQ4gad9zF3r9pskkn3HvmSxsKjpE)J397oEb(bFjytcrsd(8YflVZFXYfElxTWF1YGnYxpsd2CKe)mzp8rojd(7VtlKCbrY45vrBoqYi5inVMYjjiVk4LIyGUGnBlzPYpMhS1Paw(aq7rAmS8d3fS5aljHwtlTioyds7Bx8U3UAXpvf9Ld0QO)GiG)WKhyOaf8DSuqmKyutk8okOX8STe5nR)rkripKYEHLVp8eLCe00p5IojlHgtstPIIW9LerIBYobkViS4aJMMClB36TL725PVOx5XBulQeS9IPS9hK5OU0TXJ(3ijP0CPhnLMb)NKgYfBzspbj)5ZNVAMlzmVGkLaFk8oqjPidZ4j0RDR02sfv8R(ER5x3RIfGQKN0CW12CYToRRe)3QV6SFkDTJPUj6ixLM8PUDH1koYem5js6ZQWobjMEBghJvx7Jgn8TINEjScjjpM(0dvF6hQI(yo4geLhLvr8DvrXKczHNoJpXu6pOy6RIX3H1)mmf44Tyw86MaOBlKcwSSwWoJU0zvR10VszbnKjPzf6lUnLZtc3vkE1yvWAPINb(QV6oMGQOxFr0ObfdUPqL3GjK9H8DHOs)SHmlkf7rvwYbTbnMMlDsmljuqygADR9HRJ0oR29pFQZSlfCBG3Lh)8TXVgNsdLeXEQSO23He(cnKMtZy0Ihxnxq3jOfhiBtPQBpnVOGLXfjmW8orEXWbNsEHeUTua3sy0Vjtx7F(S1klNxh2Jhd9auiG)65jCPNM66jOzGXu8egXekzz05XCEAc)uEOGcCuxdglQ2aqzlpvPGa6neB14h8IpasjSJQhxE(8SgpQ1wgHNMB93Y2N8h7wPnhYyFbhSz797ZvBIeakr3XrOYvh(EzEkLuCaK8o0TE(SA1wYq0yZfA8YpU0f3HAKKqSAtFakUK3Xy5JV)ExNqrhlgUHWCa8aaUYlH7JtQH(O5q0d6Mq6CXGlJQAVl(7od)a4Qv6kyJopInGshgIczPXVnMF0fhnsEDrGEc7O2QwDJM0emrqFRPRfm3vDLlrAnfRTo5Luzz(iQdnhXnsUEkFb41PKmnap8dpdxjQfZQ)Y1PgX8eSJ4TpYZwCcVM1WKriRSy0ncZiF1fp1dc0qNvHsiE(bAynOpxu0A9Np3jLtaGqbGBMVVpndAsQBFtRULKvxAo7tRC6P7LQoKrJPObz4Ap9ZoC3gVwWMxGIIWE1DgV4d(qlXNiceNRiyJQPxw2rUak5VJdn)(Me6oszQ8nvrc6Fwc1otQIk4zaDKsjpdAucwaUlYH7cO3GFJLdB57dDq)l8CqyQ9FJDDoGDsUJ1BVjG9VY)Rx3ZWL)BZWhCZqlSFl2AT7qMx9PpQ8EilVRTeCvecAHENGnQVW3S01Zg8JpRErunXbBg(ucyTAbf8Zbs4MtN6bpOWI4viX9RSjg6eKkye8Tsd70Tk6MQiNOsDB4OJ3QOhbpQIKjq7QIoFgCuvrZA40azphcTC2ry019gS(Pqd8UrnWRgtoFpTXRnnddK4QO1ySGjV7TSb7aw39)pZ60fQviTMv9WG49(gaTIFFNoP1phWKcj8q(6yLUmPXd3TBnqfsAdzRSrNW2k30YE9PD)USsNsUTVl1PF)99h3QhTPtxNOzmn0aJE46spmC1wh1WBpE42Gg165AFhDD3Tx8nqWM6E5WBUEgA1VxnSzy9WGAyWGydJkYwM171juV1ol6(WO6(i93DP5nZDNtoEgI)IPs8Nnwk(LNCQOD6MbnGDhOGJNP5UVqLaNH1tNO7WH3s6eOK745zJ1IOY2NQ)XEP22MekOXtfVKEjRHwMOFYASKUIIt3zPI4vF7WvpPoL21OE6NYknWh61YbySn9b6cJT(ZW6x7Ab9zpzjLk9Gww7WrtPofYjqqoWvXz1QUMWJ7CcvA2t38PMgB1zxhF7qtT1HSHDDv2QgQT7APDQwwezuOSFkxtvJSFQxtbc2nfmxiGTezovmlkRrO6KQ(yYSPCcOIrAxFmy9Pbaa0L6qhDWTj4TrLaxP8DER(H(4OOqZSXAZrNJpvQBuCa96ZURjO23UR1wj1ppoRi9Ack8AYdhovpRse262AvDke)WXol7XqmMSxBdFJmFpvYC3m(uuAoNpLPE)L3SN)4npm5i60XsN1DZpYR10C2gZxuPaV7FQcaEcF7wI62wXAv(xp02qytNrBM(NpCX8OFmKdGYB7GY(HNDDZAk0LxsfIAWv7YOwsgKnPuEGds4xPpZszQ1c(R)]] )
|