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.
2443 lines
105 KiB
2443 lines
105 KiB
-- DruidGuardian.lua
|
|
-- August 2025
|
|
-- Patch 11.2
|
|
|
|
if UnitClassBase( "player" ) ~= "DRUID" then return end
|
|
|
|
local addon, ns = ...
|
|
local Hekili = _G[ addon ]
|
|
local class, state = Hekili.Class, Hekili.State
|
|
local spec = Hekili:NewSpecialization( 104 )
|
|
|
|
---- 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)
|
|
|
|
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 min( 15, 3 * 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
|
|
aessinas_renewal = { 82232, 474678, 1 }, -- When a hit deals more than $s1% of your maximum health, instantly heal for $s2% of your health. This effect cannot occur more than once every $s3 seconds
|
|
astral_influence = { 82210, 197524, 1 }, -- Increases the range of all of your spells by $s1 yards
|
|
circle_of_the_heavens = { 104078, 474541, 1 }, -- Magical damage dealt by your spells increased by $s1%
|
|
circle_of_the_wild = { 104078, 474530, 1 }, -- Physical damage dealt by your abilities increased by $s1%
|
|
cyclone = { 82229, 33786, 1 }, -- Tosses the enemy target into the air, disorienting them but making them invulnerable for up to $s1 sec. Only one target can be affected by your Cyclone at a time
|
|
feline_swiftness = { 82236, 131768, 1 }, -- Increases your movement speed by $s1%
|
|
fluid_form = { 82246, 449193, 1 }, -- Shred, Rake, and Skull Bash can be used in any form and shift you into Cat Form, if necessary. Mangle can be used in any form and shifts you into Bear Form. Wrath and Starfire shift you into Moonkin Form, if known
|
|
forestwalk = { 82243, 400129, 1 }, -- Casting Regrowth increases your movement speed and healing received by $s1% for $s2 sec
|
|
frenzied_regeneration = { 82220, 22842, 1 }, -- Heals you for $s1% health over $s2 sec, and increases healing received by $s3%
|
|
gale_winds = { 104079, 400142, 1 }, -- Increases Typhoon's radius by $s1% and its range by $s2 yds
|
|
grievous_wounds = { 82239, 474526, 1 }, -- Rake, Rip, and Thrash damage increased by $s1%
|
|
heart_of_the_wild = { 82231, 319454, 1 }, -- Abilities not associated with your specialization are substantially empowered for $s1 sec. Balance: Cast time of Balance spells reduced by $s2% and damage increased by $s3%. Feral: Gain $s4 Combo Point every $s5 sec while in Cat Form and Physical damage increased by $s6%. Restoration: Healing increased by $s7%, and mana costs reduced by $s8%
|
|
hibernate = { 82211, 2637, 1 }, -- Forces the enemy target to sleep for up to $s2 sec$s$s3 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 = { 104085, 327993, 1 }, -- Barkskin's duration is increased by $s1 sec
|
|
improved_stampeding_roar = { 82230, 288826, 1 }, -- Cooldown reduced by $s1 sec
|
|
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 $s1 yards for $s2 sec. Damage may cancel the effect
|
|
incessant_tempest = { 104079, 400140, 1 }, -- Reduces the cooldown of Typhoon by $s1 sec
|
|
innervate = { 100175, 29166, 1 }, -- Infuse a friendly healer with energy, allowing them to cast spells without spending mana for $s1 sec
|
|
instincts_of_the_claw = { 104081, 449184, 1 }, -- Ferocious Bite and Maul damage increased by $s1%
|
|
ironfur = { 82227, 192081, 1 }, -- Increases armor by $s1 for $s2 sec
|
|
killer_instinct = { 82225, 108299, 2 }, -- Physical damage and Armor increased by $s1%
|
|
lingering_healing = { 82240, 231040, 1 }, -- Rejuvenation's duration is increased by $s1 sec. Regrowth's duration is increased by $s2 sec when cast on yourself
|
|
lore_of_the_grove = { 104080, 449185, 1 }, -- Moonfire and Sunfire damage increased by $s1%
|
|
lycaras_inspiration = { 92229, 1232897, 1 }, -- You gain a bonus while in each form inspired by the breadth of your Druidic knowledge: No Form: $s1% Magic Damage Cat Form: $s2% Stamina Bear Form: $s3% Movement Speed Moonkin Form: $s4% Area damage taken reduction
|
|
lycaras_teachings = { 82233, 378988, 2 }, -- You gain $s1% 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: $s1 point : $s2 damage, $s3 sec $s4 points: $s5 damage, $s6 sec $s7 points: $s8 damage, $s9 sec $s10 points: $s11 damage, $s12 sec $s13 points: $s14 damage, $s15 sec
|
|
mass_entanglement = { 82207, 102359, 1 }, -- Roots the target and all enemies within $s1 yards in place for $s2 sec. Damage may interrupt the effect. Usable in all shapeshift forms
|
|
matted_fur = { 100177, 385786, 1 }, -- When you use Barkskin or Survival Instincts, absorb $s1 damage for $s2 sec
|
|
mighty_bash = { 82237, 5211, 1 }, -- Invokes the spirit of Ursoc to stun the target for $s1 sec. Usable in all shapeshift forms
|
|
moonkin_form = { 82208, 24858, 1 }, -- Shapeshift into Moonkin Form, increasing the damage of your spells by $s1% and your armor by $s2%, and granting protection from Polymorph effects. The act of shapeshifting frees you from movement impairing effects
|
|
natural_recovery = { 82206, 377796, 1 }, -- Healing you receive is increased by $s1%
|
|
natures_vigil = { 82244, 124974, 1 }, -- For $s1 sec, all single-target damage also heals a nearby friendly target for $s2% of the damage done
|
|
nurturing_instinct = { 82214, 33873, 2 }, -- Magical damage and healing increased by $s1%
|
|
oakskin = { 100176, 449191, 1 }, -- Survival Instincts and Barkskin reduce damage taken by an additional $s1%
|
|
perfectlyhoned_instincts = { 104082, 1213597, 1 }, -- Well-Honed Instincts can trigger up to once every $s1 sec
|
|
primal_fury = { 82224, 159286, 1 }, -- While in Cat Form, 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. Mangle critical strike damage increased by $s1%
|
|
rake = { 82199, 1822, 1 }, -- Rake the target for $s$s3 Bleed damage and an additional $s$s4 Bleed damage over $s5 sec. While stealthed, Rake will also stun the target for $s6 sec and deal $s7% increased damage. Awards $s8 combo point
|
|
rejuvenation = { 82217, 774, 1 }, -- Heals the target for $s1 over $s2 sec
|
|
remove_corruption = { 82241, 2782, 1 }, -- Nullifies corrupting effects on the friendly target, removing all Curse and Poison effects
|
|
renewal = { 82232, 108238, 1 }, -- Instantly heals you for $s1% of maximum health. Usable in all shapeshift forms
|
|
rip = { 82222, 1079, 1 }, -- Finishing move that causes Bleed damage over time. Lasts longer per combo point. $s1 point : $s2 over $s3 sec $s4 points: $s5 over $s6 sec $s7 points: $s8 over $s9 sec $s10 points: $s11 over $s12 sec $s13 points: $s14 over $s15 sec
|
|
skull_bash = { 82242, 106839, 1 }, -- You charge and bash the target's skull, interrupting spellcasting and preventing any spell in that school from being cast for $s1 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 $s1 yards by $s2% for $s3 sec
|
|
starfire = { 91044, 197628, 1 }, -- Call down a burst of energy, causing $s$s3 Arcane damage to the target, and $s$s4 Arcane damage to all other enemies within $s5 yards. Deals reduced damage beyond $s6 targets
|
|
starlight_conduit = { 100223, 451211, 1 }, -- Wrath, Starsurge, and Starfire damage increased by $s1%. Starsurge's cooldown is reduced by $s2 sec and its mana cost is reduced by $s3%
|
|
starsurge = { 82200, 197626, 1 }, -- Launch a surge of stellar energies at the target, dealing $s$s2 Astral damage
|
|
sunfire = { 93714, 93402, 1 }, -- A quick beam of solar light burns the enemy for $s$s3 Nature damage and then an additional $s$s4 Nature damage over $s5 sec
|
|
symbiotic_relationship = { 100173, 474750, 1 }, -- Form a bond with an ally. Your self-healing also heals your bonded ally for $s1% of the amount healed. Your healing to your bonded ally also heals you for $s2% of the amount healed
|
|
thick_hide = { 82228, 16931, 1 }, -- Reduces all damage taken by $s1%
|
|
thrash = { 82223, 106832, 1 }, -- Thrash all nearby enemies, dealing immediate physical damage and periodic bleed damage. Damage varies by shapeshift form
|
|
tiger_dash = { 82198, 252216, 1 }, -- Shift into Cat Form and increase your movement speed by $s1%, reducing gradually over $s2 sec
|
|
typhoon = { 82209, 132469, 1 }, -- Blasts targets within $s1 yards in front of you with a violent Typhoon, knocking them back and reducing their movement speed by $s2% for $s3 sec. Usable in all shapeshift forms
|
|
ursine_vigor = { 100174, 377842, 1 }, -- For $s1 sec after shifting into Bear Form, your health and armor are increased by $s2%
|
|
ursocs_spirit = { 82219, 449182, 1 }, -- Stamina increased by $s1%. Stamina in Bear Form is increased by an additional $s2%
|
|
ursols_vortex = { 82207, 102793, 1 }, -- Conjures a vortex of wind for $s1 sec at the destination, reducing the movement speed of all enemies within $s2 yards by $s3%. 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 $s1%
|
|
wellhoned_instincts = { 82235, 377847, 1 }, -- When you fall below $s1% health, you cast Frenzied Regeneration, up to once every $s2 sec
|
|
wild_charge = { 82198, 102401, 1 }, -- Fly to a nearby ally's position
|
|
wild_growth = { 82205, 48438, 1 }, -- Heals up to $s1 injured allies within $s2 yards of the target for $s3 over $s4 sec. Healing starts high and declines over the duration
|
|
|
|
-- Guardian
|
|
after_the_wildfire = { 82140, 371905, 1 }, -- Every $s1 Rage you spend causes a burst of restorative energy, healing allies within $s2 yds for $s3
|
|
berserk_persistence = { 82144, 50334, 1 }, -- Go berserk for $s1 sec, increasing your haste by $s2%, reducing the cooldown of Frenzied Regeneration by $s3%, Mangle, Thrash, and Growl by $s4%, and reducing the cost of Maul and Ironfur by $s5%
|
|
berserk_ravage = { 82149, 50334, 1 }, -- Go berserk for $s1 sec, increasing your haste by $s2%, reducing the cooldown of Frenzied Regeneration by $s3%, Mangle, Thrash, and Growl by $s4%, and reducing the cost of Maul and Ironfur by $s5%
|
|
berserk_unchecked_aggression = { 82155, 50334, 1 }, -- Go berserk for $s1 sec, increasing your haste by $s2%, reducing the cooldown of Frenzied Regeneration by $s3%, Mangle, Thrash, and Growl by $s4%, and reducing the cost of Maul and Ironfur by $s5%
|
|
blood_frenzy = { 82142, 203962, 1 }, -- Thrash also generates $s1 Rage each time it deals damage, on up to $s2 targets
|
|
brambles = { 82161, 203953, 1 }, -- Sharp brambles protect you, absorbing and reflecting up to $s2 damage from each attack. While Barkskin is active, the brambles also deal $s$s3 Nature damage to all nearby enemies every $s4 sec
|
|
bristling_fur = { 82161, 155835, 1 }, -- Bristle your fur, causing you to generate Rage based on damage taken for $s1 sec
|
|
circle_of_life_and_death = { 82137, 391969, 1 }, -- Your damage over time effects deal their damage in $s1% less time, and your healing over time effects in $s2% less time
|
|
convoke_the_spirits = { 82136, 391528, 1 }, -- Call upon the spirits for an eruption of energy, channeling a rapid flurry of $s1 Druid spells and abilities over $s2 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 $s1%, and to be instant, free, and castable in all forms for $s2 sec. This effect cannot occur more than once every $s3 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 $s1%. Earthwarden may have up to $s2 charges
|
|
elunes_favored = { 82134, 370586, 1 }, -- While in Bear Form, you deal $s1% increased Arcane damage, and are healed for $s2% of all Arcane damage done
|
|
flashing_claws = { 82154, 393427, 2 }, -- Thrash has a $s1% chance to trigger an additional Thrash. Thrash stacks $s2 additional time
|
|
fury_of_nature = { 82138, 370695, 2 }, -- While in Bear Form, you deal $s1% increased Arcane damage
|
|
galactic_guardian = { 82145, 203964, 1 }, -- Your damage has a $s1% chance to trigger a free automatic Moonfire on that target. When this occurs, the next Moonfire you cast generates $s2 Rage, and deals $s3% increased direct damage
|
|
gore = { 82126, 210706, 1 }, -- Thrash, Swipe, Moonfire, and Maul have a $s1% chance to reset the cooldown on Mangle, and to cause it to generate an additional $s2 Rage
|
|
gory_fur = { 82132, 200854, 1 }, -- Mangle has a $s1% chance to reduce the Rage cost of your next Ironfur by $s2%
|
|
guardian_of_elune = { 82140, 155578, 1 }, -- Mangle increases the duration of your next Ironfur by $s1 sec, or the healing of your next Frenzied Regeneration by $s2%
|
|
improved_survival_instincts = { 82128, 328767, 1 }, -- Survival Instincts now has $s1 charges
|
|
incarnation_guardian_of_ursoc = { 82136, 102558, 1 }, -- An improved Bear Form that grants the benefits of Berserk, causes Mangle to hit up to $s1 targets, and increases maximum health by $s2%. Lasts $s3 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 $s1% for $s2 sec
|
|
innate_resolve = { 82160, 377811, 1 }, -- Frenzied Regeneration's healing is increased by up to $s1% based on your missing health. Frenzied Regeneration has $s2 additional charge
|
|
lunar_beam = { 92587, 204066, 1 }, -- Summons a beam of lunar light at your location, increasing your mastery by $s2%, dealing $s$s3 Arcane damage, and healing you for $s4 million over $s5 sec
|
|
mangle = { 82131, 231064, 1 }, -- Mangle deals $s1% additional damage against bleeding targets
|
|
maul = { 82127, 6807, 1 }, -- Maul the target for $s$s2 Physical damage
|
|
moonless_night = { 92586, 400278, 1 }, -- Your direct damage melee abilities against enemies afflicted by Moonfire cause them to burn for an additional $s1% Arcane damage
|
|
pulverize = { 82153, 80313, 1 }, -- A devastating blow that consumes $s2 stacks of your Thrash on the target to deal $s$s3 Physical damage and reduce the damage they deal to you by $s4% for $s5 sec
|
|
rage_of_the_sleeper = { 82141, 200851, 1 }, -- Unleashes the rage of Ursoc for $s2 sec, preventing $s3% of all damage you take, increasing your damage done by $s4%, granting you $s5% leech, and reflecting $s$s6 Nature damage back at your attackers
|
|
raze = { 92588, 400254, 1 }, -- Strike with the might of Ursoc, dealing $s$s2 Physical damage to your target and $s3 to all other enemies in front of you. Damage reduced beyond $s4 targets
|
|
reinforced_fur = { 82139, 393618, 1 }, -- Ironfur increases armor by an additional $s1% and Barkskin reduces damage taken by an additional $s2%
|
|
reinvigoration = { 82157, 372945, 2 }, -- Frenzied Regeneration heals over $s1 additional sec and casts Rejuvenation and Regrowth on you at $s2% effectiveness
|
|
rend_and_tear = { 82152, 204053, 1 }, -- Each stack of Thrash reduces the target's damage to you by $s1% and increases your damage to them by $s2%
|
|
scintillating_moonlight = { 82146, 238049, 2 }, -- Moonfire reduces damage dealt to you by -$s1%
|
|
soul_of_the_forest = { 92226, 158477, 1 }, -- Mangle generates $s1 more Rage and deals $s2% more damage
|
|
survival_instincts = { 82129, 61336, 1 }, -- Reduces all damage you take by $s1% for $s2 sec
|
|
survival_of_the_fittest = { 82143, 203965, 2 }, -- Reduces the cooldowns of Barkskin and Survival Instincts by $s1%
|
|
thorns_of_iron = { 92585, 400222, 1 }, -- When you cast Ironfur, also deal Physical damage equal to $s1% of your armor, split among enemies within $s2 yards. Damage reduced above $s3 applications
|
|
tooth_and_claw = { 82133, 135288, 1 }, -- Autoattacks have a $s1% chance to empower your next cast of Maul or Raze, stacking up to $s2 times. An empowered cast of Maul or Raze deals $s3% increased damage, costs $s4% less rage, and reduces the target's damage to you by $s5% for $s6 sec
|
|
twin_moonfire = { 82147, 372567, 1 }, -- Moonfire deals $s1% increased damage and also hits another nearby enemy within $s2 yds of the target
|
|
untamed_savagery = { 82152, 372943, 1 }, -- Increases the damage and radius of Thrash by $s1%
|
|
ursocs_endurance = { 82130, 393611, 1 }, -- Increases the duration of Barkskin and Ironfur by $s1 sec
|
|
ursocs_fury = { 82151, 377210, 1 }, -- Thrash and Maul grant you an absorb shield for $s1% of the damage dealt for $s2 sec
|
|
ursocs_guidance = { 82135, 393414, 1 }, -- Incarnation: Guardian of Ursoc: Every $s3 Rage you spend reduces the cooldown of Incarnation: Guardian of Ursoc by $s4 sec. Convoke the Spirits: Convoke the Spirits' cooldown is reduced by $s7% and its duration and number of spells cast is reduced by $s8%. Convoke the Spirits has an increased chance to use an exceptional spell or ability
|
|
ursols_warding = { 82148, 471492, 2 }, -- Gain magical damage reduction equal to $s1% of your damage reduction from armor
|
|
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 $s1%. Stacks up to $s2
|
|
vulnerable_flesh = { 82159, 372618, 2 }, -- Maul and Raze have an additional $s1% chance to critically strike
|
|
|
|
-- Druid Of The Claw
|
|
aggravate_wounds = { 94616, 441829, 1 }, -- Every Maul, Raze, Mangle, Thrash, or Swipe you cast extends the duration of your Dreadful Wounds by $s1 sec, up to $s2 additional sec
|
|
bestial_strength = { 94611, 441841, 1 }, -- Maul and Raze damage increased by $s1%
|
|
claw_rampage = { 94613, 441835, 1 }, -- During Berserk, Mangle, Swipe, and Thrash have a $s1% chance to make your next Maul become Ravage
|
|
dreadful_wound = { 94620, 441809, 1 }, -- Ravage also inflicts a Bleed that causes $s1 damage over $s2 sec and saps its victims' strength, reducing damage they deal to you by $s3%. Dreadful Wound is not affected by Circle of Life and Death
|
|
empowered_shapeshifting = { 94612, 441689, 1 }, -- Frenzied Regeneration can be cast in Cat Form for $s2 Energy. Bear Form reduces magic damage you take by $s3%. Shred and Swipe damage increased by $s4%$s$s5 Mangle damage increased by $s6%
|
|
fount_of_strength = { 94618, 441675, 1 }, -- Your maximum Energy and Rage are increased by $s1. Frenzied Regeneration also increases your maximum health by $s2%
|
|
killing_strikes = { 94619, 441824, 1 }, -- Ravage increases your Agility by $s1% and the armor granted by Ironfur by $s2% for $s3 sec. Your first Mangle after entering combat makes your next Maul become Ravage
|
|
packs_endurance = { 94615, 441844, 1 }, -- Stampeding Roar's duration is increased by $s1%
|
|
ravage = { 94609, 441583, 1 }, -- Your auto-attacks have a chance to make your next Maul become Ravage. Ravage Slash through your target in a wide arc, dealing $s3 million Physical damage to your target and $s4 to all other enemies in front of you
|
|
ruthless_aggression = { 94619, 441814, 1 }, -- Ravage increases your auto-attack speed by $s1% for $s2 sec
|
|
strike_for_the_heart = { 94614, 441845, 1 }, -- Shred, Swipe, and Mangle's critical strike chance and critical strike damage are increased by $s1%. Mangle heals you for $s2% of maximum health
|
|
tear_down_the_mighty = { 94614, 441846, 1 }, -- The cooldown of Pulverize is reduced by $s1 sec
|
|
wildpower_surge = { 94612, 441691, 1 }, -- Mangle grants Feline Potential. When you have $s1 stacks, the next time you transform into Cat Form, gain $s2 combo points and your next Ferocious Bite or Rip deals $s3% increased damage for its full duration
|
|
wildshape_mastery = { 94610, 441678, 1 }, -- Ironfur and Frenzied Regeneration persist in Cat Form. When transforming from Bear to Cat Form, you retain $s1% of your Bear Form armor and health for $s2 sec. For $s3 sec after entering Bear Form, you heal for $s4% of damage taken over $s5 sec
|
|
|
|
-- Elunes Chosen
|
|
arcane_affinity = { 94586, 429540, 1 }, -- All Arcane damage from your spells and abilities is increased by $s1%
|
|
astral_insight = { 94585, 429536, 1 }, -- Incarnation: Guardian of Ursoc increases Arcane damage from spells and abilities by $s1% while active. Increases the duration and number of spells cast by Convoke the Spirits by $s2%
|
|
atmospheric_exposure = { 94607, 429532, 1 }, -- Enemies damaged by Lunar Beam or Fury of Elune take $s1% increased damage from you for $s2 sec
|
|
boundless_moonlight = { 94608, 424058, 1 }, -- Lunar Beam Lunar Beam now causes you to leech life equal to $s4% of all damage dealt to enemies within the beam. Fury of Elune Fury of Elune now ends with a flash of energy, blasting nearby enemies for $s$s7 Astral damage
|
|
elunes_grace = { 94597, 443046, 1 }, -- Using Wild Charge while in Bear Form or Moonkin Form incurs a $s1 sec shorter cooldown
|
|
glistening_fur = { 94594, 429533, 1 }, -- Bear Form and Moonkin Form reduce Arcane damage taken by $s1% and all other magic damage taken by $s2%
|
|
lunar_amplification = { 94596, 429529, 1 }, -- Each non-Arcane damaging ability you use increases the damage of your next Arcane damaging ability by $s1%, stacking up to $s2 times
|
|
lunar_calling = { 94590, 429523, 1 }, -- Thrash now deals Arcane damage and its damage is increased by $s1%
|
|
lunar_insight = { 94588, 429530, 1 }, -- Moonfire deals $s1% additional damage
|
|
lunation = { 94586, 429539, 1 }, -- Your Arcane abilities reduce the cooldown of Lunar Beam by $s1 sec
|
|
moon_guardian = { 94598, 429520, 1 }, -- Free automatic Moonfires from Galactic Guardian generate $s1 Rage
|
|
moondust = { 94597, 429538, 1 }, -- Enemies affected by Moonfire are slowed by $s1%
|
|
stellar_command = { 94590, 429668, 1 }, -- Increases the damage of Lunar Beam by $s1% and Fury of Elune by $s2%
|
|
the_eternal_moon = { 94587, 424113, 1 }, -- Further increases the power of Boundless Moonlight. Lunar Beam Lunar Beam increases Mastery by an additional $s3%, deals $s4% increased damage, and lasts $s5 sec longer. Fury of Elune The flash of energy now generates $s8 Rage and its damage is increased by $s9%
|
|
the_light_of_elune = { 94585, 428655, 1 }, -- Moonfire damage has a chance to call down a Fury of Elune to follow your target for $s2 sec. Fury of Elune Calls down a beam of pure celestial energy, dealing $s$s5 Astral damage over $s6 sec within its area. Generates $s7 Rage over its duration
|
|
} )
|
|
|
|
-- PvP Talents
|
|
spec:RegisterPvpTalents( {
|
|
alpha_challenge = 842, -- (207017) You focus the assault on this target, increasing their damage taken by $s1% for $s2 sec. Each unique player that attacks the target increases the damage taken by an additional $s3%, stacking up to $s4 times. Your melee attacks refresh the duration of Focused Assault
|
|
charging_bash = 194, -- (228431)
|
|
demoralizing_roar = 52, -- (201664) Demoralizes all enemies within $s1 yards, reducing the damage they do by $s2% for $s3 sec
|
|
den_mother = 51, -- (236180)
|
|
emerald_slumber = 197, -- (329042) Embrace the Emerald Dream, causing you to enter a deep slumber for $s2 sec. While sleeping, all other cooldowns recover $s3% faster, and allies within $s4 yds are healed for $s5 every $s6 sec$s$s7 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 $s1 sec, reducing damage taken by $s2% from enemies outside the grove
|
|
malornes_swiftness = 1237, -- (236147)
|
|
master_shapeshifter = 49, -- (236144)
|
|
overrun = 196, -- (202246) Charge to an enemy, stunning them for $s1 sec and knocking back their allies within $s2 yards
|
|
tireless_pursuit = 5648, -- (377801)
|
|
} )
|
|
|
|
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,
|
|
},
|
|
-- Armor increased by $w4%.; Stamina increased by $1178s2%.; Immune to Polymorph effects.$?$w13<0[; Arcane damage taken reduced by $w14% and all other magic damage taken reduced by $w13%.][]
|
|
barkskin = {
|
|
id = 22812,
|
|
duration = function() return ( talent.improved_barkskin.enabled and 12 or 8 ) + ( talent.ursocs_endurance.enabled and 2 or 0 ) 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
|
|
},
|
|
-- Generate $343216s1 combo $lpoint:points; every $t1 sec. Combo point generating abilities generate $s2 additional combo $lpoint:points;. Finishing moves restore up to $405189u combo points generated over the cap. All attack and ability damage is increased by $s3%.
|
|
berserk = {
|
|
id = 106951,
|
|
duration = 15,
|
|
max_stack = 1,
|
|
copy = 50334
|
|
},
|
|
-- 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 = function() return 4 * ( talent.astral_insight.enabled and 1.25 or 1 ) * ( talent.ursocs_guidance.enabled and 0.75 or 1 ) end,
|
|
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 = 5,
|
|
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
|
|
},
|
|
feline_potential = {
|
|
id = 441702,
|
|
duration = 15,
|
|
max_stack = 1
|
|
},
|
|
feline_potential_counter = {
|
|
id = 441701,
|
|
duration = 3600,
|
|
max_stack = 6
|
|
},
|
|
-- 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,
|
|
},
|
|
-- Increases speed and all healing taken by $w1%.
|
|
forestwalk = {
|
|
id = 400126,
|
|
duration = 6.0,
|
|
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 = function() return 3 + ( talent.reinvigoration.rank) end,
|
|
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
|
|
},
|
|
-- 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
|
|
},
|
|
-- 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%.$?a429536[; Arcane damage increased by $w14%.][]$?$w7>0[; Immune to effects that cause loss of control of your character.][]
|
|
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 7 + ( buff.guardian_of_elune.up and 3 or 0 ) + ( talent.ursocs_endurance.enabled and 2 or 0 ) end,
|
|
max_stack = 20,
|
|
},
|
|
-- Agility increased by $w1% and armor granted by Ironfur increased by $w2%.
|
|
killing_strikes = {
|
|
id = 441825,
|
|
duration = 8.0,
|
|
max_stack = 1,
|
|
},
|
|
-- The damage of your next Arcane ability is increased by $w1%.
|
|
lunar_amplification = {
|
|
id = 431250,
|
|
duration = 45.0,
|
|
max_stack = 1,
|
|
},
|
|
-- 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 = function() return talent.the_eternal_moon.enabled and 11.5 or 8.5 end,
|
|
max_stack = 1,
|
|
},
|
|
-- Talent: Rooted.
|
|
-- https://wowhead.com/beta/spell=102359
|
|
mass_entanglement = {
|
|
id = 102359,
|
|
duration = 10,
|
|
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 $w2 Arcane damage every $t2 seconds.$?$w8<0[; Movement slowed by $w8%.][]
|
|
moonfire = {
|
|
id = 164812,
|
|
duration = function () return mod_circle_dot( 18 ) * haste end,
|
|
tick_time = function () return mod_circle_dot( 2 ) * haste end,
|
|
type = "Magic",
|
|
max_stack = 1,
|
|
copy = 155625
|
|
},
|
|
-- Spell damage increased by $s9%.; Immune to Polymorph effects.$?$w3>0[; Armor increased by $w3%.][]$?$w12<0[; Arcane damage taken reduced by $w13% and all other magic damage taken reduced by $w12%.][]
|
|
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,
|
|
duration = 8,
|
|
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 = 8,
|
|
max_stack = 1
|
|
},
|
|
ravage = {
|
|
id = 441602,
|
|
duration = 20,
|
|
max_stack = 1
|
|
},
|
|
-- fake buff for killing strikes "next mangle after entering combat grants ravage"
|
|
ravage_upon_combat = {
|
|
duration = 3600,
|
|
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
|
|
},
|
|
-- Auto-attack speed increased by $w1%.
|
|
ruthless_aggression = {
|
|
id = 441817,
|
|
duration = 6.0,
|
|
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 = function() return 8 * ( 1.25 * talent.packs_endurance.rank ) end,
|
|
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.flashing_claws.rank end,
|
|
copy = "thrash"
|
|
},
|
|
-- 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
|
|
},
|
|
-- You retain $w2% increased armor and $w3% increased Stamina from Bear Form.
|
|
wildshape_mastery = {
|
|
id = 441685,
|
|
duration = 6.0,
|
|
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
|
|
if talent.perfectlyhoned_instincts.enabled then return 60 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,
|
|
}
|
|
} )
|
|
|
|
spec:RegisterGear({
|
|
-- The War Within
|
|
tww3 = {
|
|
items = { 237685, 237680, 237683, 237681, 237682 },
|
|
auras = {
|
|
-- Elunes Chosen
|
|
gathering_moonlight = {
|
|
id = 1236989,
|
|
duration = 20,
|
|
max_stack = 15
|
|
},
|
|
moonlight_suffusion = {
|
|
id = 1236990,
|
|
duration = 12,
|
|
max_stack = 15
|
|
},
|
|
-- Druid of the Claw
|
|
-- Guardian
|
|
ravage_rampage = {
|
|
id = 1236671,
|
|
duration = 4,
|
|
max_stack = 1
|
|
},
|
|
preparing_to_strike = {
|
|
id = 1236342,
|
|
duration = 4,
|
|
max_stack = 1
|
|
},
|
|
}
|
|
},
|
|
tww2 = {
|
|
items = { 229310, 229308, 229306, 229307, 229305 },
|
|
auras = {
|
|
luck_of_the_draw = {
|
|
id = 1218553,
|
|
duration = 8,
|
|
max_stack = 1
|
|
},
|
|
stacked_deck = {
|
|
id = 1218537,
|
|
duration = 20,
|
|
max_stack = 10
|
|
}
|
|
}
|
|
},
|
|
-- Dragonflight
|
|
tier31 = {
|
|
items = { 207252, 207253, 207254, 207255, 207257 },
|
|
auras = {
|
|
dream_thorns = {
|
|
id = 425407,
|
|
duration = 45,
|
|
max_stack = 1,
|
|
copy = "blazing_thorns"
|
|
}
|
|
}
|
|
},
|
|
tier30 = {
|
|
items = { 202518, 202516, 202515, 202514, 202513, 217193, 217195, 217191, 217192, 217194 },
|
|
auras = {
|
|
furious_regeneration = {
|
|
id = 408504,
|
|
duration = 8,
|
|
max_stack = 1
|
|
},
|
|
indomitable_guardian = {
|
|
id = 408522,
|
|
duration = 12,
|
|
max_stack = 5
|
|
}
|
|
}
|
|
},
|
|
tier29 = {
|
|
items = { 200351, 200353, 200354, 200355, 200356 },
|
|
auras = {
|
|
bloody_healing = {
|
|
id = 394504,
|
|
duration = 6,
|
|
max_stack = 1
|
|
}
|
|
}
|
|
},
|
|
-- Legacy
|
|
tier21 = { items = { 152127, 152129, 152125, 152124, 152126, 152128 } },
|
|
tier20 = { items = { 147136, 147138, 147134, 147133, 147135, 147137 } },
|
|
tier19 = { items = { 138330, 138336, 138366, 138324, 138327, 138333 } },
|
|
class = { items = { 139726, 139728, 139723, 139730, 139725, 139729, 139727, 139724 } },
|
|
ailuro_pouncers = { items = { 137024 } },
|
|
behemoth_headdress = { items = { 151801 } },
|
|
chatoyant_signet = { items = { 137040 } },
|
|
dual_determination = { items = { 137041 } },
|
|
ekowraith_creator_of_worlds = { items = { 137015 } },
|
|
elizes_everlasting_encasement = { items = { 137067 } },
|
|
fiery_red_maimers = { items = { 144354 } },
|
|
lady_and_the_child = { items = { 144295 } },
|
|
luffa_wrappings = { items = { 137056 } },
|
|
oakhearts_puny_quods = {
|
|
items = { 144432 },
|
|
auras = {
|
|
oakhearts_puny_quods = {
|
|
id = 236479,
|
|
duration = 3,
|
|
max_stack = 1
|
|
}
|
|
}
|
|
},
|
|
skysecs_hold = {
|
|
items = { 137025 },
|
|
auras = {
|
|
skysecs_hold = {
|
|
id = 208218,
|
|
duration = 3,
|
|
max_stack = 1
|
|
}
|
|
}
|
|
},
|
|
the_wildshapers_clutch = { items = { 137094 } },
|
|
soul_of_the_archdruid = { items = { 151636 } }
|
|
} )
|
|
|
|
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
|
|
|
|
if buff.bear_form.up and form == "cat_form" and talent.wildshape_mastery.enabled then
|
|
applyBuff( "wildshape_mastery" )
|
|
end
|
|
|
|
removeBuff( "cat_form" )
|
|
removeBuff( "bear_form" )
|
|
removeBuff( "travel_form" )
|
|
removeBuff( "moonkin_form" )
|
|
removeBuff( "travel_form" )
|
|
removeBuff( "aquatic_form" )
|
|
removeBuff( "stag_form" )
|
|
applyBuff( form )
|
|
|
|
if form == "cat_form" and buff.feline_potential_counter.stack_pct == 100 then
|
|
applyBuff( "feline_potential" )
|
|
removeBuff( "feline_potential_counter" )
|
|
gain( 5, "combo_points" )
|
|
end
|
|
end )
|
|
|
|
spec:RegisterStateExpr( "ironfur_damage_threshold", function ()
|
|
return ( settings.ironfur_damage_threshold or 0 ) / 100 * health.max * ( solo and 0.5 or 1 )
|
|
end )
|
|
|
|
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 )
|
|
|
|
-- local ursocRageSpend
|
|
|
|
spec:RegisterHook( "runHandler_startCombat", function()
|
|
if talent.killing_strikes.enabled then applyBuff( "ravage_upon_combat") end
|
|
-- ursocRageSpend = 0 -- reset upon entering combat
|
|
end )
|
|
|
|
spec:RegisterHook( "spend", function( amt, resource )
|
|
if resource == "rage" and amt > 0 then
|
|
if talent.after_the_wildfire.enabled and buff.after_the_wildfire.up 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
|
|
--[[ To be revisited using warrior Anger Management as an example
|
|
if talent.ursocs_guidance.enabled then
|
|
ursocRageSpend = ursocRageSpend + amt
|
|
if ursocRageSpend >= 25 then
|
|
reduceCooldown( "incarnation", floor( ursocRageSpend / 25 ) )
|
|
ursocRageSpend = ursocRageSpend % 25
|
|
end
|
|
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.12 * 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 role.tank then
|
|
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
|
|
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" )
|
|
if talent.berserk_persistence.enabled then setCooldown( "frenzied_regeneration", 0 ) end
|
|
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 () if talent.innate_resolve.enabled then return 2 end end,
|
|
cooldown = function () return 36 * ( buff.berserk.up and talent.berserk_persistence.enabled and 0 or 1 ) * ( 1 - 0.1 * talent.reinvigoration.rank ) * haste end,
|
|
recharge = function () if talent.innate_resolve.enabled then return 36 * ( buff.berserk.up and talent.berserk_persistence.enabled and 0 or 1 ) * ( 1 - 0.1 * talent.reinvigoration.rank ) end end, gcd = "spell",
|
|
school = "physical",
|
|
|
|
spend = function()
|
|
if talent.empowered_shapeshifting.enabled and buff.cat_form.up then return 40, "energy" end
|
|
return 10, "rage"
|
|
end,
|
|
|
|
talent = "frenzied_regeneration",
|
|
startsCombat = false,
|
|
|
|
toggle = "defensives",
|
|
defensive = true,
|
|
|
|
form = function()
|
|
if talent.empowered_shapeshifting.enabled and buff.cat_form.up then return "cat_form" end
|
|
return "bear_form"
|
|
end,
|
|
nobuff = "frenzied_regeneration",
|
|
|
|
handler = function ()
|
|
applyBuff( "frenzied_regeneration" )
|
|
gain( health.max * 0.08, "health" )
|
|
if talent.reinvigoration.enabled then
|
|
applyBuff( "rejuvenation" )
|
|
applyBuff( "regrowth" )
|
|
end
|
|
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 ()
|
|
applyDebuff( "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,
|
|
},
|
|
|
|
-- An improved Bear Form that grants the benefits of Berserk, causes Mangle to hit up to $s12 targets, $?a429536[increases Arcane damage by $s14%, ][]and increases maximum health by $s13%.$?a339062[; Grants immunity to effects that cause loss of control of your character.][]; Lasts $d. You may freely shapeshift in and out of this improved Bear Form for its duration.
|
|
incarnation = {
|
|
id = 102558,
|
|
cast = 0,
|
|
cooldown = 180,
|
|
gcd = "off",
|
|
|
|
toggle = "cooldowns",
|
|
|
|
startsCombat = false,
|
|
talent = "incarnation",
|
|
|
|
handler = function ()
|
|
applyBuff( "incarnation" )
|
|
if talent.berserk_persistence.enabled then setCooldown( "frenzied_regeneration", 0 ) end
|
|
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",
|
|
icd = function() return 7 / ( max_ironfur or 1 ) end,
|
|
school = "nature",
|
|
|
|
spend = function () return ( buff.berserk_bear.up and talent.berserk_persistence.enabled and 20 or 40 ) * ( buff.gory_fur.up and 0.75 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,
|
|
|
|
handler = function ()
|
|
addStack( "ironfur", 1 )
|
|
removeBuff( "gory_fur" )
|
|
removeBuff( "guardian_of_elune" )
|
|
if set_bonus.tier30_4pc > 0 then addStack( "indomitable_guardian" ) end
|
|
if state.spec.restoration and talent.master_shapeshifter.enabled then gain( 43750, "mana" ) end
|
|
end,
|
|
},
|
|
|
|
-- Summons a beam of lunar light at your location, increasing your mastery by ${$s2*$mas}%, dealing ${$414613s1*$s1} Arcane damage, and healing you for ${$204069s1*$s1} over $m1 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 = 30,
|
|
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 = function()
|
|
if talent.fluid_form.enabled then return end
|
|
return "bear_form"
|
|
end,
|
|
|
|
handler = function ()
|
|
|
|
-- Regular talents
|
|
if talent.fluid_form.enabled and buff.bear_form.down then shift( "bear_form" ) end
|
|
if talent.infected_wounds.enabled then applyDebuff( "target", "infected_wounds" ) end
|
|
if talent.vicious_cycle.enabled then
|
|
removeBuff( "vicious_cycle_mangle" )
|
|
addStack( "vicious_cycle_maul" )
|
|
end
|
|
if talent.guardian_of_elune.enabled then applyBuff( "guardian_of_elune" ) end
|
|
|
|
if buff.gore.up then
|
|
removeBuff( "gore" )
|
|
if set_bonus.tier29_4pc > 0 then applyBuff( "bloody_healing" ) end
|
|
end
|
|
|
|
-- Hero talents
|
|
if talent.wildpower_surge.enabled then addStack( "feline_potential_counter" ) end
|
|
if talent.killing_strikes.enabled and buff.ravage_upon_combat.up then
|
|
applyBuff( "ravage" )
|
|
removeBuff( "ravage_upon_combat" )
|
|
end
|
|
if talent.strike_for_the_heart.enabled then gain( 0.05 * health.max, "health" ) end
|
|
-- Legacy / PvP
|
|
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",
|
|
notalent = "raze",
|
|
startsCombat = true,
|
|
texture = function() return buff.ravage.up and spec.abilities.ravage_maul.texture or 132136 end,
|
|
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 ()
|
|
|
|
-- Interactions for Maul, Raze, and Ravage; the latter two replace Maul.
|
|
if talent.vicious_cycle.enabled then
|
|
removeBuff( "vicious_cycle_maul" )
|
|
addStack( "vicious_cycle_mangle" )
|
|
end
|
|
if talent.infected_wounds.enabled then applyDebuff( "target", "infected_wounds" ) end
|
|
if talent.ursocs_fury.enabled then applyBuff( "ursocs_fury" ) end
|
|
if buff.tooth_and_claw.up then
|
|
removeStack( "tooth_and_claw" )
|
|
applyDebuff( "target", "tooth_and_claw_debuff" )
|
|
end
|
|
|
|
-- Ravage specific interactions
|
|
if talent.ravage.enabled then spec.abilities.ravage_maul.handler() end
|
|
|
|
-- Legacy / PvP
|
|
if conduit.savage_combatant.enabled then removeBuff( "savage_combatant" ) end
|
|
if set_bonus.tier30_4pc > 0 then addStack( "indomitable_guardian" ) end
|
|
if pvptalent.sharpened_claws.enabled or essence.conflict_and_strife.major then applyBuff( "sharpened_claws" ) end
|
|
|
|
end,
|
|
|
|
bind = { "raze" },
|
|
},
|
|
|
|
-- 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
|
|
|
|
if talent.lunation.enabled then reduceCooldown( "lunar_beam", 3 ) 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",
|
|
noform = "moonkin_form",
|
|
startsCombat = false,
|
|
|
|
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 = function() return 45 - 10 * talent.tear_down_the_mighty.rank end,
|
|
gcd = "spell",
|
|
school = "physical",
|
|
|
|
talent = "pulverize",
|
|
form = "bear_form",
|
|
startsCombat = true,
|
|
|
|
cycle = "thrash_bear",
|
|
cycle_to = true,
|
|
|
|
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
|
|
applyDebuff( "target", "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,
|
|
},
|
|
|
|
ravage_maul = {
|
|
id = 441605,
|
|
known = false, -- "ravage_maul" is not actually a usable action
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
school = "physical",
|
|
|
|
spend = function() return spec.abilities.maul.spend end,
|
|
spendType = "rage",
|
|
|
|
talent = "ravage",
|
|
form = "bear_form",
|
|
startsCombat = true,
|
|
buff = "ravage",
|
|
texture = 5927623,
|
|
|
|
usable = function() return spec.abilities.maul.usable end,
|
|
|
|
handler = function()
|
|
if buff.ravage.up then
|
|
removeBuff( "ravage" )
|
|
if talent.dreadful_wound.enabled then applyDebuff( "target", "dreadful_wound" ) end
|
|
if talent.ruthless_aggression.enabled then applyBuff( "ruthless_aggression" ) end
|
|
if talent.killing_strikes.enabled then applyBuff( "killing_strikes" ) end
|
|
elseif talent.aggravate_wounds.enabled and debuff.dreadful_wound.up then
|
|
-- XXX Dreadful Wounds can only be extended for a maximum of 8 seconds total.
|
|
debuff.dreadful_wound.expires = debuff.dreadful_wound.expires + 0.6
|
|
end
|
|
end,
|
|
},
|
|
|
|
-- Talent: Maul the target for $s2 Physical damage.
|
|
raze = {
|
|
id = 400254,
|
|
cast = 0,
|
|
cooldown = 0,
|
|
gcd = "spell",
|
|
school = "physical",
|
|
|
|
spend = function() return spec.abilities.maul.spend end,
|
|
spendType = "rage",
|
|
|
|
talent = "raze",
|
|
form = "bear_form",
|
|
startsCombat = true,
|
|
texture = function() return buff.ravage.up and spec.abilities.ravage_maul.texture or 132131 end,
|
|
|
|
usable = function() return spec.abilities.maul.usable end,
|
|
|
|
handler = function() return spec.abilities.maul.handler() end,
|
|
|
|
bind = { "maul" },
|
|
},
|
|
|
|
-- 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.2 * 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,
|
|
form = function ()
|
|
if talent.fluid_form.enabled then return end
|
|
return buff.bear_form.up and "bear_form" or "cat_form" end,
|
|
toggle = "interrupts",
|
|
|
|
debuff = "casting",
|
|
readyTime = state.timeToInterrupt,
|
|
|
|
handler = function ()
|
|
if talent.fluid_form.enabled and buff.bear_form.down and buff.cat_form.down then shift( "cat_form" ) end
|
|
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,
|
|
},
|
|
|
|
starsurge = {
|
|
id = 197626,
|
|
cast = 0,
|
|
cooldown = function() return 10 - ( 4 * talent.starlight_conduit.rank ) end,
|
|
gcd = "spell",
|
|
|
|
spend = function () return ( talent.starlight_conduit.enabled and 0.003 or 0.006 ) end,
|
|
spendType = "mana",
|
|
|
|
startsCombat = true,
|
|
texture = 135730,
|
|
talent = "starsurge",
|
|
|
|
handler = function ()
|
|
gain( 0.3 * health.max, "health" )
|
|
if talent.master_shapeshifter.enabled then gain( 43750, "mana" ) end
|
|
if talent.call_of_the_elder_druid.enabled and debuff.oath_of_the_elder_druid.down then
|
|
applyBuff( "heart_of_the_wild", 15 )
|
|
applyDebuff( "player", "oath_of_the_elder_druid" )
|
|
end
|
|
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 ) * ( 1 - 0.12 * talent.survival_of_the_fittest.rank ) * 180 end,
|
|
recharge = function () return talent.improved_survival_instincts.enabled and ( ( essence.vision_of_perfection.enabled and 0.87 or 1 ) * ( 1 - 0.12 * talent.survival_of_the_fittest.rank ) * 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",
|
|
form = "bear_form",
|
|
|
|
startsCombat = true,
|
|
|
|
handler = function ()
|
|
if talent.aggravate_wounds.enabled and debuff.dreadful_wound.up then
|
|
debuff.dreadful_wound.expires = debuff.dreadful_wound.expires + 0.6
|
|
end
|
|
end,
|
|
|
|
copy = { "swipe", 213764 },
|
|
bind = { "swipe_bear", "swipe_cat", "swipe" }
|
|
},
|
|
|
|
-- Strikes all nearby enemies, dealing $s1 $?a429523[Arcane][Bleed] damage and an additional $192090o1 $?a429523[Arcane][Bleed] damage over $192090d. When applied from Bear Form, this effect can stack up to $192090u times.; Generates ${$m2/10} Rage.
|
|
thrash_bear = {
|
|
id = 77758,
|
|
known = 106832,
|
|
suffix = "(Bear)",
|
|
cast = 0,
|
|
cooldown = function () return 6 * ( buff.berserk_bear.up and talent.berserk_ravage.enabled and 0.5 or 1 ) * haste end,
|
|
gcd = "spell",
|
|
school = function() return talent.lunar_calling.enabled and "arcane" or "physical" end,
|
|
|
|
spend = function() return -5 * ( buff.furious_regeneration.up and 1.15 or 1 ) end,
|
|
spendType = "rage",
|
|
|
|
talent = "thrash",
|
|
form = "bear_form",
|
|
startsCombat = true,
|
|
|
|
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 talent.aggravate_wounds.enabled and debuff.dreadful_wound.up then
|
|
debuff.dreadful_wound.expires = debuff.dreadful_wound.expires + 0.6
|
|
end
|
|
if talent.earthwarden.enabled then addStack( "earthwarden", nil, ( min( 3, active_enemies ) ) ) end
|
|
|
|
if talent.bloody_frenzy.enabled then gain( min( 15, 3 * active_enemies ), rage ) end
|
|
|
|
if legendary.ursocs_fury_remembered.enabled then
|
|
applyBuff( "ursocs_fury_remembered" )
|
|
end
|
|
|
|
if talent.lunation.enabled and talent.lunar_calling.enabled then reduceCooldown( "lunar_beam", 3 ) end
|
|
|
|
end,
|
|
|
|
bind = "thrash",
|
|
},
|
|
|
|
-- 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.minR > 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:RegisterRanges( "shred", "rake", "skull_bash", "wild_charge", "growl", "entangling_roots", "moonfire" )
|
|
|
|
spec:RegisterOptions( {
|
|
enabled = true,
|
|
|
|
aoe = 3,
|
|
cycle = false,
|
|
|
|
nameplates = true,
|
|
nameplateRange = 8,
|
|
rangeFilter = false,
|
|
|
|
damage = true,
|
|
damageExpiration = 6,
|
|
|
|
potion = "tempered_potion",
|
|
|
|
package = "Guardian",
|
|
} )
|
|
|
|
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",
|
|
} )
|
|
|
|
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 = 1.5
|
|
} )
|
|
|
|
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 = 1.5
|
|
} )
|
|
|
|
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 = 1.5
|
|
} )
|
|
|
|
spec:RegisterSetting( "max_ironfur", 1, {
|
|
name = strformat( "%s Maximum Stacks", Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ) ),
|
|
desc = strformat( "When set above zero, %s will not be recommended for mitigation purposes if you already have this many stacks.",
|
|
Hekili:GetSpellLinkWithTexture( spec.abilities.ironfur.id ) ),
|
|
type = "range",
|
|
min = 0,
|
|
max = 14,
|
|
step = 1,
|
|
width = 1.5
|
|
} )
|
|
|
|
spec:RegisterStateExpr( "max_ironfur", function()
|
|
return settings.max_ironfur or 1
|
|
end )
|
|
|
|
spec:RegisterPack( "Guardian", 20250314, [[Hekili:vZ1EVnUns8plcfqWUBIJEyhNDHDaUEa9WU4UEho3d9)STSmTTqKLm0JKMad9z)gskrrjskrNnB2TafBJnjhoZW5XpoCGxAV83xUyRxgA5V5y5mXY1E8ihxNjotxUi75tOLlo55)G3E4pI8oc)7)i3lzBGxeEGNdJ92IjqACEIpm4HSStPF6MB2hKDiFZi)4J3KgCmp0llioYpXBxg(Z(3SCXM8GWSphTCJ0D3E5cV8SdXjlxSi44FhiCW2Ti6SrP(lxGN91wUxBp(tfRXtb(3NJ8l(sXxGHgFTT1122Wq)AWFwS(ZjXr7YtkwN5f9qq0(I1(hq(pWMS1hV2bp5)l6rus2n7G1WnK9eyOFb5bR)xJtowSook85I1b7kwhfxSEh57cslw75Nf8iQEP3DTZ4RkwJ))tyCz(jS4wpPPx74cd(7hqfR)d8E8hGQla0UHbPzPyD7XGSG9efi8PFJCEHI82eI2U8xwUWpjidLe4bNwvcNzXAJI1p6bFlmRrb7wHv2BjdeebNjWSwT17iCOUAcW33dFnvdv9TzhsqPhIlxZM8D7gvoJrjOJEbrWQMvS2Ty9pxS(GxkiqctmndSBitBcCy6t4)fLdUmdoVvkihqEHzhgDYpJS8B5wFcAFs8tzhWeW91rGi0tEH41pwlnzh0AhqSxcqBxbCfq2e6zeq5jVgkpDsxhqwJSPkB6Io69N18XgVKhsbYI36BvU1KdN08KhdE0lCfCeMbBvw6OTXpfvF6vrR6VUTcWQB20zIs(uCZboodIJKGaITXlJzFxTIJa3SkEhypIw9eycZlAsmHIpbBckRE9v(aK)Afn(vL7qZJLquu2iCaNOu8gITthvszI8woJ8K0y)0vOOT5jEr(OQ5G3GWC0kuykSfwLFC5c7UnulPkOSsY4LZgBTbB3tcovVHvYOWI7X2o4i4SohoQkwF(mp13fMhSDfoCM4MSb2eYq0tSTODE5HINxPpKhgUAJx6bzNuSzfhd8ARz0wjvVZyBL0WyWAPT1myd5LerC7wTVmTewtqoLgLFIkHu7AuskcmMWccmsvYmEQlrTvXezXhrychgS)qw6QTOhJPdiWqqyaiCqAqyacBEuVtQiHKWfSDnji6bugKleZGCFwIFER140Ano41mvPrXa5Ajo9x)Q6H1mXjMODNc203dStOFyforhnDxPhkxcpGeFubjsYJusbm)tTuj)vNPnjIxI3JqumICywLih8Yrhdq0aB28bLYd7ob2aMp1RWZg0Ku9UwKGW97qHbrOvGAhwqaeG1popc4LQCWG3(TsfmCo8EIKOYV8ymKjpibjOkzHkQ0MdQ(pS4g4ZY)L5LShbbDHasRYIxTnar10omnaSMe0omue82RXIgQskNYhehaG8mwmbZ58eKGE)hb(DCl7dLSmO(F2peOnzFsXg6Dg(Vb)vYZBJXP(sGO2uhFoKBnuBHWmWP89d9EkfCzIOMwoucPMkJ1Hk29rf32QKMeIxLWcgwti9HL5hd4EbWpaRThv5nKgIqNqCOFHZW74ssLaXEcXmtj42EGHX7Jihh3u(eMH5rW8HfDSvsZ2HxLfcc7iFk(jiVeG)Apsm6HVxwd)vPHuOH4BdzqbT5IZhh9y8diQo8uaWEPSy61z4Rt60s(ST4NixoO2ZtD4DM3SgPXyyEz2aDpFERbmU4HQaCqjm1BhBwrwXyRQWJ1kuj6lzXN0qw6c9ZBjRO5SBVBCEPs8ZiNPDMF9TeUsjza3xY(QgUUgqfGavoIqfSvhqUswYWGIx5fTLepRkU39SaJYMeVdBRH4VMoqHpuSEV)w81XQonKuEG5nG5K49cIW7QdBkNgmBP3z5IrThd8dIZtxrZmIpd4ac52Y2RuivhWwam48w5fPrNXiAbliXqGTscz3gfol6wzPr42AWzClQdfKrRsUu(1mhTjwL8zD2TUoYQiNSeFvExmA)rRUPxzIIFC4F5iLSvNcTMC8o80KjTJCQWB6Yau4YBvjBYSaQksdCzb9D(UX66zezxDOwb4dFPgmDtZsqr7ZoOGO229tv9i57HkUtpon1PdBetJRgR2TV88BV1THES47L68VMSJYdqhREboOp8Dt5faO6G)vPmmOxzdx)IgxTKtC2HsIPjK3a8orQ6eU(BRuz0HGz0HS1cS9Bg)8Q0YQuTGANOpvdvU3qp9bwQLrmjyHagNkyuo9GDEFCsxiNTTVii8QogAx(RzvL)s3BTE0lAFivGudCxbsejkf1aO1l)6mmIth9Lxw5(muy8w5069aAu7cwP02vJxji9qcIu0qh1WP)ojYFnIfwprKk1fqx6EQbP5S0udeTlF4ML3497YwkQCj7Ur8XmErvnw)HGNBJj8hD(vlD8qjpxHASG9CpEfsUkplD4p(uR6r2EpMKiYUDIE6YzCZoU)zTqDzCUg0u380xQajrHPgyM0YGOSkhU9x8U2yGuiaJfSxKSWsHlnopSkLceVfLM1qpRq)0WfNcUh8fV7oLoGuGkkwMBpltpUDOSueUQrxjC60OuETpCu9m3NYdFeO3li51kXDcF145jAZQX72ZRFS3leteFgSUgXhfE)Ws11giJ)2quA6k8tpsEgDjgYvVkjMnuNU(IbHWoFlVrSs4egTkliqiEoLxGeXfqgf3jr7FMCeoLUzCq0ebL4Qg3WFTKY(QENaitx1j06e1lCvv(N1vMqkCdRXQZKiJM42zkgqRgeLrDghRXwjEp5XD1SF0yiGhQ4Z6XohD4UocBQekRtZlO(Svs4M6409ACGN0fVfnFyL0NcoHyb0gRoW4RuASRIIlessASgsRMaHotXdG7K1X2w2qa4NGevGnr6YfF(4P4Km8goMUHXrfRjT45OIVaYZjKp(5ohJFf4u02)DuJgTnjExa25)N(PI162ITBcJ3Cd4eb8WtKwk9M)gzB)pjbXG655)jEZVzBc29KfigVYIVG3M)h40KfdUm4UvDnMc0oy9tfR)xEj(WNUdBFHB3VRbdE)nt9N(rCBTsfU0rSU67dZVPDF8jFwv4GUc3epZRadDfPv6MBFvDh2n36QGDZlpxL30EMLJQQH9KZbcDad3(OSpCmnQWwX1epsjpZoIq2aqiToF2qDGYATjS46ERRX3s6Lo(VjpfTcS(ps1ICn4gEt1QYkNplTwuk3dfT2g3(j0vCsjgMlNx1KB9odh(zCITJdKX7LsuFc(qEs2Uf1OYADVPXp3w9IwLQ3lH3Ha)zIVqEit1WQ(UzZGq3BlSoP2MdEngNdpFU3LPrvxMFBlMEMROWwgJ8Qg4jbN5kfaFOvZbdgyuMg1uSXPU32b48bCOHumPHT5RPvrdK3gvyQ(nANhZ0)k2AbnghSASsIBpboqA3rnBct8e7TQ5oNplFvJ7Av2QwLBTajT)RefOg9gfnEk55Cn1bE693jsVYUKsQjKWSRBDkHHK0Yk8UukQsSzBSLYDvWrtQJTRQhSeKnUWwcdYf9symjQqISmyGgb(WhcMxwlpD)TwdLLMatHHMyU5(XwMdQK)o6oiSJLg8OQSsx(MPXSQOPeJzwRc92LR5IsmmZrYz)lOAUrw5jV3UKPek1MzhLKCM9h27dkdHYtnxm5ufpiox4G5BcFvUsvLfBUBVHwBLXDolmQ0g6r0DK(kTYYSzOQRxmnO2gS(DHAPnXYSkOOmfOrh3l(8zcf(OLSvcbGE)4eLkiScPLn9GbvETsmU0lXGRjRIMkFyDjHw6lqIZ3Cws95LDDUvv9Ls5YTTLV((x(BLcPddbn0cdfDoF1wlg9VDVDI9pABMefzZYivNyqhilca6nVezXqsNGiYFWe(QzkdPCLHu2IbW4vUxxGcOB5wzkYsVj1PY4Se47)cjiiWpvaddrz3w0wMST1eIIoxcC2TMxig3oGkimxsTEXtwN4VZMpXrhwgU3QHGbHHSgIq0AOJA1iiMpGEx48VcESL9cpvVeIqHTkZUU6(hV1G)eUNnaER2h5LM3S)DHdQt((9z)vQbuFpdPy1LYTIwzDOV1IakuxQz2b6XaYqTIzkD2DfRTVyZ6Xyx8Lr6Wzvwkjb2ySSlwZ5zR(1NfLiIzmo(1S7UtWWZ2MByxjd3)oEPxvt8(NSxUU91X6IYIQ4QQvYYGk5LQnlZ9Zv3YsbSJxO(Rp9ar)cqGfc3B04wRTEFl1XXnrKxG9(Pw8WwEdYa)nKrVORFwIZurM(6hST)IylIOUnj4FV37h3pfzVflTEOu3J2pLlvt6ibve7Xp5RxPC1AlpNXCfLu6cypnGoKtsXO4DHUioZEOOJf)RNu)WlnVSyv5kmeIEBgi8BuY9Q(DUHU3T(nUzM7pt(TTP5GL1CxbNv9dudM1Q)Ltz2TQNp53JgDNU0FYz4vd6qe(kOlzDtNitZznY(NR)rDrbLf)fEH5cQ4xEMYdD(F1zAidwY5fNjCmd553x()p]] )
|