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.

2196 lines
91 KiB

-- DruidGuardian.lua
-- October 2022
if UnitClassBase( "player" ) ~= "DRUID" then return end
local addon, ns = ...
local Hekili = _G[ addon ]
local class, state = Hekili.Class, Hekili.State
local strformat = string.format
local spec = Hekili:NewSpecialization( 104 )
spec:RegisterResource( Enum.PowerType.Rage, {
oakhearts_puny_quods = {
aura = "oakhearts_puny_quods",
last = function ()
local app = state.buff.oakhearts_puny_quods.applied
local t = state.query_time
return app + floor( t - app )
end,
interval = 1,
value = 10
},
raging_frenzy = {
aura = "frenzied_regeneration",
pvptalent = "raging_frenzy",
last = function ()
local app = state.buff.frenzied_regeneration.applied
local t = state.query_time
return app + floor( t - app )
end,
interval = 1,
value = 10 -- tooltip says 60, meaning this would be 20, but NOPE.
},
thrash_bear = {
aura = "thrash_bear",
talent = "blood_frenzy",
debuff = true,
last = function ()
return state.debuff.thrash_bear.applied + floor( ( state.query_time - state.debuff.thrash_bear.applied ) / class.auras.thrash_bear.tick_time ) * class.auras.thrash_bear.tick_time
end,
interval = function () return class.auras.thrash_bear.tick_time end,
value = function () return 2 * state.active_dot.thrash_bear end,
}
} )
spec:RegisterResource( Enum.PowerType.LunarPower )
spec:RegisterResource( Enum.PowerType.Mana )
spec:RegisterResource( Enum.PowerType.ComboPoints )
spec:RegisterResource( Enum.PowerType.Energy )
-- Talents
spec:RegisterTalents( {
-- Druid
astral_influence = { 82210, 197524, 2 }, -- Increases the range of all of your abilities by -1 yards.
cyclone = { 82213, 33786 , 1 }, -- Tosses the enemy target into the air, disorienting them but making them invulnerable for up to 6 sec. Only one target can be affected by your Cyclone at a time.
feline_swiftness = { 82239, 131768, 2 }, -- Increases your movement speed by 15%.
forestwalk = { 92229, 400129, 2 }, -- Casting Regrowth increases your movement speed and healing received by 5% for 3 sec.
gale_winds = { 92228, 400142, 1 }, -- Increases Typhoon's radius by 20% and its range by 5 yds.
heart_of_the_wild = { 82231, 319454, 1 }, -- Abilities not associated with your specialization are substantially empowered for $d.$?!s137013[; Balance: Cast time of Balance spells reduced by $s13% and damage increased by $s1%.][]$?!s137011[; Feral: Gain $s14 Combo Point every $t14 sec while in Cat Form and Physical damage increased by $s4%.][]$?!s137010[; Guardian: Bear Form gives an additional $s7% Stamina, multiple uses of Ironfur may overlap, and Frenzied Regeneration has ${$s9+1} charges.][]$?!s137012[; Restoration: Healing increased by $s10%, and mana costs reduced by $s12%.][]
hibernate = { 82211, 2637 , 1 }, -- Forces the enemy target to sleep for up to 40 sec. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.
improved_barkskin = { 82219, 327993, 1 }, -- Barkskin's duration is increased by 4 sec.
improved_rejuvenation = { 82240, 231040, 1 }, -- Rejuvenation's duration is increased by 3 sec.
improved_stampeding_roar = { 82230, 288826, 1 }, -- Cooldown reduced by 60 sec.
improved_sunfire = { 93714, 231050, 1 }, -- Sunfire now applies its damage over time effect to all enemies within 8 yards.
improved_swipe = { 82226, 400158, 1 }, -- Increases Swipe damage by 100%.
incapacitating_roar = { 82237, 99 , 1 }, -- Shift into Bear Form and invoke the spirit of Ursol to let loose a deafening roar, incapacitating all enemies within 10 yards for 3 sec. Damage will cancel the effect.
incessant_tempest = { 92228, 400140, 1 }, -- Reduces the cooldown of Typhoon by 5 sec.
innervate = { 82243, 29166 , 1 }, -- Infuse a friendly healer with energy, allowing them to cast spells without spending mana for 10 sec.
ironfur = { 82227, 192081, 1 }, -- Increases armor by 7,857 for 7 sec.
killer_instinct = { 82225, 108299, 2 }, -- Physical damage and Armor increased by 2%.
lycaras_teachings = { 82233, 378988, 3 }, -- You gain 2% of a stat while in each form: No Form: Haste Cat Form: Critical Strike Bear Form: Versatility Moonkin Form: Mastery
maim = { 82221, 22570 , 1 }, -- Finishing move that causes Physical damage and stuns the target. Damage and duration increased per combo point: 1 point : 1,621 damage, 1 sec 2 points: 3,243 damage, 2 sec 3 points: 4,864 damage, 3 sec 4 points: 6,486 damage, 4 sec 5 points: 8,107 damage, 5 sec
mass_entanglement = { 82242, 102359, 1 }, -- Roots the target and all enemies within 15 yards in place for 30 sec. Damage may interrupt the effect. Usable in all shapeshift forms.
matted_fur = { 82236, 385786, 1 }, -- When you use Barkskin or Survival Instincts, absorb 39,377 damage for 8 sec.
mighty_bash = { 82237, 5211 , 1 }, -- Invokes the spirit of Ursoc to stun the target for 4 sec. Usable in all shapeshift forms.
natural_recovery = { 82206, 377796, 2 }, -- Healing done and healing taken increased by 3%.
natures_vigil = { 82244, 124974, 1 }, -- For 15 sec, all single-target damage also heals a nearby friendly target for 20% of the damage done.
nurturing_instinct = { 82214, 33873 , 2 }, -- Magical damage and healing increased by 2%.
primal_fury = { 82238, 159286, 1 }, -- When you critically strike with an attack that generates a combo point, you gain an additional combo point. Damage over time cannot trigger this effect.
protector_of_the_pack = { 82245, 378986, 1 }, -- Store 5% of your damage, up to 50,665. Your next Regrowth consumes all stored damage to increase its healing.
renewal = { 82232, 108238, 1 }, -- Instantly heals you for 30% of maximum health. Usable in all shapeshift forms.
rising_light_falling_night = { 82207, 417712, 1 }, -- Increases your damage and healing by 3% during the day. Increases your Versatility by 2% during the night.
skull_bash = { 82224, 106839, 1 }, -- You charge and bash the target's skull, interrupting spellcasting and preventing any spell in that school from being cast for 3 sec.
soothe = { 82229, 2908 , 1 }, -- Soothes the target, dispelling all enrage effects.
stampeding_roar = { 82234, 106898, 1 }, -- Shift into Bear Form and let loose a wild roar, increasing the movement speed of all friendly players within 15 yards by 60% for 8 sec.
sunfire = { 82208, 93402 , 1 }, -- A quick beam of solar light burns the enemy for 2,564 Nature damage and then an additional 21,622 Nature damage over 13.5 sec.
thick_hide = { 82228, 16931 , 2 }, -- Reduces all damage taken by 6%.
tiger_dash = { 82198, 252216, 1 }, -- Shift into Cat Form and increase your movement speed by 200%, reducing gradually over 5 sec.
tireless_pursuit = { 82197, 377801, 1 }, -- For 3 sec after leaving Cat Form or Travel Form, you retain up to 40% movement speed.
typhoon = { 82209, 132469, 1 }, -- Blasts targets within 15 yards in front of you with a violent Typhoon, knocking them back and reducing their movement speed by 50% for 6 sec. Usable in all shapeshift forms.
ursine_vigor = { 82235, 377842, 2 }, -- For 4 sec after shifting into Bear Form, your health and armor are increased by 10%.
ursols_vortex = { 82242, 102793, 1 }, -- Conjures a vortex of wind for 10 sec at the destination, reducing the movement speed of all enemies within 8 yards by 50%. The first time an enemy attempts to leave the vortex, winds will pull that enemy back to its center. Usable in all shapeshift forms.
verdant_heart = { 82218, 301768, 1 }, -- Frenzied Regeneration and Barkskin increase all healing received by 20%.
wellhoned_instincts = { 82246, 377847, 2 }, -- When you fall below 40% health, you cast Frenzied Regeneration, up to once every 120 sec.
wild_charge = { 82198, 102401, 1 }, -- Fly to a nearby ally's position.
wild_growth = { 82241, 48438 , 1 }, -- Heals up to 5 injured allies within 30 yards of the target for 16,895 over 6.0 sec. Healing starts high and declines over the duration.
-- Guardian
after_the_wildfire = { 82140, 371905, 1 }, -- Every 200 Rage you spend causes a burst of restorative energy, healing allies within 12 yds for 63,330.
berserk_persistence = { 82144, 50334 , 1 }, -- Go berserk for 15 sec, increasing your haste by 15%, reducing the cooldown of Frenzied Regeneration by 100%, Mangle, Thrash, and Growl by 50%, and reducing the cost of Maul and Ironfur by 50%.
berserk_ravage = { 82149, 50334 , 1 }, -- Go berserk for 15 sec, increasing your haste by 15%, reducing the cooldown of Frenzied Regeneration by 100%, Mangle, Thrash, and Growl by 50%, and reducing the cost of Maul and Ironfur by 50%.
berserk_unchecked_aggression = { 82155, 50334 , 1 }, -- Go berserk for 15 sec, increasing your haste by 15%, reducing the cooldown of Frenzied Regeneration by 100%, Mangle, Thrash, and Growl by 50%, and reducing the cost of Maul and Ironfur by 50%.
blood_frenzy = { 82142, 203962, 1 }, -- Thrash also generates ${$203961s1/10} Rage each time it deals damage, on up to $s1 targets.
brambles = { 82161, 203953, 1 }, -- Sharp brambles protect you, absorbing and reflecting up to 792 damage from each attack. While Barkskin is active, the brambles also deal 553 Nature damage to all nearby enemies every 1 sec.
bristling_fur = { 82161, 155835, 1 }, -- Bristle your fur, causing you to generate Rage based on damage taken for 8 sec.
circle_of_life_and_death = { 82137, 391969, 1 }, -- Your damage over time effects deal their damage in 25% less time, and your healing over time effects in 15% less time.
convoke_the_spirits = { 82136, 391528, 1 }, -- Call upon the Night Fae for an eruption of energy, channeling a rapid flurry of 16 Druid spells and abilities over 4 sec. You will cast Mangle, Ironfur, Moonfire, Wrath, Regrowth, Rejuvenation, Rake, and Thrash on appropriate nearby targets, favoring your current shapeshift form.
dream_of_cenarius = { 92227, 372119, 1 }, -- When you take non-periodic damage, you have a chance equal to your critical strike to cause your next Regrowth to heal for an additional 200%, and to be instant, free, and castable in all forms for 30 sec. This effect cannot occur more than once every 20 sec.
earthwarden = { 82156, 203974, 1 }, -- When you deal direct damage with Thrash, you gain a charge of Earthwarden, reducing the damage of the next auto attack you take by 30%. Earthwarden may have up to 3 charges.
elunes_favored = { 82134, 370586, 1 }, -- While in Bear Form, you deal 10% increased Arcane damage, and are healed for 40% of all Arcane damage done.
flashing_claws = { 82154, 393427, 2 }, -- Thrash has a 10% chance to trigger an additional Thrash. Thrash stacks 1 additional time.
frenzied_regeneration = { 82220, 22842 , 1 }, -- Heals you for 32% health over 3 sec, and increases healing received by 20%.
fury_of_nature = { 82138, 370695, 2 }, -- While in Bear Form, you deal 10% increased Arcane damage.
galactic_guardian = { 82145, 203964, 1 }, -- Your damage has a 5% chance to trigger a free automatic Moonfire on that target. When this occurs, the next Moonfire you cast generates 8 Rage, and deals 300% increased direct damage.
gore = { 82126, 210706, 1 }, -- Thrash, Swipe, Moonfire, and Maul have a 15% chance to reset the cooldown on Mangle, and to cause it to generate an additional 4 Rage.
gory_fur = { 82132, 200854, 1 }, -- Mangle has a 15% chance to reduce the Rage cost of your next Ironfur by 25%.
guardian_of_elune = { 82140, 155578, 1 }, -- Mangle increases the duration of your next Ironfur by 3 sec, or the healing of your next Frenzied Regeneration by 20%.
improved_survival_instincts = { 82128, 328767, 1 }, -- Survival Instincts now has 2 charges.
incarnation = { 82136, 102558, 1 }, -- An improved Bear Form that grants the benefits of Berserk, causes Mangle to hit up to 3 targets, and increases maximum health by 30%. Lasts 30 sec. You may freely shapeshift in and out of this improved Bear Form for its duration.
incarnation_guardian_of_ursoc = { 82136, 102558, 1 }, -- An improved Bear Form that grants the benefits of Berserk, causes Mangle to hit up to 3 targets, and increases maximum health by 30%. Lasts 30 sec. You may freely shapeshift in and out of this improved Bear Form for its duration.
infected_wounds = { 82162, 345208, 1 }, -- Mangle and Maul cause an Infected Wound in the target, reducing their movement speed by 50% for 12 sec.
innate_resolve = { 82160, 377811, 1 }, -- Frenzied Regeneration's healing is increased by up to 150% based on your missing health. Frenzied Regeneration has 1 additional charge.
layered_mane = { 82148, 384721, 2 }, -- Ironfur has a 10% chance to apply two stacks and Frenzied Regeneration has a 10% chance to not consume a charge.
lunar_beam = { 92587, 204066, 1 }, -- Summons a beam of lunar light at your location, increasing your mastery by 15%, dealing 23,727 Arcane damage and healing you for 141,420 over 8 sec.
mangle = { 82131, 231064, 1 }, -- Mangle deals 20% additional damage against bleeding targets.
maul = { 82127, 6807 , 1 }, -- Maul the target for 25,267 Physical damage.
moonkin_form = { 91043, 197625, 1 }, -- Shapeshift into Moonkin Form, increasing the damage of your spells by 10% and your armor by 125%, and granting protection from Polymorph effects. The act of shapeshifting frees you from movement impairing effects.
moonless_night = { 92586, 400278, 1 }, -- Your direct damage melee abilities against enemies afflicted by Moonfire cause them to burn for an additional 20% Arcane damage.
pulverize = { 82153, 80313 , 1 }, -- A devastating blow that consumes 2 stacks of your Thrash on the target to deal 28,637 Physical damage and reduce the damage they deal to you by 35% for 10 sec.
rage_of_the_sleeper = { 82141, 200851, 1 }, -- Unleashes the rage of Ursoc for 10 sec, preventing 25% of all damage you take, increasing your damage done by 15%, granting you 25% leech, and reflecting 5,953 Nature damage back at your attackers.
rake = { 82199, 1822 , 1 }, -- Rake the target for 2,180 Bleed damage and an additional 16,953 Bleed damage over 11.3 sec. While stealthed, Rake will also stun the target for 4 sec and deal 60% increased damage. Awards 1 combo point.
raze = { 92588, 400254, 1 }, -- Strike with the might of Ursoc, dealing 14,772 Physical damage to all enemies in front of you. Deals reduced damage beyond 5 targets.
reinforced_fur = { 82139, 393618, 1 }, -- Ironfur increases armor by an additional 15% and Barkskin reduces damage taken by an additional 10%.
reinvigoration = { 82157, 372945, 2 }, -- Frenzied Regeneration's cooldown is reduced by 10%.
rejuvenation = { 82217, 774 , 1 }, -- Heals the target for 21,808 over 10.2 sec.
remove_corruption = { 82215, 2782 , 1 }, -- Nullifies corrupting effects on the friendly target, removing all Curse and Poison effects.
rend_and_tear = { 82152, 204053, 1 }, -- Each stack of Thrash reduces the target's damage to you by 2% and increases your damage to them by 2%.
rip = { 82222, 1079 , 1 }, -- Finishing move that causes Bleed damage over time. Lasts longer per combo point. 1 point : 10,948 over 6 sec 2 points: 16,422 over 9 sec 3 points: 21,896 over 12 sec 4 points: 27,370 over 15 sec 5 points: 32,844 over 18 sec
scintillating_moonlight = { 82146, 238049, 2 }, -- Moonfire reduces damage dealt to you by -1%.
soul_of_the_forest = { 92226, 158477, 1 }, -- Mangle generates 5 more Rage and deals 25% more damage.
starfire = { 91041, 197628, 1 }, -- Call down a burst of energy, causing 11,220 Arcane damage to the target, and 3,828 Arcane damage to all other enemies within 5 yards. Deals reduced damage beyond 8 targets.
starsurge = { 82200, 197626, 1 }, -- Launch a surge of stellar energies at the target, dealing 20,773 Astral damage.
survival_instincts = { 82129, 61336 , 1 }, -- Reduces all damage you take by 50% for 6 sec.
survival_of_the_fittest = { 82143, 203965, 2 }, -- Reduces the cooldowns of Barkskin and Survival Instincts by 15%.
swiftmend = { 82216, 18562 , 1 }, -- Consumes a Regrowth, Wild Growth, or Rejuvenation effect to instantly heal an ally for 69,012.
thorns_of_iron = { 92585, 400222, 1 }, -- When you cast Ironfur, also deal Physical damage equal to 20% of your armor, split among enemies within 12 yards. Damage reduced above 4 applications.
thrash = { 82223, 106832, 1 }, -- Thrash all nearby enemies, dealing immediate physical damage and periodic bleed damage. Damage varies by shapeshift form.
tooth_and_claw = { 82133, 135288, 1 }, -- Autoattacks have a 20% chance to empower your next cast of Maul or Raze, stacking up to 2 times. An empowered cast of Maul or Raze deals 40% increased damage, costs 100% less rage, and reduces the target's damage to you by 15% for 6 sec.
twin_moonfire = { 82147, 372567, 1 }, -- Moonfire deals 10% increased damage and also hits another nearby enemy within 15 yds of the target.
untamed_savagery = { 82152, 372943, 1 }, -- Increases the damage and radius of Thrash by 25%.
ursocs_endurance = { 82130, 393611, 1 }, -- Increases the duration of Barkskin and Ironfur by 2.0 sec.
ursocs_fury = { 82151, 377210, 1 }, -- Thrash and Maul grant you an absorb shield for 60% of the damage dealt for 15 sec.
ursocs_guidance = { 82135, 393414, 1 }, -- Incarnation: Guardian of Ursoc: Every 20 Rage you spend reduces the cooldown of Incarnation: Guardian of Ursoc by 1 sec. Convoke the Spirits: Convoke the Spirits' cooldown is reduced by 50% and its duration and number of spells cast is reduced by 25%. Convoke the Spirits has an increased chance to use an exceptional spell or ability.
vicious_cycle = { 82158, 371999, 1 }, -- Mangle increases the damage of your next cast of Maul or Raze, and casting Maul or Raze increases the damage of your next Mangle by 15%. Stacks up to 3.
vulnerable_flesh = { 82159, 372618, 2 }, -- Maul and Raze have an additional 30% chance to critically strike.
} )
-- PvP Talents
spec:RegisterPvpTalents( {
alpha_challenge = 842 , -- (207017) You focus the assault on this target, increasing their damage taken by 3% for 6 sec. Each unique player that attacks the target increases the damage taken by an additional 3%, stacking up to 5 times. Your melee attacks refresh the duration of Focused Assault.
charging_bash = 194 , -- (228431)
demoralizing_roar = 52 , -- (201664) Demoralizes all enemies within 10 yards, reducing the damage they do by 20% for 8 sec.
den_mother = 51 , -- (236180)
emerald_slumber = 197 , -- (329042) Embrace the Emerald Dream, causing you to enter a deep slumber for 8 sec. While sleeping, all other cooldowns recover 400% faster, and allies within 40 yds are healed for 6,333 every 1 sec. Direct damage taken may awaken you.
entangling_claws = 195 , -- (202226)
freedom_of_the_herd = 3750, -- (213200)
grove_protection = 5410, -- (354654) Summon a grove to protect allies in the area for 10 sec, reducing damage taken by 50% from enemies outside the grove.
malornes_swiftness = 1237, -- (236147)
master_shapeshifter = 49 , -- (236144)
overrun = 196 , -- (202246) Charge to an enemy, stunning them for 3 sec and knocking back their allies within 15 yards.
} )
local mod_circle_hot = setfenv( function( x )
return x * ( legendary.circle_of_life_and_death.enabled and 0.85 or 1 ) * ( talent.circle_of_life_and_death.enabled and 0.85 or 1 )
end, state )
local mod_circle_dot = setfenv( function( x )
return x * ( legendary.circle_of_life_and_death.enabled and 0.75 or 1 ) * ( talent.circle_of_life_and_death.enabled and 0.75 or 1 )
end, state )
-- Auras
spec:RegisterAuras( {
after_the_wildfire = {
id = 400734,
duration = 3600,
max_stack = 1
},
aquatic_form = {
id = 276012,
duration = 3600,
max_stack = 1,
},
-- All damage taken reduced by $w1%.
-- https://wowhead.com/beta/spell=22812
barkskin = {
id = 22812,
duration = function() return ( talent.improved_barkskin.enabled and 12 or 8 ) + talent.ursocs_endurance.rank end,
type = "Magic",
max_stack = 1
},
-- Armor increased by $w4%. Stamina increased by $1178s2%. Immune to Polymorph effects.
-- https://wowhead.com/beta/spell=5487
bear_form = {
id = 5487,
duration = 3600,
type = "Magic",
max_stack = 1
},
-- Berserk. $?a377623[Haste increased by $s4%. ][]$?a343240|(a343240&a377779)[Cooldowns of ][]$?a377779&!a343240[Cooldown of ][]$?a377779[Frenzied Regeneration][]$?a343240&a377779[, ][]$?a343240[Mangle, Thrash, and Growl][]$?a377779|a343240[ reduced by $s2%][]$?a377779|a377623[Cost of ][]$?a377623[Maul][]$?a377623&a377779[ and ][]$?a377779[Ironfur][]$?a377779|a377623[ reduced by $s3%][].$?a339062[ Immune to effects that cause loss of control of your character.][]
-- https://wowhead.com/beta/spell=50334
berserk = {
id = 50334,
duration = 15,
max_stack = 1
},
-- Alias for Berserk vs. Incarnation
berserk_bear = {
alias = { "berserk", "incarnation" },
aliasMode = "first", -- use duration info from the first buff that's up, as they should all be equal.
aliasType = "buff",
duration = function () return talent.incarnation.enabled and 30 or 15 end,
},
-- Talent: Generating Rage from taking damage.
-- https://wowhead.com/beta/spell=155835
bristling_fur = {
id = 155835,
duration = 8,
max_stack = 1
},
-- Autoattack damage increased by $w4%. Immune to Polymorph effects. Movement speed increased by $113636s1% and falling damage reduced.
-- https://wowhead.com/beta/spell=768
cat_form = {
id = 768,
duration = 3600,
type = "Magic",
max_stack = 1
},
-- Talent / Covenant (Night Fae): Every ${$t1}.2 sec, casting $?a24858|a197625[Starsurge, Starfall,]?a768[Ferocious Bite, Shred, Tiger's Fury,]?a5487[Mangle, Ironfur,][Wild Growth, Swiftmend,] Moonfire, Wrath, Regrowth, Rejuvenation, Rake or Thrash on appropriate nearby targets.
-- https://wowhead.com/beta/spell=323764
convoke_the_spirits = {
id = 391528,
duration = 4,
max_stack = 1,
copy = 323764
},
-- Heals $w1 damage every $t1 seconds.
-- https://wowhead.com/beta/spell=200389
cultivation = {
id = 200389,
duration = 6,
max_stack = 1
},
-- Talent: Disoriented and invulnerable.
-- https://wowhead.com/beta/spell=33786
cyclone = {
id = 33786,
duration = 6,
mechanic = "banish",
type = "Magic",
max_stack = 1
},
-- Increased movement speed by $s1% while in Cat Form.
-- https://wowhead.com/beta/spell=1850
dash = {
id = 1850,
duration = 10,
type = "Magic",
max_stack = 1
},
dream_of_cenarius = {
id = 372152,
duration = 30,
max_stack = 1
},
earthwarden = {
id = 203975,
duration = 3600,
max_stack = 3
},
-- Rooted.$?<$w2>0>[ Suffering $w2 Nature damage every $t2 sec.][]
-- https://wowhead.com/beta/spell=339
entangling_roots = {
id = 339,
duration = 30,
mechanic = "root",
type = "Magic",
max_stack = 1
},
-- Bleeding for $w2 damage every $t2 sec.
-- https://wowhead.com/beta/spell=274838
feral_frenzy = {
id = 274838,
duration = 6,
max_stack = 1
},
flight_form = {
id = 276029,
duration = 3600,
max_stack = 1,
},
-- Bleeding for $w1 damage every $t sec.
-- https://wowhead.com/beta/spell=391140
frenzied_assault = {
id = 391140,
duration = 8,
tick_time = 2,
mechanic = "bleed",
max_stack = 1
},
-- Talent: Healing $w1% health every $t1 sec.
-- https://wowhead.com/beta/spell=22842
frenzied_regeneration = {
id = 22842,
duration = 3,
max_stack = 1
},
-- Movement speed reduced by $s2%. Suffering $w1 Nature damage every $t1 sec.
-- https://wowhead.com/beta/spell=81281
fungal_growth = {
id = 81281,
duration = 8,
tick_time = 2,
type = "Magic",
max_stack = 1
},
-- Generating ${$m3/10/$t3*$d} Astral Power over $d.
-- https://wowhead.com/beta/spell=202770
fury_of_elune = {
id = 202770,
duration = 8,
type = "Magic",
max_stack = 1
},
galactic_guardian = {
id = 213708,
duration = 15,
max_stack = 1,
},
gore = {
id = 93622,
duration = 10,
max_stack = 1,
},
-- Talent: Reduces the Rage cost of your next Ironfur by $s1%.
-- https://wowhead.com/beta/spell=201671
gory_fur = {
id = 201671,
duration = 3600,
max_stack = 1
},
-- Heals $w1 every $t1 sec.
-- https://wowhead.com/beta/spell=279793
grove_tending = {
id = 279793,
duration = 9,
max_stack = 1,
copy = 383193
},
-- Taunted.
-- https://wowhead.com/beta/spell=6795
growl = {
id = 6795,
duration = 3,
mechanic = "taunt",
max_stack = 1
},
-- Talent: Increases the duration of your next Ironfur by ${$m1/1000} sec, or the healing of your next Frenzied Regeneration by $s2%.
-- https://wowhead.com/beta/spell=213680
guardian_of_elune = {
id = 213680,
duration = 15,
max_stack = 1
},
-- Talent: Abilities not associated with your specialization are substantially empowered.
-- https://wowhead.com/beta/spell=319454
heart_of_the_wild = {
id = 319454,
duration = 45,
tick_time = 2,
type = "Magic",
max_stack = 1,
copy = { 319451, 319452, 319453 }
},
-- Talent: Asleep.
-- https://wowhead.com/beta/spell=2637
hibernate = {
id = 2637,
duration = 40,
mechanic = "sleep",
type = "Magic",
max_stack = 1
},
immobilized = {
id = 45334,
duration = 4,
max_stack = 1,
},
-- Talent: Incapacitated.
-- https://wowhead.com/beta/spell=99
incapacitating_roar = {
id = 99,
duration = 3,
mechanic = "incapacitate",
max_stack = 1
},
-- Talent: Cooldowns of Mangle, Thrash, Growl, and Frenzied Regeneration are reduced by $w1%. Ironfur cost reduced by $w3%. Mangle hits up to $w12 targets. Health increased by $w13%.$?$w7>0[ Immune to effects that cause loss of control of your character.][]
-- https://wowhead.com/beta/spell=102558
incarnation = {
id = 102558,
duration = 30,
max_stack = 1,
copy = "incarnation_guardian_of_ursoc"
},
-- Talent: Movement speed slowed by $w1%.
-- https://wowhead.com/beta/spell=345209
infected_wounds = {
id = 345209,
duration = 12,
max_stack = 1
},
-- Talent: Mana costs reduced $w1%.
-- https://wowhead.com/beta/spell=29166
innervate = {
id = 29166,
duration = 10,
type = "Magic",
max_stack = 1
},
intimidating_roar = {
id = 236748,
duration = 3,
max_stack = 1,
},
-- Talent: Armor increased by ${$w1*$AGI/100}.
-- https://wowhead.com/beta/spell=192081
ironfur = {
id = 192081,
duration = function() return ( buff.guardian_of_elune.up and 9 or 7 ) + talent.ursocs_endurance.rank end,
max_stack = 5,
},
-- Healing $w1 every $t1 sec. Blooms for additional healing when effect expires or is dispelled.
-- https://wowhead.com/beta/spell=33763
lifebloom = {
id = 33763,
duration = 15,
type = "Magic",
max_stack = 1,
copy = 188550
},
-- Mastery increased by ${$w2*$mas}%.
lunar_beam = {
id = 204066,
duration = 8.5,
max_stack = 1,
},
-- Talent: Rooted.
-- https://wowhead.com/beta/spell=102359
mass_entanglement = {
id = 102359,
duration = 30,
mechanic = "root",
type = "Magic",
max_stack = 1
},
-- Talent: Absorbs $w1 damage.
-- https://wowhead.com/beta/spell=385787
matted_fur = {
id = 385787,
duration = 8,
max_stack = 1
},
-- Talent: Stunned.
-- https://wowhead.com/beta/spell=5211
mighty_bash = {
id = 5211,
duration = 4,
mechanic = "stun",
max_stack = 1
},
-- Suffering $w1 Arcane damage every $t1 sec.
-- https://wowhead.com/beta/spell=164812
moonfire = {
id = 164812,
duration = function () return mod_circle_dot( 16 ) * haste end,
tick_time = function () return mod_circle_dot( 2 ) * haste end,
type = "Magic",
max_stack = 1,
copy = 155625
},
-- Talent: Immune to Polymorph effects.$?$w3>0[ Armor increased by $w3%.][]
-- https://wowhead.com/beta/spell=197625
moonkin_form = {
id = 197625,
duration = 3600,
type = "Magic",
max_stack = 1
},
-- Talent: Dealing $w2% reduced damage to $@auracaster.
-- https://wowhead.com/beta/spell=80313
pulverize = {
id = 80313,
-- Supposed to not be reduced by CoLD in 10.0.7, but still does in 48520.
duration = function() return mod_circle_dot( 10 ) * haste end,
max_stack = 1
},
-- Talent: Prevents $s4% of all damage you take and reflects $219432s1 Nature damage back at your attackers.
-- https://wowhead.com/beta/spell=200851
rage_of_the_sleeper = {
id = 200851,
duration = 10,
max_stack = 1
},
-- Heals $w2 every $t2 sec.
-- https://wowhead.com/beta/spell=8936
regrowth = {
id = 8936,
duration = function () return mod_circle_hot( 12 ) end,
type = "Magic",
max_stack = 1
},
-- Talent: Healing $w1 every $t1 sec.
-- https://wowhead.com/beta/spell=774
rejuvenation = {
id = 774,
duration = function () return mod_circle_hot( talent.improved_rejuvenation.enabled and 18 or 15 ) end,
tick_time = function () return mod_circle_hot( 3 ) * haste end,
type = "Magic",
max_stack = 1
},
-- Healing $w1 every $t1 sec.
-- https://wowhead.com/beta/spell=155777
rejuvenation_germination = {
id = 155777,
duration = 12,
type = "Magic",
max_stack = 1
},
-- Healing $s1 every $t sec.
-- https://wowhead.com/beta/spell=364686
renewing_bloom = {
id = 364686,
duration = 8,
max_stack = 1
},
-- Talent: Bleeding for $w1 damage every $t1 sec.
-- https://wowhead.com/beta/spell=1079
rip = {
id = 1079,
duration = 4,
tick_time = 2,
mechanic = "bleed",
max_stack = 1
},
-- Swipe and Thrash damage increased by $m1%.
-- https://wowhead.com/beta/spell=279943
sharpened_claws = {
id = 279943,
duration = 6,
max_stack = 1
},
-- Dealing $s1 every $t1 sec.
-- https://wowhead.com/beta/spell=363830
sickle_of_the_lion = {
id = 363830,
duration = 10,
tick_time = 1,
mechanic = "bleed",
max_stack = 1
},
-- Interrupted.
-- https://wowhead.com/beta/spell=97547
solar_beam = {
id = 97547,
duration = 5,
type = "Magic",
max_stack = 1
},
-- Heals $w1 damage every $t1 seconds.
-- https://wowhead.com/beta/spell=207386
spring_blossoms = {
id = 207386,
duration = 6,
max_stack = 1
},
-- Talent: Movement speed increased by $s1%.
-- https://wowhead.com/beta/spell=77764
stampeding_roar = {
id = 77761,
duration = 8,
type = "Magic",
max_stack = 1,
copy = { 77764, 106898 }
},
-- Suffering $w2 Astral damage every $t2 sec.
-- https://wowhead.com/beta/spell=202347
stellar_flare = {
id = 202347,
duration = function () return mod_circle_dot( 24 ) * haste end,
type = "Magic",
max_stack = 1
},
-- Talent: Suffering $w2 Nature damage every $t2 seconds.
-- https://wowhead.com/beta/spell=164815
sunfire = {
id = 164815,
duration = function () return mod_circle_dot( 12 ) * haste end,
tick_time = function () return mod_circle_dot( 2 ) * haste end,
type = "Magic",
max_stack = 1
},
-- Talent: Damage taken reduced by $50322s1%.
-- https://wowhead.com/beta/spell=61336
survival_instincts = {
id = 61336,
duration = 6,
max_stack = 1
},
-- Bleeding for $w1 damage every $t1 seconds.
-- https://wowhead.com/beta/spell=391356
tear = {
id = 391356,
duration = 8,
tick_time = 2,
mechanic = "bleed",
max_stack = 1
},
-- Talent: Bleeding for $w2 damage every $t2 sec.
-- https://wowhead.com/beta/spell=192090
thrash_bear = {
id = 192090,
duration = function () return mod_circle_dot( 15 ) * haste end,
tick_time = function () return mod_circle_dot( 3 ) * haste end,
max_stack = function () return 3 + talent.untamed_savagery.rank end,
},
-- Talent: Increased movement speed by $s1% while in Cat Form, reducing gradually over time.
-- https://wowhead.com/beta/spell=252216
tiger_dash = {
id = 252216,
duration = 5,
type = "Magic",
max_stack = 1
},
tireless_pursuit = {
id = 393897,
duration = 3,
max_stack = 1,
copy = 340546
},
-- Talent: Your next Maul deals $s1% more damage and reduces the target's damage to you by $135601s1%~ for $135601d.
-- https://wowhead.com/beta/spell=135286
tooth_and_claw = {
id = 135286,
duration = 15,
max_stack = 2
},
-- Talent: Dealing $w1% reduced damage to $@auracaster.
-- https://wowhead.com/beta/spell=135601
tooth_and_claw_debuff = {
id = 135601,
duration = 6,
max_stack = 1
},
-- Immune to Polymorph effects. Movement speed increased.
-- https://wowhead.com/beta/spell=783
travel_form = {
id = 783,
duration = 3600,
type = "Magic",
max_stack = 1
},
-- Talent: Dazed.
-- https://wowhead.com/beta/spell=61391
typhoon = {
id = 61391,
duration = 6,
type = "Magic",
max_stack = 1
},
ursocs_fury = {
id = 372505,
duration = 10,
max_stack = 1
},
-- Talent: Movement speed slowed by $s1% and winds impeding movement.
-- https://wowhead.com/beta/spell=102793
ursols_vortex = {
id = 102793,
duration = 10,
type = "Magic",
max_stack = 1,
copy = 127797
},
vicious_cycle_mangle = {
id = 372019,
duration = 15,
max_stack = 1,
},
vicious_cycle_maul = {
id = 372015,
duration = 15,
max_stack = 1,
},
-- Talent: Flying to an ally's position.
-- https://wowhead.com/beta/spell=102401
wild_charge = {
id = 102401,
duration = 0.5,
max_stack = 1
},
-- Talent: Heals $w1 damage every $t1 sec.
-- https://wowhead.com/beta/spell=48438
wild_growth = {
id = 48438,
duration = 7,
type = "Magic",
max_stack = 1
},
any_form = {
alias = { "bear_form", "cat_form", "moonkin_form", "travel_form", "aquatic_form", "stag_form" },
duration = 3600,
aliasMode = "first",
aliasType = "buff",
},
-- PvP Talents
demoralizing_roar = {
id = 201664,
duration = 8,
max_stack = 1,
},
den_mother = {
id = 236181,
duration = 3600,
max_stack = 1,
},
focused_assault = {
id = 206891,
duration = 6,
max_stack = 1,
},
grove_protection_defense = {
id = 354704,
duration = 12,
max_stack = 1,
},
grove_protection_offense = {
id = 354789,
duration = 12,
max_stack = 1,
},
master_shapeshifter_feral = {
id = 236188,
duration = 3600,
max_stack = 1,
},
overrun = {
id = 202244,
duration = 3,
max_stack = 1,
},
protector_of_the_pack = {
id = 201940,
duration = 3600,
max_stack = 1,
},
-- Azerite
masterful_instincts = {
id = 273349,
duration = 30,
max_stack = 1,
},
-- Conduit
savage_combatant = {
id = 340613,
duration = 15,
max_stack = 3
},
wellhoned_instincts = {
id = 340556,
duration = function ()
if conduit.wellhoned_instincts.enabled then return conduit.wellhoned_instincts.mod end
return 90
end,
max_stack = 1
},
-- Legendary
lycaras_fleeting_glimpse = {
id = 340060,
duration = 5,
max_stack = 1
},
ursocs_fury_remembered = {
id = 345048,
duration = 15,
max_stack = 1,
}
} )
Hekili:EmbedAdaptiveSwarm( spec )
-- Function to remove any form currently active.
spec:RegisterStateFunction( "unshift", function()
if ( talent.tireless_pursuit.enabled or conduit.tireless_pursuit.enabled ) and ( buff.cat_form.up or buff.travel_form.up ) then applyBuff( "tireless_pursuit" ) end
removeBuff( "cat_form" )
removeBuff( "bear_form" )
removeBuff( "travel_form" )
removeBuff( "moonkin_form" )
removeBuff( "travel_form" )
removeBuff( "aquatic_form" )
removeBuff( "stag_form" )
end )
-- Function to apply form that is passed into it via string.
spec:RegisterStateFunction( "shift", function( form )
if conduit.tireless_pursuit.enabled and ( buff.cat_form.up or buff.travel_form.up ) then applyBuff( "tireless_pursuit" ) end
removeBuff( "cat_form" )
removeBuff( "bear_form" )
removeBuff( "travel_form" )
removeBuff( "moonkin_form" )
removeBuff( "travel_form" )
removeBuff( "aquatic_form" )
removeBuff( "stag_form" )
applyBuff( form )
end )
spec:RegisterStateExpr( "ironfur_damage_threshold", function ()
return ( settings.ironfur_damage_threshold or 0 ) / 100 * ( health.max )
end )
-- Tier 29
spec:RegisterGear( "tier29", 200351, 200353, 200354, 200355, 200356 )
spec:RegisterAura( "bloody_healing", {
id = 394504,
duration = 6,
max_stack = 1,
} )
-- Tier 30
spec:RegisterGear( "tier30", 202518, 202516, 202515, 202514, 202513 )
-- 2 pieces (Guardian) : When you take damage, Mangle and Thrash damage and Rage generation are increased by 15% for 8 sec and you heal for 6% of damage taken over 8 sec.
spec:RegisterAura( "furious_regeneration", {
id = 408504,
duration = 8,
max_stack = 1
} )
-- 4 pieces (Guardian) : Raze Raze Maul damage increased by 20% and casting Ironfur or Raze Raze Maul increases your maximum health by 3% for 12 sec, stacking 5 times.
spec:RegisterAura( "indomitable_guardian", {
id = 408522,
duration = 12,
max_stack = 5
} )
spec:RegisterGear( "tier31", 207252, 207253, 207254, 207255, 207257 )
-- (2) Rage you spend during Rage of the Sleeper fuel the growth of Dream Thorns, which wreath you in their protection after Rage of the Sleeper expires, absorbing $425407s2% of damage dealt to you while the thorns remain, up to ${$s2/100*$AP} per $s1 Rage spent.
-- (4) Each $s1 Rage you spend while Rage of the Sleeper is active extends its duration by ${$s4/1000}.1 sec, up to ${$s3/1000}.1. Your Dream Thorns become Blazing Thorns, causing $s2% of damage absorbed to be reflected at the attacker.
spec:RegisterAuras( {
dream_thorns = {
id = 425407,
duration = 45,
max_stack = 1,
copy = "blazing_thorns" -- ???
},
})
-- Gear.
spec:RegisterGear( "class", 139726, 139728, 139723, 139730, 139725, 139729, 139727, 139724 )
spec:RegisterGear( "tier19", 138330, 138336, 138366, 138324, 138327, 138333 )
spec:RegisterGear( "tier20", 147136, 147138, 147134, 147133, 147135, 147137 ) -- Bonuses NYI
spec:RegisterGear( "tier21", 152127, 152129, 152125, 152124, 152126, 152128 )
spec:RegisterGear( "ailuro_pouncers", 137024 )
spec:RegisterGear( "behemoth_headdress", 151801 )
spec:RegisterGear( "chatoyant_signet", 137040 )
spec:RegisterGear( "dual_determination", 137041 )
spec:RegisterGear( "ekowraith_creator_of_worlds", 137015 )
spec:RegisterGear( "elizes_everlasting_encasement", 137067 )
spec:RegisterGear( "fiery_red_maimers", 144354 )
spec:RegisterGear( "lady_and_the_child", 144295 )
spec:RegisterGear( "luffa_wrappings", 137056 )
spec:RegisterGear( "oakhearts_puny_quods", 144432 )
spec:RegisterAura( "oakhearts_puny_quods", {
id = 236479,
duration = 3,
max_stack = 1,
} )
spec:RegisterGear( "skysecs_hold", 137025 )
spec:RegisterAura( "skysecs_hold", {
id = 208218,
duration = 3,
max_stack = 1,
} )
spec:RegisterGear( "the_wildshapers_clutch", 137094 )
spec:RegisterGear( "soul_of_the_archdruid", 151636 )
spec:RegisterStateExpr( "lunar_eclipse", function ()
return eclipse.wrath_counter
end )
spec:RegisterStateExpr( "solar_eclipse", function ()
return eclipse.starfire_counter
end )
local LycarasHandler = setfenv( function ()
if buff.travel_form.up then state:RunHandler( "stampeding_roar" )
elseif buff.moonkin_form.up then state:RunHandler( "starfall" )
elseif buff.bear_form.up then state:RunHandler( "barkskin" )
elseif buff.cat_form.up then state:RunHandler( "primal_wrath" )
else state:RunHandle( "wild_growth" ) end
end, state )
local SinfulHysteriaHandler = setfenv( function ()
applyBuff( "ravenous_frenzy_sinful_hysteria" )
end, state )
local DreamThornsHandler = setfenv( function ()
applyBuff( "dream_thorns" )
end, state )
spec:RegisterHook( "reset_precast", function ()
if azerite.masterful_instincts.enabled and buff.survival_instincts.up and buff.masterful_instincts.down then
applyBuff( "masterful_instincts", buff.survival_instincts.remains + 30 )
end
if buff.lycaras_fleeting_glimpse.up then
state:QueueAuraExpiration( "lycaras_fleeting_glimpse", LycarasHandler, buff.lycaras_fleeting_glimpse.expires )
end
if legendary.sinful_hysteria.enabled and buff.ravenous_frenzy.up then
state:QueueAuraExpiration( "ravenous_frenzy", SinfulHysteriaHandler, buff.ravenous_frenzy.expires )
end
if set_bonus.tier31_2pc > 0 and buff.rage_of_the_sleeper.up then
state:QueueAuraExpiration( "rage_of_the_sleeper", DreamThornsHandler, buff.rage_of_the_sleeper.expires )
end
eclipse.reset() -- from Balance.
end )
spec:RegisterHook( "runHandler", function( ability )
local a = class.abilities[ ability ]
if not a or a.startsCombat then
break_stealth()
end
if buff.ravenous_frenzy.up and ability ~= "ravenous_frenzy" then
addStack( "ravenous_frenzy", nil, 1 )
end
end )
spec:RegisterHook( "spend", function( amt, resource )
if talent.after_the_wildfire.enabled and resource == "rage" and amt > 0 then
buff.after_the_wildfire.v1 = buff.after_the_wildfire.v1 - amt
if buff.after_the_wildfire.v1 < 0 then
-- Heal ticked.
buff.after_the_wildfire.v1 = buff.after_the_wildfire.v1 + 200
end
end
end )
spec:RegisterStateTable( "druid", setmetatable( {
}, {
__index = function( t, k )
if k == "catweave_bear" then return settings.catweave_bear
elseif k == "owlweave_bear" then return false
elseif k == "no_cds" then return not toggle.cooldowns
elseif k == "primal_wrath" then return debuff.rip
elseif k == "lunar_inspiration" then return debuff.moonfire_cat end
local fallthru = rawget( debuff, k )
if fallthru then return fallthru end
end
} ) )
-- Force reset when Combo Points change, even if recommendations are in progress.
spec:RegisterUnitEvent( "UNIT_POWER_FREQUENT", "player", nil, function( _, _, powerType )
if powerType == "COMBO_POINTS" then
Hekili:ForceUpdate( powerType, true )
end
end )
-- Abilities
spec:RegisterAbilities( {
alpha_challenge = {
id = 207017,
cast = 0,
cooldown = 20,
gcd = "spell",
pvptalent = "alpha_challenge",
startsCombat = true,
texture = 132270,
handler = function ()
applyDebuff( "target", "focused_assault" )
end,
},
-- Your skin becomes as tough as bark, reducing all damage you take by $s1% and preventing damage from delaying your spellcasts. Lasts $d. Usable while stunned, frozen, incapacitated, feared, or asleep, and in all shapeshift forms.
barkskin = {
id = 22812,
cast = 0,
cooldown = function () return 60 * ( 1 - 0.15 * talent.survival_of_the_fittest.rank ) * ( 1 + ( conduit.tough_as_bark.mod * 0.01 ) ) end,
gcd = "off",
school = "nature",
startsCombat = false,
toggle = "defensives",
defensive = true,
usable = function ()
if not tanking then return false, "player is not tanking right now"
elseif incoming_damage_3s == 0 then return false, "player has taken no damage in 3s" end
return true
end,
handler = function ()
applyBuff( "barkskin" )
if legendary.the_natural_orders_will.enabled and buff.bear_form.up then
applyBuff( "ironfur" )
applyBuff( "frenzied_regeneration" )
end
if talent.matted_fur.enabled then applyBuff( "matted_fur" ) end
end
},
-- Shapeshift into Bear Form, increasing armor by $m4% and Stamina by $1178s2%, granting protection from Polymorph effects, and increasing threat generation. The act of shapeshifting frees you from movement impairing effects.
bear_form = {
id = 5487,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
spend = function() return -25 * ( buff.furious_regeneration.up and 1.15 or 1 ) end,
spendType = "rage",
startsCombat = false,
essential = true,
noform = "bear_form",
handler = function ()
shift( "bear_form" )
if talent.ursine_vigor.enabled or conduit.ursine_vigor.enabled then applyBuff( "ursine_vigor" ) end
end,
},
berserk = {
id = 50334,
cast = 0,
cooldown = function () return legendary.legacy_of_the_sleeper.enabled and 150 or 180 end,
gcd = "off",
toggle = "cooldowns",
startsCombat = true,
notalent = "incarnation",
usable = function() return talent.berserk_ravage.rank + talent.berserk_unchecked_aggression.rank + talent.berserk_persistence.rank > 0, "requires a berserk talent" end,
handler = function ()
applyBuff( "berserk" )
end,
copy = "berserk_bear"
},
-- Talent: Bristle your fur, causing you to generate Rage based on damage taken for $d.
bristling_fur = {
id = 155835,
cast = 0,
cooldown = 40,
gcd = "spell",
school = "nature",
talent = "bristling_fur",
startsCombat = false,
usable = function ()
if incoming_damage_3s < health.max * 0.1 then return false, "player has not taken 10% health in dmg in 3s" end
return true
end,
handler = function ()
applyBuff( "bristling_fur" )
end,
},
-- Shapeshift into Cat Form, increasing auto-attack damage by $s4%, movement speed by $113636s1%, granting protection from Polymorph effects, and reducing falling damage. The act of shapeshifting frees you from movement impairing effects.
cat_form = {
id = 768,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
startsCombat = false,
noform = "cat_form",
handler = function ()
shift( "cat_form" )
if pvptalent.master_shapeshifter.enabled and talent.feral_affinity.enabled then
applyBuff( "master_shapeshifter_feral" )
end
end,
},
-- Talent: Tosses the enemy target into the air, disorienting them but making them invulnerable for up to $d. Only one target can be affected by your Cyclone at a time.
cyclone = {
id = 33786,
cast = 1.7,
cooldown = 0,
gcd = "spell",
school = "nature",
spend = 0.1,
spendType = "mana",
talent = "cyclone",
startsCombat = true,
handler = function ()
applyDebuff( "target", "cyclone" )
end,
},
-- Shift into Cat Form and increase your movement speed by $s1% while in Cat Form for $d.
dash = {
id = 1850,
cast = 0,
cooldown = 120,
gcd = "spell",
school = "physical",
startsCombat = false,
toggle = "defensives",
handler = function ()
if buff.cat_form.down then shift( "cat_form" ) end
applyBuff( "dash" )
end,
},
demoralizing_roar = {
id = 201664,
cast = 0,
cooldown = 30,
gcd = "spell",
pvptalent = "demoralizing_roar",
startsCombat = true,
texture = 132117,
handler = function ()
applyDebuff( "demoralizing_roar" )
active_dot.demoralizing_roar = active_enemies
end,
},
emerald_slumber = {
id = 329042,
cast = 8,
cooldown = 120,
channeled = true,
gcd = "spell",
toggle = "cooldowns",
pvptalent = "emerald_slumber",
startsCombat = false,
texture = 1394953,
handler = function ()
end,
},
-- Roots the target in place for $d. Damage may cancel the effect.$?s33891[ |C0033AA11Tree of Life: Instant cast.|R][]
entangling_roots = {
id = 339,
cast = function () return pvptalent.entangling_claws.enabled and 0 or 1.7 end,
cooldown = function () return pvptalent.entangling_claws.enabled and 6 or 0 end,
gcd = "spell",
school = "nature",
spend = 0.06,
spendType = "mana",
startsCombat = true,
handler = function ()
applyDebuff( "target", "entangling_roots" )
end,
},
-- Talent: Heals you for $o1% health over $d$?s301768[, and increases healing received by $301768s1%][].
frenzied_regeneration = {
id = 22842,
cast = 0,
charges = function () return talent.innate_resolve.enabled and 2 or nil end,
cooldown = function () return 36 * ( buff.berserk.up and talent.berserk_persistence.enabled and 0 or 1 ) * ( 1 - 0.2 * talent.reinvigoration.rank ) end,
recharge = function () return talent.innate_resolve.enabled and ( 36 * ( buff.berserk.up and talent.berserk_persistence.enabled and 0 or 1 ) ) or nil end,
gcd = "spell",
school = "physical",
spend = 10,
spendType = "rage",
talent = "frenzied_regeneration",
startsCombat = false,
toggle = "defensives",
defensive = true,
form = "bear_form",
nobuff = "frenzied_regeneration",
handler = function ()
applyBuff( "frenzied_regeneration" )
gain( health.max * 0.08, "health" )
end,
},
grove_protection = {
id = 354654,
cast = 0,
cooldown = 60,
gcd = "spell",
toggle = "defensives",
pvptalent = "grove_protection",
startsCombat = false,
texture = 4067364,
handler = function ()
-- Don't apply auras; position dependent.
end,
},
-- Taunts the target to attack you.
growl = {
id = 6795,
cast = 0,
cooldown = function () return ( buff.berserk_bear.up and talent.berserk_ravage.enabled and 0 or 8 ) * haste end,
gcd = "off",
school = "physical",
startsCombat = true,
handler = function ()
applyBuff( "growl" )
end,
},
-- Talent: Abilities not associated with your specialization are substantially empowered for $d.$?!s137013[ |cFFFFFFFFBalance:|r Magical damage increased by $s1%.][]$?!s137011[ |cFFFFFFFFFeral:|r Physical damage increased by $s4%.][]$?!s137010[ |cFFFFFFFFGuardian:|r Bear Form gives an additional $s7% Stamina, multiple uses of Ironfur may overlap, and Frenzied Regeneration has ${$s9+1} charges.][]$?!s137012[ |cFFFFFFFFRestoration:|r Healing increased by $s10%, and mana costs reduced by $s12%.][]
heart_of_the_wild = {
id = 319454,
cast = 0,
cooldown = function () return 300 * ( 1 - ( conduit.born_of_the_wilds.mod * 0.01 ) ) end,
gcd = "spell",
school = "nature",
talent = "heart_of_the_wild",
startsCombat = false,
toggle = "cooldowns",
handler = function ()
applyBuff( "heart_of_the_wild" )
end,
},
-- Talent: Forces the enemy target to sleep for up to $d. Any damage will awaken the target. Only one target can be forced to hibernate at a time. Only works on Beasts and Dragonkin.
hibernate = {
id = 2637,
cast = 1.5,
cooldown = 0,
gcd = "spell",
school = "nature",
spend = 0.06,
spendType = "mana",
talent = "hibernate",
startsCombat = false,
handler = function ()
applyDebuff( "target", "hibernate" )
end,
},
-- Talent: Shift into Bear Form and invoke the spirit of Ursol to let loose a deafening roar, incapacitating all enemies within $A1 yards for $d. Damage will cancel the effect.
incapacitating_roar = {
id = 99,
cast = 0,
cooldown = 30,
gcd = "spell",
school = "physical",
talent = "incapacitating_roar",
startsCombat = true,
handler = function ()
if buff.bear_form.down then shift( "bear_form" ) end
applyDebuff( "target", "incapacitating_roar" )
end,
},
incarnation = {
id = 102558,
cast = 0,
cooldown = function () return legendary.legacy_of_the_sleeper.enabled and 150 or 180 end,
gcd = "off",
toggle = "cooldowns",
startsCombat = false,
talent = "incarnation",
handler = function ()
applyBuff( "incarnation" )
end,
copy = { "incarnation_guardian_of_ursoc", "Incarnation" }
},
-- Talent: Infuse a friendly healer with energy, allowing them to cast spells without spending mana for $d.$?s326228[ If cast on somebody else, you gain the effect at $326228s1% effectiveness.][]
innervate = {
id = 29166,
cast = 0,
cooldown = 180,
gcd = "off",
school = "nature",
talent = "innervate",
startsCombat = false,
toggle = "cooldowns",
handler = function ()
applyBuff( "innervate" )
end,
},
-- Talent: Increases armor by ${$s1*$AGI/100} for $d.$?a231070[ Multiple uses of this ability may overlap.][]
ironfur = {
id = 192081,
cast = 0,
cooldown = 0.5,
gcd = "off",
school = "nature",
spend = function () return ( buff.berserk_bear.up and talent.berserk_persistence.enabled and 20 or 40 ) * ( buff.gory_fur.up and 0.85 or 1 ) end,
spendType = "rage",
talent = "ironfur",
startsCombat = false,
toggle = "defensives",
defensive = true,
form = "bear_form",
cycle = function()
if talent.tooth_and_claw.enabled then return "tooth_and_claw" end
end,
usable = function ()
if settings.ironfur_damage_threshold > 0 and incoming_damage_5s < health.max * settings.ironfur_damage_threshold * 0.01 * ( solo and 0.5 or 1 ) then return false, "player has not taken preferred damage in 5s" end
return true
end,
handler = function ()
applyBuff( "ironfur" )
removeBuff( "gory_fur" )
removeBuff( "guardian_of_elune" )
if set_bonus.tier30_4pc > 0 then addStack( "indomitable_guardian" ) end
end,
},
-- Summons a beam of lunar light at your location, dealing 13,476 Arcane damage and healing you for 37,708 over 8 sec.
lunar_beam = {
id = 204066,
cast = 0,
cooldown = 60,
gcd = "spell",
talent = "lunar_beam",
startsCombat = false,
texture = 136057,
handler = function()
applyBuff( "lunar_beam" )
end,
},
-- Talent: Finishing move that causes Physical damage and stuns the target. Damage and duration increased per combo point: 1 point : ${$s2*1} damage, 1 sec 2 points: ${$s2*2} damage, 2 sec 3 points: ${$s2*3} damage, 3 sec 4 points: ${$s2*4} damage, 4 sec 5 points: ${$s2*5} damage, 5 sec
maim = {
id = 22570,
cast = 0,
cooldown = 20,
gcd = "totem",
school = "physical",
spend = 30,
spendType = "energy",
talent = "maim",
startsCombat = true,
form = "cat_form",
usable = function () return combo_points.current > 0, "requires combo_points" end,
handler = function ()
applyDebuff( "target", "maim", combo_points.current )
spend( combo_points.current, "combo_points" )
end,
},
-- Talent: Mangle the target for $s2 Physical damage.$?a231064[ Deals $s3% additional damage against bleeding targets.][] |cFFFFFFFFGenerates ${$m4/10} Rage.|r
mangle = {
id = 33917,
cast = 0,
cooldown = function () return ( buff.berserk_bear.up and talent.berserk_ravage.enabled and 0 or 6 ) * haste end,
gcd = "spell",
school = "physical",
spend = function() return ( -10 - ( buff.gore.up and 4 or 0 ) - ( 5 * talent.soul_of_the_forest.rank ) ) * ( buff.furious_regeneration.up and 1.15 or 1 ) end,
spendType = "rage",
startsCombat = true,
form = "bear_form",
handler = function ()
removeBuff( "vicious_cycle_mangle" )
addStack( "vicious_cycle_maul" )
if talent.guardian_of_elune.enabled then applyBuff( "guardian_of_elune" ) end
if buff.gore.up then
gain( 4, "rage" )
removeBuff( "gore" )
if set_bonus.tier29_4pc > 0 then applyBuff( "bloody_healing" ) end
end
if talent.infected_wounds.enabled then applyDebuff( "target", "infected_wounds" ) end
if conduit.savage_combatant.enabled then addStack( "savage_combatant", nil, 1 ) end
end,
},
-- Talent: Roots the target and all enemies within $A1 yards in place for $d. Damage may interrupt the effect. Usable in all shapeshift forms.
mass_entanglement = {
id = 102359,
cast = 0,
cooldown = 30,
gcd = "spell",
school = "nature",
talent = "mass_entanglement",
startsCombat = true,
handler = function ()
applyDebuff( "target", "mass_entanglement" )
end,
},
-- Talent: Maul the target for $s2 Physical damage.
maul = {
id = 6807,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
spend = function()
if buff.tooth_and_claw.up then return 0 end
return buff.berserk_bear.up and talent.berserk_unchecked_aggression.enabled and 20 or 40
end,
spendType = "rage",
talent = "maul",
startsCombat = true,
form = "bear_form",
usable = function ()
if action.maul.spend > 0 and ( settings.maul_rage or 0 ) > 0 and rage.current - action.maul.spend < ( settings.maul_rage or 0 ) then return false, "not enough additional rage" end
return true
end,
handler = function ()
addStack( "vicious_cycle_mangle" )
removeBuff( "savage_combatant" )
removeBuff( "vicious_cycle_maul" )
if buff.tooth_and_claw.up then
removeStack( "tooth_and_claw" )
applyDebuff( "target", "tooth_and_claw_debuff" )
end
if set_bonus.tier30_4pc > 0 then addStack( "indomitable_guardian" ) end
if talent.infected_wounds.enabled then applyDebuff( "target", "infected_wounds" ) end
if talent.ursocs_fury.enabled then applyBuff( "ursocs_fury" ) end
if pvptalent.sharpened_claws.enabled or essence.conflict_and_strife.major then applyBuff( "sharpened_claws" ) end
end,
},
-- Talent: Invokes the spirit of Ursoc to stun the target for $d. Usable in all shapeshift forms.
mighty_bash = {
id = 5211,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "physical",
talent = "mighty_bash",
startsCombat = true,
toggle = "interrupts",
handler = function ()
applyDebuff( "target", "mighty_bash" )
end,
},
-- A quick beam of lunar light burns the enemy for $164812s1 Arcane damage and then an additional $164812o2 Arcane damage over $164812d$?s238049[, and causes enemies to deal $238049s1% less damage to you.][.]$?a372567[ Hits a second target within $279620s1 yds of the first.][]$?s197911[ |cFFFFFFFFGenerates ${$m3/10} Astral Power.|r][]
moonfire = {
id = 8921,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "arcane",
spend = 0.06,
spendType = "mana",
startsCombat = true,
handler = function ()
applyDebuff( "target", "moonfire" )
if buff.galactic_guardian.up then
gain( 8, "rage" )
removeBuff( "galactic_guardian" )
end
if talent.twin_moonfire.enabled then
active_dot.moonfire = min( true_active_enemies, active_dot.moonfire + 1 )
end
end,
copy = 155625
},
-- Talent: Shapeshift into $?s114301[Astral Form][Moonkin Form], increasing your armor by $m3%, and granting protection from Polymorph effects. The act of shapeshifting frees you from movement impairing effects.
moonkin_form = {
id = 197625,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
talent = "moonkin_form",
startsCombat = false,
noform = "moonkin_form",
handler = function ()
shift( "moonkin_form" )
end,
},
overrun = {
id = 202246,
cast = 0,
cooldown = 25,
gcd = "spell",
startsCombat = true,
texture = 1408833,
pvptalent = "overrun",
handler = function ()
applyDebuff( "target", "overrun" )
setDistance( 5 )
end,
},
-- Talent: A devastating blow that consumes $s3 stacks of your Thrash on the target to deal $s1 Physical damage and reduce the damage they deal to you by $s2% for $d.
pulverize = {
id = 80313,
cast = 0,
cooldown = 45,
gcd = "spell",
school = "physical",
talent = "pulverize",
startsCombat = true,
form = "bear_form",
usable = function ()
if debuff.thrash_bear.stack < 2 then return false, "target has fewer than 2 thrash stacks" end
return true
end,
handler = function ()
if debuff.thrash_bear.count > 2 then debuff.thrash_bear.count = debuff.thrash_bear.count - 2
else removeDebuff( "target", "thrash_bear" ) end
applyBuff( "pulverize" )
end,
},
-- Talent: Unleashes the rage of Ursoc for $d, preventing $s4% of all damage you take and reflecting $219432s1 Nature damage back at your attackers.
rage_of_the_sleeper = {
id = 200851,
cast = 0,
cooldown = 90,
gcd = "off",
school = "physical",
talent = "rage_of_the_sleeper",
startsCombat = false,
toggle = "cooldowns",
handler = function ()
applyBuff( "rage_of_the_sleeper" )
if set_bonus.tier31_2pc > 0 then
state:QueueAuraExpiration( "rage_of_the_sleeper", DreamThornsHandler, buff.rage_of_the_sleeper.expires )
end
end,
},
-- Talent: Maul the target for $s2 Physical damage.
raze = {
id = 400254,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
spend = function()
if buff.tooth_and_claw.up then return 0 end
return buff.berserk_bear.up and talent.berserk_unchecked_aggression.enabled and 20 or 40
end,
spendType = "rage",
talent = "raze",
startsCombat = true,
form = "bear_form",
usable = function ()
if action.raze.spend > 0 and ( settings.maul_rage or 0 ) > 0 and rage.current - action.raze.spend < ( settings.maul_rage or 0 ) then return false, "not enough additional rage" end
return true
end,
handler = function ()
addStack( "vicious_cycle_mangle" )
removeBuff( "savage_combatant" )
removeBuff( "vicious_cycle_maul" )
if buff.tooth_and_claw.up then
removeStack( "tooth_and_claw" )
applyDebuff( "target", "tooth_and_claw_debuff" )
end
if set_bonus.tier30_4pc > 0 then addStack( "indomitable_guardian" ) end
if talent.infected_wounds.enabled then applyDebuff( "target", "infected_wounds" ) end
if talent.ursocs_fury.enabled then applyBuff( "ursocs_fury" ) end
if pvptalent.sharpened_claws.enabled or essence.conflict_and_strife.major then applyBuff( "sharpened_claws" ) end
end,
},
-- Heals a friendly target for $s1 and another ${$o2*$<mult>} over $d.$?s231032[ Initial heal has a $231032s1% increased chance for a critical effect if the target is already affected by Regrowth.][]$?s24858|s197625[ Usable while in Moonkin Form.][]$?s33891[ |C0033AA11Tree of Life: Instant cast.|R][]
regrowth = {
id = 8936,
cast = function() return buff.dream_of_cenarius.up and 0 or 1.5 end,
cooldown = 0,
gcd = "spell",
school = "nature",
spend = function() return buff.dream_of_cenarius.up and 0 or 0.10 end,
spendType = "mana",
startsCombat = false,
usable = function() return buff.dream_of_cenarius.up or buff.any_form.down, "not used in form without dream_of_cenarius" end,
handler = function ()
applyBuff( "regrowth" )
removeBuff( "dream_of_cenarius" )
removeBuff( "protector_of_the_pack" )
if talent.forestwalk.enabled then applyBuff( "forestwalk" ) end
end,
},
-- Talent: Heals the target for $o1 over $d.$?s155675[ You can apply Rejuvenation twice to the same target.][]$?s33891[ |C0033AA11Tree of Life: Healing increased by $5420s5% and Mana cost reduced by $5420s4%.|R][]
rejuvenation = {
id = 774,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "nature",
spend = 0.05,
spendType = "mana",
talent = "rejuvenation",
startsCombat = false,
usable = function ()
if not ( buff.bear_form.down and buff.cat_form.down and buff.travel_form.down and buff.moonkin_form.down ) then return false, "player is in a form" end
return true
end,
handler = function ()
applyBuff( "rejuvenation" )
end,
},
-- Talent: Nullifies corrupting effects on the friendly target, removing all Curse and Poison effects.
remove_corruption = {
id = 2782,
cast = 0,
cooldown = 8,
gcd = "spell",
school = "arcane",
spend = 0.10,
spendType = "mana",
talent = "remove_corruption",
startsCombat = false,
usable = function ()
if buff.dispellable_poison.down and buff.dispellable_curse.down then return false, "player has no dispellable auras" end
return true
end,
handler = function ()
removeBuff( "dispellable_poison" )
removeBuff( "dispellable_curse" )
end,
},
-- Talent: Instantly heals you for $s1% of maximum health. Usable in all shapeshift forms.
renewal = {
id = 108238,
cast = 0,
cooldown = 90,
gcd = "off",
school = "nature",
talent = "renewal",
startsCombat = false,
toggle = "defensives",
defensive = true,
handler = function ()
gain( 0.3 * health.max, "health" )
end,
},
-- Talent: You charge and bash the target's skull, interrupting spellcasting and preventing any spell in that school from being cast for $93985d.
skull_bash = {
id = 106839,
cast = 0,
cooldown = 15,
gcd = "off",
school = "physical",
talent = "skull_bash",
startsCombat = true,
toggle = "interrupts",
debuff = "casting",
readyTime = state.timeToInterrupt,
handler = function ()
interrupt()
end,
},
-- Talent: Soothes the target, dispelling all enrage effects.
soothe = {
id = 2908,
cast = 0,
cooldown = 10,
gcd = "spell",
school = "nature",
spend = 0.056,
spendType = "mana",
talent = "soothe",
startsCombat = true,
debuff = "dispellable_enrage",
handler = function ()
removeDebuff( "target", "dispellable_enrage" )
end,
},
-- Talent: Let loose a wild roar, increasing the movement speed of all friendly players within $A1 yards by $s1% for $d.
stampeding_roar = {
id = 106898,
cast = 0,
cooldown = function () return 120 - ( talent.improved_stampeding_roar.enabled and 60 or 0 ) end,
gcd = "spell",
school = "physical",
talent = "stampeding_roar",
startsCombat = false,
toggle = "interrupts",
handler = function ()
applyBuff( "stampeding_roar" )
if buff.bear_form.down and buff.cat_form.down then
shift( "bear_form" )
end
end,
copy = { 77761, 77764 }
},
-- Talent: A quick beam of solar light burns the enemy for $164815s1 Nature damage and then an additional $164815o2 Nature damage over $164815d$?s231050[ to the primary target and all enemies within $164815A2 yards][].$?s137013[ |cFFFFFFFFGenerates ${$m3/10} Astral Power.|r][]
sunfire = {
id = 93402,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "nature",
spend = 0.12,
spendType = "mana",
talent = "sunfire",
startsCombat = true,
usable = function() return buff.moonkin_form.up or buff.any_form.down, "requires moonkin_form or no form" end,
handler = function ()
applyDebuff( "target", "sunfire" )
active_dot.sunfire = active_enemies
end,
},
-- Talent: Reduces all damage you take by $50322s1% for $50322d.
survival_instincts = {
id = 61336,
cast = 0,
charges = function() return talent.improved_survival_instincts.enabled and 2 or nil end,
cooldown = function () return ( essence.vision_of_perfection.enabled and 0.87 or 1 ) * ( talent.survival_of_the_fittest.enabled and ( 2/3 ) or 1 ) * 180 end,
recharge = function () return talent.improved_survival_instincts.enabled and ( ( essence.vision_of_perfection.enabled and 0.87 or 1 ) * ( talent.survival_of_the_fittest.enabled and ( 2/3 ) or 1 ) * 180 ) or nil end,
gcd = "off",
school = "physical",
talent = "survival_instincts",
startsCombat = false,
toggle = "defensives",
defensive = true,
usable = function ()
if not tanking then return false, "player is not tanking right now"
elseif incoming_damage_3s == 0 then return false, "player has taken no damage in 3s" end
return true
end,
handler = function ()
applyBuff( "survival_instincts" )
if talent.matted_fur.enabled then applyBuff( "matted_fur" ) end
if azerite.masterful_instincts.enabled and buff.survival_instincts.up and buff.masterful_instincts.down then
applyBuff( "masterful_instincts", buff.survival_instincts.remains + 30 )
end
end,
},
-- Talent: Consumes a Regrowth, Wild Growth, or Rejuvenation effect to instantly heal an ally for $s1.$?a383192[ Swiftmend heals the target for $383193o1 over $383193d.][]
swiftmend = {
id = 18562,
cast = 0,
cooldown = 15,
gcd = "spell",
school = "nature",
spend = 0.10,
spendType = "mana",
talent = "swiftmend",
startsCombat = false,
toggle = "defensives",
defensive = true,
usable = function ()
return IsSpellUsable( 18562 ) or buff.regrowth.up or buff.wild_growth.up or buff.rejuvenation.up, "requires a hot"
end,
handler = function ()
unshift()
if buff.regrowth.up then removeBuff( "regrowth" )
elseif buff.wild_growth.up then removeBuff( "wild_growth" )
elseif buff.rejuvenation.up then removeBuff( "rejuvenation" ) end
end,
},
-- Talent: Swipe nearby enemies, inflicting Physical damage. Damage varies by shapeshift form.$?s137011[ |cFFFFFFFFAwards $s1 combo $lpoint:points;.|r][]
swipe_bear = {
id = 213771,
known = 213764,
suffix = "(Bear)",
cast = 0,
cooldown = 0,
gcd = "totem",
school = "physical",
startsCombat = true,
handler = function ()
end,
form = "bear_form",
copy = { "swipe", 213764 },
bind = { "swipe_bear", "swipe_cat", "swipe" }
},
-- Talent: Strikes all nearby enemies, dealing $s1 Bleed damage and an additional $192090o1 Bleed damage over $192090d. When applied from Bear Form, this effect can stack up to $192090u times. |cFFFFFFFFGenerates ${$m2/10} Rage.|r
thrash_bear = {
id = 77758,
known = 106832,
suffix = "(Bear)",
cast = 0,
cooldown = function () return ( buff.berserk_bear.up and talent.berserk_ravage.enabled and 0 or 6 ) * haste end,
gcd = "spell",
school = "physical",
spend = function() return -5 * ( buff.furious_regeneration.up and 1.15 or 1 ) end,
spendType = "rage",
talent = "thrash",
startsCombat = true,
form = "bear_form",
bind = "thrash",
handler = function ()
applyDebuff( "target", "thrash_bear", 15, debuff.thrash_bear.count + 1 )
active_dot.thrash_bear = active_enemies
if talent.ursocs_fury.enabled then applyBuff( "ursocs_fury" ) end
if legendary.ursocs_fury_remembered.enabled then
applyBuff( "ursocs_fury_remembered" )
end
if talent.earthwarden.enabled then addStack( "earthwarden", nil, 1 ) end
end,
},
-- Talent: Shift into Cat Form and increase your movement speed by $s1%, reducing gradually over $d.
tiger_dash = {
id = 252216,
cast = 0,
cooldown = 45,
gcd = "spell",
school = "physical",
talent = "tiger_dash",
startsCombat = false,
handler = function ()
if not buff.cat_form.up then shift( "cat_form" ) end
applyBuff( "tiger_dash" )
end,
},
-- Shapeshift into a travel form appropriate to your current location, increasing movement speed on land, in water, or in the air, and granting protection from Polymorph effects. The act of shapeshifting frees you from movement impairing effects.$?a159456[ Land speed increased when used out of combat. This effect is disabled in battlegrounds and arenas.][]
travel_form = {
id = 783,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
startsCombat = false,
handler = function ()
applyBuff( "travel_form" )
end,
},
-- Talent: Conjures a vortex of wind for $d at the destination, reducing the movement speed of all enemies within $A1 yards by $s1%. The first time an enemy attempts to leave the vortex, winds will pull that enemy back to its center. Usable in all shapeshift forms.
ursols_vortex = {
id = 102793,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "nature",
talent = "ursols_vortex",
startsCombat = true,
handler = function ()
applyDebuff( "target", "ursols_vortex" )
end,
},
-- Talent: Bound backward away from your enemies.
wild_charge = {
id = function ()
if buff.bear_form.up then return 16979
elseif buff.cat_form.up then return 49376
elseif buff.moonkin_form.up then return 102383 end
return 102401
end,
known = 102401,
cast = 0,
cooldown = 15,
gcd = "off",
school = "physical",
talent = "wild_charge",
startsCombat = true,
usable = function () return target.exists and target.distance > 7, "target must be 8+ yards away" end,
handler = function ()
if buff.bear_form.up then target.distance = 5; applyDebuff( "target", "immobilized" )
elseif buff.cat_form.up then target.distance = 5; applyDebuff( "target", "dazed" ) end
end,
copy = { 49376, 16979, 102401, 102383 }
},
-- Talent: Heals up to $s2 injured allies within $A1 yards of the target for $o1 over $d. Healing starts high and declines over the duration.$?s33891[ |C0033AA11Tree of Life: Affects $33891s3 additional $ltarget:targets;.|R][]
wild_growth = {
id = 48438,
cast = 1.5,
cooldown = 10,
gcd = "spell",
school = "nature",
spend = 0.15,
spendType = "mana",
talent = "wild_growth",
startsCombat = false,
handler = function ()
applyBuff( "wild_growth" )
end,
},
} )
spec:RegisterOptions( {
enabled = true,
aoe = 3,
nameplates = true,
nameplateRange = 8,
damage = true,
damageExpiration = 6,
potion = "spectral_agility",
package = "Guardian",
} )
spec:RegisterSetting( "maul_rage", 20, {
name = strformat( "%s (or %s) Rage Threshold", Hekili:GetSpellLinkWithTexture( spec.abilities.maul.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.raze.id ) ),
desc = strformat( "If set above zero, %s and %s can be recommended only if you'll still have this much Rage after use.\n\n"
.. "This option helps to ensure that %s or %s are available if needed.",
Hekili:GetSpellLinkWithTexture( spec.abilities.maul.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.raze.id ),
Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.frenzied_regeneration.id ) ),
type = "range",
min = 0,
max = 60,
step = 0.1,
width = "full"
} )
spec:RegisterSetting( "maul_anyway", true, {
name = strformat( "Use %s and %s in %s Build", Hekili:GetSpellLinkWithTexture( spec.abilities.maul.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.raze.id ),
Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ) ),
desc = strformat( "If checked, %s and %s are recommended more frequently even if you have talented %s or %s.\n\n"
.. "This differs from the default SimulationCraft priority as of February 2023.", Hekili:GetSpellLinkWithTexture( spec.abilities.maul.id ),
Hekili:GetSpellLinkWithTexture( spec.abilities.raze.id ), Hekili:GetSpellLinkWithTexture( spec.talents.layered_mane[2] ), Hekili:GetSpellLinkWithTexture( spec.talents.reinforced_fur[2] ) ),
type = "toggle",
width = "full",
} )
--[[ spec:RegisterSetting( "mangle_more", false, {
name = "Use |T132135:0|t Mangle More in Multi-Target",
desc = "If checked, the default priority will recommend |T132135:0|t Mangle more often in |cFFFFD100multi-target|r scenarios.\n\nThis will generate roughly 15% more Rage and allow for more mitigation (or |T132136:0|t Maul) than otherwise, " ..
"funnel slightly more damage into your primary target, but will |T134296:0|t Swipe less often, dealing less damage/threat to your secondary targets.",
type = "toggle",
width = "full",
} ) ]]
spec:RegisterSetting( "vigil_damage", 50, {
name = strformat( "%s Damage Threshold", Hekili:GetSpellLinkWithTexture( class.specs[ 102 ].abilities.natures_vigil.id ) ),
desc = strformat( "If set below 100%%, %s may only be recommended if your health has dropped below the specified percentage.\n\n"
.. "By default, |W%s|w also requires the |cFFFFD100Defensives|r toggle to be active.", class.specs[ 102 ].abilities.natures_vigil.name, class.specs[ 102 ].abilities.natures_vigil.name ),
type = "range",
min = 1,
max = 100,
step = 1,
width = "full"
} )
spec:RegisterSetting( "ironfur_damage_threshold", 5, {
name = strformat( "%s Damage Threshold", Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ) ),
desc = strformat( "If set above zero, %s will not be recommended for mitigation purposes unless you've taken this much damage in the past 5 seconds (as a percentage "
.. "of your total health).\n\n"
.. "This value is halved when playing solo.\n\n"
.. "Taking %s and %s will result in |W%s|w recommendations for offensive purposes.", Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ),
Hekili:GetSpellLinkWithTexture( spec.talents.thorns_of_iron[2] ), Hekili:GetSpellLinkWithTexture( spec.talents.reinforced_fur[2] ), spec.abilities.ironfur.name ),
type = "range",
min = 0,
max = 200,
step = 0.1,
width = "full"
} )
--[[ spec:RegisterSetting( "shift_for_convoke", false, {
name = "|T3636839:0|t Powershift for Convoke the Spirits",
desc = "If checked, the addon will recommend swapping to Cat Form before using |T3636839:0|t Convoke the Spirits.\n\n" ..
"This is a DPS gain unless you die horribly.",
type = "toggle",
width = "full"
} ) ]]
spec:RegisterSetting( "catweave_bear", false, {
name = strformat( "Weave %s and %s", Hekili:GetSpellLinkWithTexture( spec.abilities.cat_form.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.bear_form.id ) ),
desc = strformat( "If checked, shifting between %s and %s may be recommended based on whether you're actively tanking and other conditions. These swaps may occur "
.. "very frequently.\n\n"
.. "If unchecked, |W%s|w and |W%s|w abilities will be recommended based on your selected form, but swapping between forms will not be recommended.",
Hekili:GetSpellLinkWithTexture( spec.abilities.cat_form.id ), Hekili:GetSpellLinkWithTexture( spec.abilities.bear_form.id ),
spec.abilities.cat_form.name, spec.abilities.bear_form.name ),
type = "toggle",
width = "full",
} )
--[[ Retired 2023-02-21
spec:RegisterSetting( "owlweave_bear", false, {
name = "|T136036:0|t Attempt Owlweaving (Experimental)",
desc = "If checked, the addon will use the experimental |cFFFFD100owlweave|r priority included in the default priority pack.",
type = "toggle",
width = "full"
} ) ]]
spec:RegisterPack( "Guardian", 20231111, [[Hekili:nVXAVTnoYFlEpav7ETUsor5XEXg42EpqlU7WHn7(vlRitBZnYs60JKMcd9B)MHKIIsIuwonz3wu0MyoCEX5fhoEPZYFz5TR9Zjl)pZSNDMd8NP2xE2L2xT828NsilVnXp4E)TWpe5Vh(3)zHF6AQFeUWtHX(RreKfxKgalUlppj7h)Wh2sZ3vC30G49FiJUVi0pNghfK6Vjh)9GpS827kOH5FkA5D6P(LlV1ViFxC6YBVLU)JaMPRxt4GtYcwElc(7DCG)(JLRkx9ja7K9KOC)WYvfjikNw(5YplbZ2eyLR2KgVVC1Ts(8JiF2y32xY29)OinFhjTCLJ90zv7pRjKUmi)V(5b74WvVS9LV35CoIOFPCLF5QFzxQFgaxqC0Aks6Ma70cxotD7kC2x8(zCS(xx)Bfz5LR(3(rBdjF4N9)kiC0OYvjP04uA(tkBY992xj20AGpOOuDMD5Qhj(jnydKama)zYd0mAobaNUXdp(GFYpc(Na)CyBpq8UJ4N(xkxLsYYJtra3tZYOrBXFiNULPCR5gqXhdu9o62Ti1xt2qIYOpa88h)BGsTsn9anGgxK5f8uqiSgCYbhFar3rcUxHpN9(zCv)VY0pRfy)nv86BWTakgsgiKG1jGjGPVh(T84YvzfjjXPaAHZ3Yv)WVMrq1yrOqcRvLFknoAtbG4Fcr6puUkoP15gWi8ZnyBXf50isTLgnkiSyntJizgK8)WhfQqjcZMU82qAwEgZ9KSb4LC4h)pm3vsK)DHK1l)jWjjaHgCaVVim07oWAI7GKst4l83)cjOGPpipqsbLEoDpriNWMrDef4c)h8PHiwb6cBoNKs9xE7i44PyZMPjPXpgoTizzo4NICGKSXXaMu5iaIZmWJ5P0O7j5oW2cJZv(DypN3)EM1ApZW94AypR)n)0IIiVeAyOFQx8gpGh9iHRjPEBczbXQfX1X5t3hdhQ0uY0CAW9WPtvOUJJiGlUOfxuJ6XLRgxzWoDh4BKxHIhbBNPI9uUYsOL7csrs5QjLRoCGHPXc4UJKMrsVN5UXabxNTcyF5NgX8Z82kItJiSinloOcBwmmbhTRtlORN2W7LTQCj4qxDPj8)wROtIz)pOeU0OsGXxan8a3X9mwWYmXrbzeQYIUN5KyzMjhlGKPCZrZqpWv1li0)XAnRuX0caihGpncm7xaXvXGQs1YauJRJFmQ(qRXHHCPG44q8xMMZIWZxvLQ2nbBplKTgiAyEwV88YvZueV26xsejD7tm0mZvbo9wyn3W12noJtb7F(p7HXJ4rL84(hvNkOfWvgTagj1uGpKGlRXV8trKCTbp6aFi4MjUOo3cIchBd4OpbbzcyZWhMKsGIwUZxBW2yGVZi5148bFqcHvXFkSa(Vk7rOWLOmurtH8fn80fqKsOrGuhqw7bPtQGGHrbpvL4sgZ9KyKrQXEEUSJm4dqlir22mWoTaoiIE6r)Nu5v2hl522X)7jFIua27d(qkgM6YjuJNbftDS5GhDDAqPuBqVkOrNqiOu9ou8r6Wh6YozoKOsavuV0FsLkviCi0VZuEdpdnwZQQZ64Ta(RmMMwxNNfR2L49auER93dxhWZLhMIYliQ6tH4DKSDXHkP1equh96gOuZYvVTC1o)mOYFj3lauNbFnVc66W8DttcYzi6cxfpCYwq)LVRFBWErqe5r)WJz7vRS6bxBaK9vk4pbCfgDvgGYSDrpy(s3(odGBgW1N8nT3)lkMeGJvgG2(TQyhuzfPpqH4hEWPe4UhKN1oxNax1FCBfGD)SjMmYaF2L4CBywO5ETEpH8lTnRKrFezy7w9MOmdEDHIiMPBjqmvOmAV8yV1ucVmIzQLQLs2G(biHgWM4vFGmde2bmw2tjC3KlvJrdUgpHbzGctkGIbAhJ(7b(98QqihJLbfnEDopoDYWJ3EDABWFcEglnsT8QSC)G7zSHBd1wiabAmIv(LnnfCYkxvx)KzSC(qWIZXWYzTvjnrKQkrENNAe1FOiz5JPOxMi)twiHKqAwT5vk(dPqzpHidic1EK8ug8QAhvrwPwC0dX3t4CscfWvwRBhEPk4IQNBbYvQGOumElWUwfSWIiGrbUDFlO6uqyBx8tPKFPgVF4v19ymXjk1GR5cdC)j8qKTdrW(g3WrJEvxeGbilnUWyNRs(YXkde6MutjxCxtA2PP58aVixpUJPj2oaKUMRiPIU6CcfxVs3DqfHiK30BC3iQ84lkvP7)vsZl32jgmSLlAfXP5U4QCnL4nNXituljVGvkKJ5WYVeYTrwrtkgmfKQjYxzx90XCeYXnACIY5)GCd0CKGky3EvW6ow6)GSzZhmOU4OyYXpaBGmtNnito4ShNP3SWCIJVb99rKlDgeV2cS0mRD5ZTV3IMAsRU7JWFqgPZ1UYgsYuj(fzerhkQ5MJ4GCmhqzTXH(FfZ5Z7eGuJi5NRpUV4ZMu6R1ZXCldhgx50mH8aotnKJCqMMsEA2lppDkY7rnY)9qa7Hj0EBEhZnhC8qBJlsUPRjBObu(Dnr(0u)DRfR(cyOgbVRS0G6hvTFkN56IT0UZN1AOtn)43Hs3mZLGZi92y4YHIWiAUvPJJcB245a9e9nxKKe0lNPMOcxJr)ElA8v1(7fRQU(l6yY3rN6vfimR3sM)9tR0Nd03zAmZvA3XthfEJTmyM5kIBAhJbm4AcLw8JUnE7JtjA9Los)cg4fP7MksUKor1rPS)ShPjKArT33FvBQqDrzMZ63J5lsxTrHPswCry157MyCGhA80dgmvB0PoEc3Bep4wFX(0VTRCpY2gg3or7HS5IZ6)kzTTdnN43qhZWcqQrxsr4da4ISin63JkLA2WNZow2g)qejbsZZgLTiBfmIjhvkQy31GG5lRFi0b1OADVcBnz0(ysMdLwHuTVNu1h2FZvz7V7tYL6FpP)(poONH7BqQnhQzeVLRilovTz34B3g7LetJY5ocUDLNEFBngwPj9G0fnRYaaUtxnpEtqn7x0Ly8(qR8c9U21KAdjnMxq0DagKDfDaOw2N8Sesyy1TZMYTYbdN2U2Yfostv77iiBxkznZLbCAap7m8tRM8p7Pa1Eec4IPHwE7VGtOeDpFSS4ZYLyoOEd(Ef)VckBeZYIXXzYVipEpFSVedw10Yp)VyZEfo6EFeoqiPSLFJ2A9auIZHL(fRmNbGg78LjSz9sd3HrgonwJnnGA4nSkMwCKAHn18XllAU6vqt1pQ1uMuhg2ynzDiY1)oqe2S996OKmH6xw(F2Rkrk)8Ny(eiQD5vMGJ8jBsgHLzt4WgAOSYYSPYbU5pp)dvvQ)oCQsMxvU(7yJ0Y8kDP2zzXQIj1phlF(4uREewe0B04Vbko5WbDZmJEgP9SV8o6M5JAKuw)(6KZe34XYjBnwZqXy1UeIdh0mmmCOAnimt0ZBmoh5N2ywp4YxzSw2vgWf0U6pvU6KhLvjTMxpES9OCb(GppRQFc2uwi12(3HZF68Qrw9OqmtlemlTJovPilQBSuvrjF0lrihp(Oh5gR)cmthpwxxbpCyaxMd2V14r6mNgPX6zYKjQcqRXXJRAQWIodhlDu6WHrIPMXshFmEK2iWcPt)qHUWzQlixdq(XBSAP)ISw9naOlSTmm4NWk6g4ZfZNjyzv9bVIWfZCfRP7aUcORTBO814UP(o)QG2E0lfrlRNN)JDMIigDGRC7XF)eyHk4R0jVRXJjm3H7cah0CFeRUtUYcNzODUYiKyaOjwinRVC7nxwfKx)CSW8EEDO85wJ6N0D0pk2zOkrHMahO9Y234kfVUd3cAXPFxN33UCmTRZQfiTdatxbQXGQGI0qAU2IR6IhXOQiJP0RzMMRUPX0T2BVZIkHm6Sw9mQ0zjnYe3YEOXHoTjtzXf2teHn6e7AIfYmlU0To8zpdXbAGpaEuMsPvIMtNydaQkCA6KdmQyk3VLmFDdqbL5vJv9Dj2sxEhMdce5FCZyaZDS0CPTdhAfPy(fsplv4My1PT3ZT7Y04wKogpdEwdrAfkBHJznvxR7EStg3wWDBi4TvmnvFvj01kgZDMOxDz13z5HddkG0zMv6NK0RL)ARQFLyyXt5Ql17O1enkwpXNIvTXfs5CqW9nDTTg17KpO1YAuFMPdt4e4OZqkC4aJVUwVj9RkHpMkSUaPxgTyFYYZs78mqOrtmS0fJKYzG6AnPKowcOzFB0RpEUxxYxkgThIyo(JPBhH4P6ncVzMT(RlHCu34pJm3TibAEPdovjndjv0Fe8h)gEYKSIzDODb)oocYBE(gMFM5mPFZNKpZIpCnu8XFi6zHU4Lvs0zw9hG0166DTmSN3Tu3AZovBGfo2w6EP)oBN9ApsJ2bC)JUHSyFCBg1rx5GvCQUGHTDuMFUUBCGakotm)y3DqLl7g8O(5MR7unf4swV8vUAw(4u8uph7QCKVaEvtb7C16fZ6JiM7JImGKMNdxV5GaH1lw1ST5A7enp1V2VYXDWaEZBrRTQ3Q2UgRSd8bDLIr3wLRa5ZRt5NOauXoJA)Y0wQpj6nU63mnPEV1V)CJTUqndGQMRVEwOaxZ3kM3sfvSFEv3cDT1UF5la3ER34Az4rKvTOvXe(oWDXIQTvDhgNRuByvZEh1jSSv3V0Hlm9Dt1Qr10IOU3C2BzFFu1Xc4bK4lxkYf1FRhV5cxJWZ(UKouW1(1fvvIhcsuB1LM9DPRoLK9uN3w)fY0aM7(TZu64z4BnQiHG63y0gYGTEEzM7Bv)2HcMvb40gCoBKbw()p]] )