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.
2096 lines
91 KiB
2096 lines
91 KiB
|
3 years ago
|
-- DemonHunterHavoc.lua
|
||
|
1 year ago
|
-- July 2024
|
||
|
3 years ago
|
|
||
|
|
if UnitClassBase( "player" ) ~= "DEMONHUNTER" then return end
|
||
|
|
|
||
|
|
local addon, ns = ...
|
||
|
|
local Hekili = _G[ addon ]
|
||
|
|
local class, state = Hekili.Class, Hekili.State
|
||
|
|
|
||
|
2 years ago
|
local strformat, wipe = string.format, table.wipe
|
||
|
1 year ago
|
local GetSpellInfo = C_Spell.GetSpellInfo
|
||
|
3 years ago
|
|
||
|
|
local spec = Hekili:NewSpecialization( 577 )
|
||
|
|
|
||
|
|
spec:RegisterResource( Enum.PowerType.Fury, {
|
||
|
|
-- Immolation Aura now grants 20 up front, 60 over 12 seconds (5 fps).
|
||
|
|
immolation_aura = {
|
||
|
|
talent = "burning_hatred",
|
||
|
|
aura = "immolation_aura",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.immolation_aura.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( t - app )
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = 1,
|
||
|
|
value = 5
|
||
|
|
},
|
||
|
|
|
||
|
|
tactical_retreat = {
|
||
|
|
talent = "tactical_retreat",
|
||
|
|
aura = "tactical_retreat",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.tactical_retreat.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( t - app )
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = function() return class.auras.tactical_retreat.tick_time end,
|
||
|
|
value = 8
|
||
|
|
},
|
||
|
|
|
||
|
|
eye_beam = {
|
||
|
|
talent = "blind_fury",
|
||
|
|
aura = "eye_beam",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.eye_beam.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( ( t - app ) / state.haste ) * state.haste
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = function () return state.haste end,
|
||
|
|
value = 20,
|
||
|
|
},
|
||
|
|
} )
|
||
|
|
|
||
|
|
-- Talents
|
||
|
|
spec:RegisterTalents( {
|
||
|
1 year ago
|
-- DemonHunter
|
||
|
3 years ago
|
aldrachi_design = { 90999, 391409, 1 }, -- Increases your chance to parry by 3%.
|
||
|
2 years ago
|
aura_of_pain = { 90933, 207347, 1 }, -- Increases the critical strike chance of Immolation Aura by 6%.
|
||
|
3 years ago
|
blazing_path = { 91008, 320416, 1 }, -- Fel Rush gains an additional charge.
|
||
|
|
bouncing_glaives = { 90931, 320386, 1 }, -- Throw Glaive ricochets to 1 additional target.
|
||
|
2 years ago
|
champion_of_the_glaive = { 90994, 429211, 1 }, -- Throw Glaive has 2 charges and 10 yard increased range.
|
||
|
|
chaos_fragments = { 95154, 320412, 1 }, -- Each enemy stunned by Chaos Nova has a 30% chance to generate a Lesser Soul Fragment.
|
||
|
1 year ago
|
chaos_nova = { 90993, 179057, 1 }, -- Unleash an eruption of fel energy, dealing 2,956 Chaos damage and stunning all nearby enemies for 2 sec. Each enemy stunned by Chaos Nova has a 30% chance to generate a Lesser Soul Fragment.
|
||
|
3 years ago
|
charred_warblades = { 90948, 213010, 1 }, -- You heal for 3% of all Fire damage you deal.
|
||
|
1 year ago
|
collective_anguish = { 95152, 390152, 1 }, -- Eye Beam summons an allied Vengeance Demon Hunter who casts Fel Devastation, dealing 18,271 Fire damage over 2 sec. Dealing damage heals you for up to 1,641 health.
|
||
|
2 years ago
|
consume_magic = { 91006, 278326, 1 }, -- Consume 1 beneficial Magic effect removing it from the target.
|
||
|
|
darkness = { 91002, 196718, 1 }, -- Summons darkness around you in an 8 yd radius, granting friendly targets a 15% chance to avoid all damage from an attack. Lasts 8 sec. Chance to avoid damage increased by 100% when not in a raid.
|
||
|
3 years ago
|
demon_muzzle = { 90928, 388111, 1 }, -- Enemies deal 8% reduced magic damage to you for 8 sec after being afflicted by one of your Sigils.
|
||
|
2 years ago
|
demonic = { 91003, 213410, 1 }, -- Eye Beam causes you to enter demon form for 5 sec after it finishes dealing damage.
|
||
|
3 years ago
|
disrupting_fury = { 90937, 183782, 1 }, -- Disrupt generates 30 Fury on a successful interrupt.
|
||
|
|
erratic_felheart = { 90996, 391397, 2 }, -- The cooldown of Fel Rush is reduced by 10%.
|
||
|
1 year ago
|
felblade = { 95150, 232893, 1 }, -- Charge to your target and deal 11,329 Chaos damage. Demon Blades has a chance to reset the cooldown of Felblade. Generates 40 Fury.
|
||
|
3 years ago
|
felfire_haste = { 90939, 389846, 1 }, -- Fel Rush increases your movement speed by 10% for 8 sec.
|
||
|
2 years ago
|
flames_of_fury = { 90949, 389694, 2 }, -- Sigil of Flame deals 35% increased damage and generates 1 additional Fury per target hit.
|
||
|
|
illidari_knowledge = { 90935, 389696, 1 }, -- Reduces magic damage taken by 5%.
|
||
|
3 years ago
|
imprison = { 91007, 217832, 1 }, -- Imprisons a demon, beast, or humanoid, incapacitating them for 1 min. Damage will cancel the effect. Limit 1.
|
||
|
|
improved_disrupt = { 90938, 320361, 1 }, -- Increases the range of Disrupt to 10 yds.
|
||
|
3 years ago
|
improved_sigil_of_misery = { 90945, 320418, 1 }, -- Reduces the cooldown of Sigil of Misery by 30 sec.
|
||
|
1 year ago
|
infernal_armor = { 91004, 320331, 2 }, -- Immolation Aura increases your armor by 20% and causes melee attackers to suffer 478 Chaos damage.
|
||
|
3 years ago
|
internal_struggle = { 90934, 393822, 1 }, -- Increases your mastery by 3.6%.
|
||
|
1 year ago
|
live_by_the_glaive = { 95151, 428607, 1 }, -- When you parry an attack or have one of your attacks parried, restore 2% of max health and 10 Fury. This effect may only occur once every 5 sec.
|
||
|
3 years ago
|
long_night = { 91001, 389781, 1 }, -- Increases the duration of Darkness by 3 sec.
|
||
|
|
lost_in_darkness = { 90947, 389849, 1 }, -- Spectral Sight lasts an additional 6 sec if disrupted by attacking or taking damage.
|
||
|
2 years ago
|
master_of_the_glaive = { 90994, 389763, 1 }, -- Throw Glaive has 2 charges and snares all enemies hit by 50% for 6 sec.
|
||
|
3 years ago
|
pitch_black = { 91001, 389783, 1 }, -- Reduces the cooldown of Darkness by 120 sec.
|
||
|
2 years ago
|
precise_sigils = { 95155, 389799, 1 }, -- All Sigils are now placed at your target's location.
|
||
|
3 years ago
|
pursuit = { 90940, 320654, 1 }, -- Mastery increases your movement speed.
|
||
|
2 years ago
|
quickened_sigils = { 95149, 209281, 1 }, -- All Sigils activate 1 second faster.
|
||
|
|
rush_of_chaos = { 95148, 320421, 2 }, -- Reduces the cooldown of Metamorphosis by 30 sec.
|
||
|
|
shattered_restoration = { 90950, 389824, 1 }, -- The healing of Shattered Souls is increased by 10%.
|
||
|
1 year ago
|
sigil_of_misery = { 90946, 207684, 1 }, -- Place a Sigil of Misery at the target location that activates after 2 sec. Causes all enemies affected by the sigil to cower in fear, disorienting them for 15 sec.
|
||
|
|
sigil_of_spite = { 90997, 390163, 1 }, -- Place a demonic sigil at the target location that activates after 2 sec. Detonates to deal 44,825 Chaos damage and shatter up to 3 Lesser Soul Fragments from enemies affected by the sigil. Deals reduced damage beyond 5 targets.
|
||
|
|
soul_rending = { 90936, 204909, 2 }, -- Leech increased by 6%. Gain an additional 6% leech while Metamorphosis is active.
|
||
|
3 years ago
|
soul_sigils = { 90929, 395446, 1 }, -- Afflicting an enemy with a Sigil generates 1 Lesser Soul Fragment.
|
||
|
|
swallowed_anger = { 91005, 320313, 1 }, -- Consume Magic generates 20 Fury when a beneficial Magic effect is successfully removed from the target.
|
||
|
1 year ago
|
the_hunt = { 90927, 370965, 1 }, -- Charge to your target, striking them for 51,808 Chaos damage, rooting them in place for 1.5 sec and inflicting 45,412 Chaos damage over 6 sec to up to 5 enemies in your path. The pursuit invigorates your soul, healing you for 10% of the damage you deal to your Hunt target for 20 sec.
|
||
|
2 years ago
|
unrestrained_fury = { 90941, 320770, 1 }, -- Increases maximum Fury by 20.
|
||
|
3 years ago
|
vengeful_bonds = { 90930, 320635, 1 }, -- Vengeful Retreat reduces the movement speed of all nearby enemies by 70% for 3 sec.
|
||
|
1 year ago
|
vengeful_retreat = { 90942, 198793, 1 }, -- Remove all snares and vault away. Nearby enemies take 1,229 Physical damage.
|
||
|
2 years ago
|
will_of_the_illidari = { 91000, 389695, 1 }, -- Increases maximum health by 5%.
|
||
|
1 year ago
|
-- Aldrachi Reaver
|
||
|
|
a_fire_inside = { 95143, 427775, 1 }, -- Immolation Aura has 1 additional charge and 25% chance to refund a charge when used. You can have multiple Immolation Auras active at a time.
|
||
|
3 years ago
|
accelerated_blade = { 91011, 391275, 1 }, -- Throw Glaive deals 60% increased damage, reduced by 30% for each previous enemy hit.
|
||
|
1 year ago
|
any_means_necessary = { 90919, 388114, 1 }, -- Mastery: Demonic Presence now also causes your Arcane, Fire, Frost, Nature, and Shadow damage to be dealt as Chaos instead, and increases that damage by 28.9%.
|
||
|
2 years ago
|
blind_fury = { 91026, 203550, 2 }, -- Eye Beam generates 40 Fury every second, and its damage and duration are increased by 10%.
|
||
|
|
burning_hatred = { 90923, 320374, 1 }, -- Immolation Aura generates an additional 40 Fury over 10 sec.
|
||
|
1 year ago
|
burning_wound = { 90917, 391189, 1 }, -- Demon Blades and Throw Glaive leave open wounds on your enemies, dealing 8,140 Chaos damage over 15 sec and increasing damage taken from your Immolation Aura by 40%. May be applied to up to 3 targets.
|
||
|
3 years ago
|
chaos_theory = { 91035, 389687, 1 }, -- Blade Dance causes your next Chaos Strike within 8 sec to have a 14-30% increased critical strike chance and will always refund Fury.
|
||
|
2 years ago
|
chaotic_disposition = { 95147, 428492, 2 }, -- Your Chaos damage has a 7.77% chance to be increased by 17%, occurring up to 3 total times.
|
||
|
3 years ago
|
chaotic_transformation = { 90922, 388112, 1 }, -- When you activate Metamorphosis, the cooldowns of Blade Dance and Eye Beam are immediately reset.
|
||
|
2 years ago
|
critical_chaos = { 91028, 320413, 1 }, -- The chance that Chaos Strike will refund 20 Fury is increased by 30% of your critical strike chance.
|
||
|
|
cycle_of_hatred = { 91032, 258887, 2 }, -- Blade Dance, Chaos Strike, and Glaive Tempest reduce the cooldown of Eye Beam by 0.5 sec.
|
||
|
|
dancing_with_fate = { 91015, 389978, 2 }, -- The final slash of Blade Dance deals an additional 25% damage.
|
||
|
|
dash_of_chaos = { 93014, 427794, 1 }, -- For 2 sec after using Fel Rush, activating it again will dash back towards your initial location.
|
||
|
|
deflecting_dance = { 93015, 427776, 1 }, -- You deflect incoming attacks while Blade Dancing, absorbing damage up to 15% of your maximum health.
|
||
|
1 year ago
|
demon_blades = { 91019, 203555, 1 }, -- Your auto attacks deal an additional 1,719 Chaos damage and generate 7-12 Fury.
|
||
|
2 years ago
|
demon_hide = { 91017, 428241, 1 }, -- Magical damage increased by 3%, and Physical damage taken reduced by 5%.
|
||
|
3 years ago
|
desperate_instincts = { 93016, 205411, 1 }, -- Blur now reduces damage taken by an additional 10%. Additionally, you automatically trigger Blur with 50% reduced cooldown and duration when you fall below 35% health. This effect can only occur when Blur is not on cooldown.
|
||
|
1 year ago
|
essence_break = { 91033, 258860, 1 }, -- Slash all enemies in front of you for 30,395 Chaos damage, and increase the damage your Chaos Strike and Blade Dance deal to them by 80% for 4 sec. Deals reduced damage beyond 8 targets.
|
||
|
|
eye_beam = { 91018, 198013, 1 }, -- Blasts all enemies in front of you, dealing guaranteed critical strikes for up to 70,852 Chaos damage over 1.9 sec. Deals reduced damage beyond 5 targets. When Eye Beam finishes fully channeling, your Haste is increased by an additional 10% for 10 sec.
|
||
|
|
fel_barrage = { 95144, 258925, 1 }, -- Unleash a torrent of Fel energy, rapidly consuming Fury to inflict 3,755 Chaos damage to all enemies within 12 yds, lasting 8 sec or until Fury is depleted. Deals reduced damage beyond 5 targets.
|
||
|
|
first_blood = { 90925, 206416, 1 }, -- Blade Dance deals 24,200 Chaos damage to the first target struck.
|
||
|
3 years ago
|
furious_gaze = { 91025, 343311, 1 }, -- When Eye Beam finishes fully channeling, your Haste is increased by an additional 10% for 10 sec.
|
||
|
|
furious_throws = { 93013, 393029, 1 }, -- Throw Glaive now costs 25 Fury and throws a second glaive at the target.
|
||
|
1 year ago
|
glaive_tempest = { 91035, 342817, 1 }, -- Launch two demonic glaives in a whirlwind of energy, causing 32,341 Chaos damage over 3 sec to all nearby enemies. Deals reduced damage beyond 8 targets.
|
||
|
2 years ago
|
growing_inferno = { 90916, 390158, 1 }, -- Immolation Aura's damage increases by 10% each time it deals damage.
|
||
|
3 years ago
|
improved_chaos_strike = { 91030, 343206, 1 }, -- Chaos Strike damage increased by 10%.
|
||
|
|
improved_fel_rush = { 93014, 343017, 1 }, -- Fel Rush damage increased by 20%.
|
||
|
2 years ago
|
inertia = { 91021, 427640, 1 }, -- When empowered by Unbound Chaos, Fel Rush increases your damage done by 18% for 5 sec.
|
||
|
|
initiative = { 91027, 388108, 1 }, -- Damaging an enemy before they damage you increases your critical strike chance by 10% for 5 sec. Vengeful Retreat refreshes your potential to trigger this effect on any enemies you are in combat with.
|
||
|
1 year ago
|
inner_demon = { 91024, 389693, 1 }, -- Entering demon form causes your next Chaos Strike to unleash your inner demon, causing it to crash into your target and deal 22,918 Chaos damage to all nearby enemies. Deals reduced damage beyond 5 targets.
|
||
|
3 years ago
|
insatiable_hunger = { 91019, 258876, 1 }, -- Demon's Bite deals 50% more damage and generates 5 to 10 additional Fury.
|
||
|
2 years ago
|
isolated_prey = { 91036, 388113, 1 }, -- Chaos Nova, Eye Beam, and Immolation Aura gain bonuses when striking 1 target. Chaos Nova: Stun duration increased by 2 sec. Eye Beam: Deals 30% increased damage. Immolation Aura: Always critically strikes.
|
||
|
3 years ago
|
know_your_enemy = { 91034, 388118, 2 }, -- Gain critical strike damage equal to 40% of your critical strike chance.
|
||
|
|
looks_can_kill = { 90921, 320415, 1 }, -- Eye Beam deals guaranteed critical strikes.
|
||
|
2 years ago
|
momentum = { 91021, 206476, 1 }, -- Fel Rush, The Hunt, and Vengeful Retreat increase your damage done by 6% for 6 sec, up to a maximum of 30 sec.
|
||
|
|
mortal_dance = { 93015, 328725, 1 }, -- Blade Dance now reduces targets' healing received by 50% for 6 sec.
|
||
|
3 years ago
|
netherwalk = { 93016, 196555, 1 }, -- Slip into the nether, increasing movement speed by 100% and becoming immune to damage, but unable to attack. Lasts 6 sec.
|
||
|
1 year ago
|
ragefire = { 90918, 388107, 1 }, -- Each time Immolation Aura deals damage, 30% of the damage dealt by up to 3 critical strikes is gathered as Ragefire. When Immolation Aura expires you explode, dealing all stored Ragefire damage to nearby enemies.
|
||
|
3 years ago
|
relentless_onslaught = { 91012, 389977, 1 }, -- Chaos Strike has a 10% chance to trigger a second Chaos Strike.
|
||
|
|
restless_hunter = { 91024, 390142, 1 }, -- Leaving demon form grants a charge of Fel Rush and increases the damage of your next Blade Dance by 50%.
|
||
|
2 years ago
|
scars_of_suffering = { 90914, 428232, 1 }, -- Increases Versatility by 4% and reduces threat generated by 8%.
|
||
|
|
serrated_glaive = { 91013, 390154, 1 }, -- Enemies hit by Chaos Strike or Throw Glaive take 15% increased damage from Chaos Strike and Throw Glaive for 15 sec.
|
||
|
|
shattered_destiny = { 91031, 388116, 1 }, -- The duration of your active demon form is extended by 0.1 sec per 12 Fury spent.
|
||
|
|
soulscar = { 91012, 388106, 1 }, -- Throw Glaive causes targets to take an additional 100% of damage dealt as Chaos over 6 sec.
|
||
|
3 years ago
|
tactical_retreat = { 91022, 389688, 1 }, -- Vengeful Retreat has a 5 sec reduced cooldown and generates 80 Fury over 10 sec.
|
||
|
1 year ago
|
trail_of_ruin = { 90915, 258881, 1 }, -- The final slash of Blade Dance inflicts an additional 7,742 Chaos damage over 4 sec.
|
||
|
2 years ago
|
unbound_chaos = { 91020, 347461, 1 }, -- Activating Immolation Aura increases the damage of your next Fel Rush by 250%. Lasts 12 sec.
|
||
|
1 year ago
|
-- Aldrachi Reaver
|
||
|
|
aldrachi_tactics = { 94914, 442683, 1 }, -- The second enhanced ability in a pattern shatters an additional Soul Fragment.
|
||
|
|
army_unto_oneself = { 94896, 442714, 1 }, -- Felblade surrounds you with a Blade Ward, reducing damage taken by 10% for 5 sec.
|
||
|
|
art_of_the_glaive = { 94915, 442290, 1 }, -- Consuming 6 Soul Fragments or casting The Hunt converts your next Throw Glaive into Reaver's Glaive. Reaver's Glaive:
|
||
|
|
evasive_action = { 94911, 444926, 1 }, -- Vengeful Retreat can be cast a second time within 3 sec.
|
||
|
|
fury_of_the_aldrachi = { 94898, 442718, 1 }, -- When enhanced by Reaver's Glaive, Blade Dance casts 3 additional glaive slashes to nearby targets. If cast after Chaos Strike, cast 6 slashes instead.
|
||
|
|
incisive_blade = { 94895, 442492, 1 }, -- Chaos Strike deals 15% increased damage.
|
||
|
|
incorruptible_spirit = { 94896, 442736, 1 }, -- Consuming a Soul Fragment also heals you for an additional 15% over time.
|
||
|
|
keen_engagement = { 94910, 442497, 1 }, -- Reaver's Glaive generates 20 Fury.
|
||
|
|
preemptive_strike = { 94910, 444997, 1 }, -- Throw Glaive deals 3,124 damage to enemies near its initial target.
|
||
|
|
reavers_mark = { 94903, 442679, 1 }, -- When enhanced by Reaver's Glaive, Chaos Strike applies Reaver's Mark, which causes the target to take 12% increased damage for 20 sec. If cast after Blade Dance, Reaver's Mark is increased to 24%.
|
||
|
|
thrill_of_the_fight = { 94919, 442686, 1 }, -- After consuming both enhancements, gain Thrill of the Fight, increasing your attack speed by 15% for 20 sec and your damage and healing by 20% for 10 sec.
|
||
|
|
unhindered_assault = { 94911, 444931, 1 }, -- Vengeful Retreat resets the cooldown of Felblade.
|
||
|
|
warblades_hunger = { 94906, 442502, 1 }, -- Consuming a Soul Fragment causes your next Chaos Strike to deal 1,734 additional damage. Felblade consumes up to 5 nearby Soul Fragments.
|
||
|
|
wounded_quarry = { 94897, 442806, 1 }, -- While Reaver's Mark is on your target, melee attacks strike with an additional glaive slash for 867 Physical damage and have a chance to shatter a soul.
|
||
|
|
-- Fel-Scarred
|
||
|
|
burning_blades = { 94905, 452408, 1 }, -- Your blades burn with Fel energy, causing your Chaos Strike, Throw Glaive, and auto-attacks to deal an additional 10% damage as Fire over 6 sec.
|
||
|
|
demonic_intensity = { 94901, 452415, 1 }, -- Activating Metamorphosis greatly empowers Eye Beam, Immolation Aura, and Sigil of Flame. Demonsurge damage is increased by 10% for each time it previously triggered while your demon form is active.
|
||
|
|
demonsurge = { 94917, 452402, 1 }, -- Metamorphosis now also causes Demon Blades to generate 5 additional Fury. While demon form is active, the first cast of each empowered ability induces a Demonsurge, causing you to explode with Fel energy, dealing 12,158 Fire damage to nearby enemies.
|
||
|
|
enduring_torment = { 94916, 452410, 1 }, -- The effects of your demon form persist outside of it in a weakened state, increasing Chaos Strike and Blade Dance damage by 5%, and Haste by 3%.
|
||
|
|
flamebound = { 94902, 452413, 1 }, -- Immolation Aura has 2 yd increased radius and 30% increased critical strike damage bonus.
|
||
|
|
focused_hatred = { 94918, 452405, 1 }, -- Demonsurge deals 35% increased damage when it strikes a single target.
|
||
|
|
improved_soul_rending = { 94899, 452407, 1 }, -- Leech granted by Soul Rending increased by 2% and an additional 2% while Metamorphosis is active.
|
||
|
|
monster_rising = { 94909, 452414, 1 }, -- Agility increased by 5% while not in demon form.
|
||
|
|
pursuit_of_angriness = { 94913, 452404, 1 }, -- Movement speed increased by 1% per 10 Fury.
|
||
|
|
set_fire_to_the_pain = { 94899, 452406, 1 }, -- 5% of all non-Fire damage taken is instead taken as Fire damage over 6 sec. Fire damage taken reduced by 10%.
|
||
|
|
student_of_suffering = { 94902, 452412, 1 }, -- Sigil of Flame applies Student of Suffering to you, increasing Mastery by 14.4% and granting 5 Fury every 2 sec, for 8 sec.
|
||
|
|
untethered_fury = { 94904, 452411, 1 }, -- Maximum Fury increased by 50.
|
||
|
|
violent_transformation = { 94912, 452409, 1 }, -- When you activate Metamorphosis, the cooldowns of your Sigil of Flame and Immolation Aura are immediately reset.
|
||
|
|
wave_of_debilitation = { 94913, 452403, 1 }, -- Chaos Nova slows enemies by 60% and reduces attack and cast speed 15% for 5 sec after its stun fades.
|
||
|
3 years ago
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
-- PvP Talents
|
||
|
|
spec:RegisterPvpTalents( {
|
||
|
1 year ago
|
blood_moon = 5433, -- (355995)
|
||
|
|
chaotic_imprint = 809 , -- (356510)
|
||
|
|
cleansed_by_flame = 805 , -- (205625)
|
||
|
|
cover_of_darkness = 1206, -- (357419)
|
||
|
|
detainment = 812 , -- (205596)
|
||
|
|
glimpse = 813 , -- (354489)
|
||
|
2 years ago
|
rain_from_above = 811 , -- (206803) You fly into the air out of harm's way. While floating, you gain access to Fel Lance allowing you to deal damage to enemies below.
|
||
|
|
reverse_magic = 806 , -- (205604) Removes all harmful magical effects from yourself and all nearby allies within 10 yards, and sends them back to their original caster if possible.
|
||
|
1 year ago
|
sigil_mastery = 5523, -- (211489)
|
||
|
|
unending_hatred = 1218, -- (213480)
|
||
|
3 years ago
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
-- Auras
|
||
|
|
spec:RegisterAuras( {
|
||
|
1 year ago
|
-- $w1 Soul Fragments consumed. At $?a212612[$442290s1~][$442290s2~], Reaver's Glaive is available to cast.
|
||
|
|
art_of_the_glaive = {
|
||
|
|
id = 444661,
|
||
|
|
duration = 30.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- Dodge chance increased by $s2%.
|
||
|
|
-- https://wowhead.com/beta/spell=188499
|
||
|
|
blade_dance = {
|
||
|
|
id = 188499,
|
||
|
|
duration = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Damage taken reduced by $s1%.
|
||
|
|
blade_ward = {
|
||
|
|
id = 442715,
|
||
|
|
duration = 5.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
blazing_slaughter = {
|
||
|
|
id = 355892,
|
||
|
|
duration = 12,
|
||
|
|
max_stack = 20,
|
||
|
|
},
|
||
|
|
-- Versatility increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=355894
|
||
|
|
blind_faith = {
|
||
|
|
id = 355894,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Dodge increased by $s2%. Damage taken reduced by $s3%.
|
||
|
|
-- https://wowhead.com/beta/spell=212800
|
||
|
|
blur = {
|
||
|
|
id = 212800,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Taking $w1 Chaos damage every $t1 seconds. Damage taken from $@auracaster's Immolation Aura increased by $s2%.
|
||
|
|
-- https://wowhead.com/beta/spell=391191
|
||
|
|
burning_wound_391191 = {
|
||
|
|
id = 391191,
|
||
|
|
duration = 15,
|
||
|
|
tick_time = 3,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
burning_wound_346278 = {
|
||
|
|
id = 346278,
|
||
|
|
duration = 15,
|
||
|
|
tick_time = 3,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
burning_wound = {
|
||
|
|
alias = { "burning_wound_391191", "burning_wound_346278" },
|
||
|
|
aliasMode = "first",
|
||
|
|
aliasType = "buff",
|
||
|
|
},
|
||
|
|
-- Talent: Stunned.
|
||
|
|
-- https://wowhead.com/beta/spell=179057
|
||
|
|
chaos_nova = {
|
||
|
|
id = 179057,
|
||
|
|
duration = function () return talent.isolated_prey.enabled and active_enemies == 1 and 4 or 2 end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
chaos_theory = {
|
||
|
|
id = 390195,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
chaotic_blades = {
|
||
|
|
id = 337567,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
darkness = {
|
||
|
|
id = 196718,
|
||
|
|
duration = function () return pvptalent.cover_of_darkness.enabled and 10 or 8 end,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
death_sweep = {
|
||
|
|
id = 210152,
|
||
|
|
duration = 1,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
demon_soul = {
|
||
|
|
id = 347765,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
elysian_decree = { -- TODO: This aura determines sigil pop time.
|
||
|
|
id = 390163,
|
||
|
|
duration = function () return talent.quickened_sigils.enabled and 1 or 2 end,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
essence_break = {
|
||
|
|
id = 320338,
|
||
|
|
duration = 4,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = "dark_slash" -- Just in case.
|
||
|
|
},
|
||
|
1 year ago
|
-- Vengeful Retreat may be cast again.
|
||
|
|
evasive_action = {
|
||
|
|
id = 444929,
|
||
|
|
duration = 3.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- https://wowhead.com/beta/spell=198013
|
||
|
|
eye_beam = {
|
||
|
|
id = 198013,
|
||
|
|
duration = function () return 2 * ( 1 + 0.1 * talent.blind_fury.rank ) * haste end,
|
||
|
|
generate = function( t )
|
||
|
|
if buff.casting.up and buff.casting.v1 == 198013 then
|
||
|
|
t.applied = buff.casting.applied
|
||
|
|
t.duration = buff.casting.duration
|
||
|
|
t.expires = buff.casting.expires
|
||
|
|
t.stack = 1
|
||
|
|
t.caster = "player"
|
||
|
|
forecastResources( "fury" )
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
t.applied = 0
|
||
|
|
t.duration = class.auras.eye_beam.duration
|
||
|
|
t.expires = 0
|
||
|
|
t.stack = 0
|
||
|
|
t.caster = "nobody"
|
||
|
|
end,
|
||
|
|
tick_time = 0.2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Unleashing Fel.
|
||
|
|
-- https://wowhead.com/beta/spell=258925
|
||
|
|
fel_barrage = {
|
||
|
|
id = 258925,
|
||
|
2 years ago
|
duration = 8,
|
||
|
3 years ago
|
tick_time = 0.25,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Legendary.
|
||
|
|
fel_bombardment = {
|
||
|
|
id = 337849,
|
||
|
|
duration = 40,
|
||
|
|
max_stack = 5,
|
||
|
|
},
|
||
|
|
-- Legendary
|
||
|
|
fel_devastation = {
|
||
|
|
id = 333105,
|
||
|
|
duration = 2,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
furious_gaze = {
|
||
|
|
id = 343312,
|
||
|
|
duration = 12,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Talent: Stunned.
|
||
|
|
-- https://wowhead.com/beta/spell=211881
|
||
|
|
fel_eruption = {
|
||
|
|
id = 211881,
|
||
|
|
duration = 4,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Movement speed increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=389847
|
||
|
|
felfire_haste = {
|
||
|
|
id = 389847,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 338804
|
||
|
|
},
|
||
|
|
-- Branded, dealing $204021s1% less damage to $@auracaster$?s389220[ and taking $w2% more Fire damage from them][].
|
||
|
|
-- https://wowhead.com/beta/spell=207744
|
||
|
|
fiery_brand = {
|
||
|
|
id = 207744,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Battling a demon from the Theater of Pain...
|
||
|
|
-- https://wowhead.com/beta/spell=391430
|
||
|
|
fodder_to_the_flame = {
|
||
|
|
id = 391430,
|
||
|
2 years ago
|
duration = 25,
|
||
|
3 years ago
|
max_stack = 1,
|
||
|
2 years ago
|
copy = { 329554, 330910 }
|
||
|
3 years ago
|
},
|
||
|
|
-- The demon is linked to you.
|
||
|
|
fodder_to_the_flame_chase = {
|
||
|
|
id = 328605,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- This is essentially the countdown before the demon despawns (you can Imprison it for a long time).
|
||
|
|
fodder_to_the_flame_cooldown = {
|
||
|
|
id = 342357,
|
||
|
|
duration = 120,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Falling speed reduced.
|
||
|
|
-- https://wowhead.com/beta/spell=131347
|
||
|
|
glide = {
|
||
|
|
id = 131347,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Burning nearby enemies for $258922s1 $@spelldesc395020 damage every $t1 sec.$?a207548[ Movement speed increased by $w4%.][]$?a320331[ Armor increased by $w5%. Attackers suffer $@spelldesc395020 damage.][]
|
||
|
|
-- https://wowhead.com/beta/spell=258920
|
||
|
2 years ago
|
immolation_aura_1 = {
|
||
|
3 years ago
|
id = 258920,
|
||
|
|
duration = function() return talent.felfire_heart.enabled and 8 or 6 end,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
2 years ago
|
immolation_aura_2 = {
|
||
|
|
id = 427912,
|
||
|
|
duration = function() return talent.felfire_heart.enabled and 8 or 6 end,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
immolation_aura_3 = {
|
||
|
|
id = 427913,
|
||
|
|
duration = function() return talent.felfire_heart.enabled and 8 or 6 end,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
immolation_aura_4 = {
|
||
|
|
id = 427914,
|
||
|
|
duration = function() return talent.felfire_heart.enabled and 8 or 6 end,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
immolation_aura_5 = {
|
||
|
|
id = 427915,
|
||
|
|
duration = function() return talent.felfire_heart.enabled and 8 or 6 end,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
immolation_aura = {
|
||
|
|
alias = { "immolation_aura_1", "immolation_aura_2", "immolation_aura_3", "immolation_aura_4", "immolation_aura_5" },
|
||
|
|
aliasMode = "longest",
|
||
|
|
aliasType = "buff",
|
||
|
|
max_stack = 5,
|
||
|
|
},
|
||
|
3 years ago
|
-- Talent: Incapacitated.
|
||
|
|
-- https://wowhead.com/beta/spell=217832
|
||
|
|
imprison = {
|
||
|
|
id = 217832,
|
||
|
|
duration = 60,
|
||
|
|
mechanic = "sap",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
2 years ago
|
-- Damage done increased by $w1%.
|
||
|
|
inertia = {
|
||
|
|
id = 427641,
|
||
|
|
duration = 5,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
initiative = {
|
||
|
|
id = 391215,
|
||
|
|
duration = 5,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
inner_demon = {
|
||
|
|
id = 337313,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 390145
|
||
|
|
},
|
||
|
|
-- Talent: Movement speed reduced by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=213405
|
||
|
|
master_of_the_glaive = {
|
||
|
|
id = 213405,
|
||
|
|
duration = 6,
|
||
|
|
mechanic = "snare",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Chaos Strike and Blade Dance upgraded to $@spellname201427 and $@spellname210152. Haste increased by $w4%.$?s235893[ Versatility increased by $w5%.][]$?s204909[ Leech increased by $w3%.][]
|
||
|
|
-- https://wowhead.com/beta/spell=162264
|
||
|
|
metamorphosis = {
|
||
|
|
id = 162264,
|
||
|
|
duration = function () return 24 + ( pvptalent.demonic_origins.enabled and -15 or 0 ) end,
|
||
|
|
max_stack = 1,
|
||
|
|
meta = {
|
||
|
|
extended_by_demonic = function ()
|
||
|
|
return false -- disabled in 8.0: talent.demonic.enabled and ( buff.metamorphosis.up and buff.metamorphosis.duration % 15 > 0 and buff.metamorphosis.duration > ( action.eye_beam.cast + 8 ) )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
momentum = {
|
||
|
|
id = 208628,
|
||
|
2 years ago
|
duration = 6,
|
||
|
3 years ago
|
max_stack = 1,
|
||
|
|
},
|
||
|
1 year ago
|
-- Agility increased by $w1%.
|
||
|
|
monster_rising = {
|
||
|
|
id = 452550,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- Stunned.
|
||
|
|
-- https://wowhead.com/beta/spell=200166
|
||
|
|
metamorphosis_stun = {
|
||
|
|
id = 200166,
|
||
|
|
duration = 3,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Dazed.
|
||
|
|
-- https://wowhead.com/beta/spell=247121
|
||
|
|
metamorphosis_daze = {
|
||
|
|
id = 247121,
|
||
|
|
duration = 3,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
misery_in_defeat = {
|
||
|
|
id = 391369,
|
||
|
|
duration = 5,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Talent: Healing effects received reduced by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=356608
|
||
|
|
mortal_dance = {
|
||
|
|
id = 356608,
|
||
|
|
duration = 6,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Immune to damage and unable to attack. Movement speed increased by $s3%.
|
||
|
|
-- https://wowhead.com/beta/spell=196555
|
||
|
|
netherwalk = {
|
||
|
|
id = 196555,
|
||
|
|
duration = 6,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- $w3
|
||
|
|
pursuit_of_angriness = {
|
||
|
|
id = 452404,
|
||
|
|
duration = 0.0,
|
||
|
|
tick_time = 1.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
ragefire = {
|
||
|
|
id = 390192,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
rain_from_above_immune = {
|
||
|
|
id = 206803,
|
||
|
|
duration = 1,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = "rain_from_above_launch"
|
||
|
|
},
|
||
|
|
rain_from_above = { -- Gliding/floating.
|
||
|
|
id = 206804,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
reavers_glaive = {
|
||
|
|
id = 444686,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 2
|
||
|
|
},
|
||
|
3 years ago
|
restless_hunter = {
|
||
|
|
id = 390212,
|
||
|
|
duration = 12,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
2 years ago
|
-- Damage taken from Chaos Strike and Throw Glaive increased by $w1%.
|
||
|
3 years ago
|
serrated_glaive = {
|
||
|
|
id = 390155,
|
||
|
3 years ago
|
duration = 15,
|
||
|
1 year ago
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Taking $w1 Fire damage every $t1 sec.
|
||
|
|
set_fire_to_the_pain = {
|
||
|
|
id = 453286,
|
||
|
|
duration = 6.0,
|
||
|
|
tick_time = 1.0,
|
||
|
3 years ago
|
},
|
||
|
|
-- Movement slowed by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=204843
|
||
|
|
sigil_of_chains = {
|
||
|
|
id = 204843,
|
||
|
|
duration = function() return 6 + talent.extended_sigils.rank + ( talent.precise_sigils.enabled and 2 or 0 ) end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Suffering $w2 $@spelldesc395020 damage every $t2 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=204598
|
||
|
|
sigil_of_flame_dot = {
|
||
|
|
id = 204598,
|
||
|
|
duration = function() return ( talent.felfire_heart.enabled and 8 or 6 ) + talent.extended_sigils.rank + ( talent.precise_sigils.enabled and 2 or 0 ) end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Sigil of Flame is active.
|
||
|
|
-- https://wowhead.com/beta/spell=389810
|
||
|
|
sigil_of_flame = {
|
||
|
|
id = 389810,
|
||
|
|
duration = function () return talent.quickened_sigils.enabled and 1 or 2 end,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 204596
|
||
|
|
},
|
||
|
|
-- Talent: Disoriented.
|
||
|
|
-- https://wowhead.com/beta/spell=207685
|
||
|
|
sigil_of_misery_debuff = {
|
||
|
|
id = 207685,
|
||
|
1 year ago
|
duration = function() return 15 + talent.extended_sigils.rank + ( talent.precise_sigils.enabled and 2 or 0 ) end,
|
||
|
3 years ago
|
mechanic = "flee",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
sigil_of_misery = { -- TODO: Model placement pop.
|
||
|
|
id = 207684,
|
||
|
|
duration = function () return talent.quickened_sigils.enabled and 1 or 2 end,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Silenced.
|
||
|
|
-- https://wowhead.com/beta/spell=204490
|
||
|
|
sigil_of_silence_debuff = {
|
||
|
|
id = 204490,
|
||
|
|
duration = function() return 6 + talent.extended_sigils.rank + ( talent.precise_sigils.enabled and 2 or 0 ) end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
sigil_of_silence = { -- TODO: Model placement pop.
|
||
|
|
id = 202137,
|
||
|
|
duration = function () return talent.quickened_sigils.enabled and 1 or 2 end,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Consume to heal for $210042s1% of your maximum health.
|
||
|
|
-- https://wowhead.com/beta/spell=203795
|
||
|
|
soul_fragment = {
|
||
|
|
id = 203795,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Suffering $w1 Chaos damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=390181
|
||
|
2 years ago
|
soulscar = {
|
||
|
3 years ago
|
id = 390181,
|
||
|
|
duration = 6,
|
||
|
|
tick_time = 2,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Can see invisible and stealthed enemies. Can see enemies and treasures through physical barriers.
|
||
|
|
-- https://wowhead.com/beta/spell=188501
|
||
|
|
spectral_sight = {
|
||
|
|
id = 188501,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Mastery increased by ${$w1*$mas}.1%. ; Generating $453236s1 Fury every $t2 sec.
|
||
|
|
student_of_suffering = {
|
||
|
|
id = 453239,
|
||
|
|
duration = 8.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
tactical_retreat = {
|
||
|
|
id = 389890,
|
||
|
|
duration = 8,
|
||
|
|
tick_time = 1,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Suffering $w1 $@spelldesc395042 damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=345335
|
||
|
|
the_hunt_dot = {
|
||
|
|
id = 370969,
|
||
|
2 years ago
|
duration = function() return set_bonus.tier31_4pc > 0 and 12 or 6 end,
|
||
|
3 years ago
|
tick_time = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 345335
|
||
|
|
},
|
||
|
|
-- Talent: Marked by the Demon Hunter, converting $?c1[$345422s1%][$345422s2%] of the damage done to healing.
|
||
|
|
-- https://wowhead.com/beta/spell=370966
|
||
|
|
the_hunt = {
|
||
|
|
id = 370966,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 323802
|
||
|
|
},
|
||
|
|
the_hunt_root = {
|
||
|
|
id = 370970,
|
||
|
|
duration = 1.5,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 323996
|
||
|
|
},
|
||
|
1 year ago
|
-- Attack Speed increased by $w1%
|
||
|
|
thrill_of_the_fight = {
|
||
|
|
id = 442695,
|
||
|
|
duration = 20.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- Taunted.
|
||
|
|
-- https://wowhead.com/beta/spell=185245
|
||
|
|
torment = {
|
||
|
|
id = 185245,
|
||
|
|
duration = 3,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Suffering $w1 Chaos damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=258883
|
||
|
|
trail_of_ruin = {
|
||
|
|
id = 258883,
|
||
|
|
duration = 4,
|
||
|
|
tick_time = 1,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
unbound_chaos = {
|
||
|
|
id = 347462,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
2 years ago
|
vengeful_retreat_movement = {
|
||
|
|
duration = 1,
|
||
|
|
max_stack = 1,
|
||
|
|
generate = function( t )
|
||
|
|
if action.vengeful_retreat.lastCast > query_time - 1 then
|
||
|
|
t.applied = action.vengeful_retreat.lastCast
|
||
|
|
t.duration = 1
|
||
|
|
t.expires = action.vengeful_retreat.lastCast + 1
|
||
|
|
t.stack = 1
|
||
|
|
t.caster = "player"
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
t.applied = 0
|
||
|
|
t.duration = 1
|
||
|
|
t.expires = 0
|
||
|
|
t.stack = 0
|
||
|
|
t.caster = "nobody"
|
||
|
|
end,
|
||
|
|
},
|
||
|
3 years ago
|
-- Talent: Movement speed reduced by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=198813
|
||
|
|
vengeful_retreat = {
|
||
|
|
id = 198813,
|
||
|
|
duration = 3,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = "vengeful_retreat_snare"
|
||
|
|
},
|
||
|
1 year ago
|
-- Your next $?a212612[Chaos Strike]?s263642[Fracture][Shear] will deal $442507s1 additional Physical damage.
|
||
|
|
warblades_hunger = {
|
||
|
|
id = 442503,
|
||
|
|
duration = 30.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
|
||
|
2 years ago
|
hit_by_initiative = {
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
|
||
|
3 years ago
|
-- Conduit
|
||
|
|
exposed_wound = {
|
||
|
|
id = 339229,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- PvP Talents
|
||
|
|
chaotic_imprint_shadow = {
|
||
|
|
id = 356656,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
chaotic_imprint_nature = {
|
||
|
|
id = 356660,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
chaotic_imprint_arcane = {
|
||
|
|
id = 356658,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
chaotic_imprint_fire = {
|
||
|
|
id = 356661,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
chaotic_imprint_frost = {
|
||
|
|
id = 356659,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Conduit
|
||
|
|
demonic_parole = {
|
||
|
|
id = 339051,
|
||
|
|
duration = 12,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
glimpse = {
|
||
|
|
id = 354610,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
local sigils = setmetatable( {}, {
|
||
|
|
__index = function( t, k )
|
||
|
|
t[ k ] = 0
|
||
|
|
return t[ k ]
|
||
|
|
end
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterStateFunction( "create_sigil", function( sigil )
|
||
|
2 years ago
|
sigils[ sigil ] = query_time + activation_time
|
||
|
|
|
||
|
|
local effect = sigil == "elysian_dcreee" and "elysian_decree" or ( "sigil_of_" .. sigil )
|
||
|
|
applyDebuff( "target", effect )
|
||
|
|
debuff[ effect ].applied = debuff[ effect ].applied + 1
|
||
|
|
debuff[ effect ].expires = debuff[ effect ].expires + 1
|
||
|
3 years ago
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "soul_fragments", function ()
|
||
|
|
return buff.soul_fragments.stack
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateTable( "fragments", {
|
||
|
|
real = 0,
|
||
|
|
realTime = 0,
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterStateFunction( "queue_fragments", function( num, extraTime )
|
||
|
|
fragments.real = fragments.real + num
|
||
|
|
fragments.realTime = GetTime() + 1.25 + ( extraTime or 0 )
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateFunction( "purge_fragments", function()
|
||
|
|
fragments.real = 0
|
||
|
|
fragments.realTime = 0
|
||
|
|
end )
|
||
|
|
|
||
|
|
local last_darkness = 0
|
||
|
|
local last_metamorphosis = 0
|
||
|
|
local last_eye_beam = 0
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "darkness_applied", function ()
|
||
|
|
return max( class.abilities.darkness.lastCast, last_darkness )
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "metamorphosis_applied", function ()
|
||
|
|
return max( class.abilities.darkness.lastCast, last_metamorphosis )
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "eye_beam_applied", function ()
|
||
|
|
return max( class.abilities.eye_beam.lastCast, last_eye_beam )
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "extended_by_demonic", function ()
|
||
|
|
return buff.metamorphosis.up and buff.metamorphosis.extended_by_demonic
|
||
|
|
end )
|
||
|
|
|
||
|
|
local activation_time = function ()
|
||
|
|
return talent.quickened_sigils.enabled and 1 or 2
|
||
|
|
end
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "activation_time", activation_time )
|
||
|
|
|
||
|
|
local sigil_placed = function ()
|
||
|
|
return sigils.flame > query_time
|
||
|
|
end
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "sigil_placed", sigil_placed )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "meta_cd_multiplier", function ()
|
||
|
|
return 1
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
local furySpent = 0
|
||
|
|
|
||
|
|
local FURY = Enum.PowerType.Fury
|
||
|
|
local lastFury = -1
|
||
|
|
|
||
|
|
spec:RegisterUnitEvent( "UNIT_POWER_FREQUENT", "player", nil, function( event, unit, powerType )
|
||
|
|
if powerType == "FURY" and state.set_bonus.tier30_2pc > 0 then
|
||
|
|
local current = UnitPower( "player", FURY )
|
||
|
|
|
||
|
|
if current < lastFury - 3 then
|
||
|
|
furySpent = ( furySpent + lastFury - current )
|
||
|
|
end
|
||
|
|
|
||
|
|
lastFury = current
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "fury_spent", function ()
|
||
|
|
if set_bonus.tier30_2pc == 0 then return 0 end
|
||
|
|
return furySpent
|
||
|
|
end )
|
||
|
3 years ago
|
|
||
|
|
local queued_frag_modifier = 0
|
||
|
2 years ago
|
local initiative_actual, initiative_virtual = {}, {}
|
||
|
|
|
||
|
|
local death_events = {
|
||
|
|
UNIT_DIED = true,
|
||
|
|
UNIT_DESTROYED = true,
|
||
|
|
UNIT_DISSIPATES = true,
|
||
|
|
PARTY_KILL = true,
|
||
|
|
SPELL_INSTAKILL = true,
|
||
|
|
}
|
||
|
3 years ago
|
|
||
|
|
spec:RegisterHook( "COMBAT_LOG_EVENT_UNFILTERED", function( _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName )
|
||
|
|
if sourceGUID == GUID then
|
||
|
|
if subtype == "SPELL_CAST_SUCCESS" then
|
||
|
|
-- Fracture: Generate 2 frags.
|
||
|
|
if spellID == 263642 then
|
||
|
2 years ago
|
queue_fragments( 2 )
|
||
|
|
end
|
||
|
3 years ago
|
|
||
|
|
-- Shear: Generate 1 frag.
|
||
|
|
if spellID == 203782 then
|
||
|
2 years ago
|
queue_fragments( 1 )
|
||
|
3 years ago
|
end
|
||
|
|
|
||
|
2 years ago
|
if spellID == 198793 and talent.initiative.enabled then
|
||
|
|
wipe( initiative_actual )
|
||
|
|
end
|
||
|
3 years ago
|
|
||
|
|
elseif spellID == 203981 and fragments.real > 0 and ( subtype == "SPELL_AURA_APPLIED" or subtype == "SPELL_AURA_APPLIED_DOSE" ) then
|
||
|
|
fragments.real = fragments.real - 1
|
||
|
|
|
||
|
3 years ago
|
elseif state.set_bonus.tier30_2pc > 0 and subtype == "SPELL_AURA_APPLIED" and spellID == 408737 then
|
||
|
|
furySpent = max( 0, furySpent - 175 )
|
||
|
|
|
||
|
2 years ago
|
elseif state.talent.initiative.enabled and subtype == "SPELL_DAMAGE" then
|
||
|
|
initiative_actual[ destGUID ] = true
|
||
|
3 years ago
|
end
|
||
|
2 years ago
|
elseif destGUID == GUID and ( subtype == "SPELL_DAMAGE" or subtype == "SPELL_PERIODIC_DAMAGE" ) then
|
||
|
|
initiative_actual[ sourceGUID ] = true
|
||
|
|
|
||
|
|
elseif death_events[ subtype ] then
|
||
|
|
initiative_actual[ destGUID ] = nil
|
||
|
3 years ago
|
end
|
||
|
|
end, false )
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterEvent( "PLAYER_REGEN_ENABLED", function()
|
||
|
|
wipe( initiative_actual )
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterHook( "UNIT_ELIMINATED", function( id )
|
||
|
|
initiative_actual[ id ] = nil
|
||
|
|
end )
|
||
|
3 years ago
|
|
||
|
3 years ago
|
-- Gear Sets
|
||
|
|
spec:RegisterGear( "tier29", 200345, 200347, 200342, 200344, 200346 )
|
||
|
|
spec:RegisterAura( "seething_chaos", {
|
||
|
|
id = 394934,
|
||
|
|
duration = 6,
|
||
|
|
max_stack = 1
|
||
|
|
} )
|
||
|
3 years ago
|
|
||
|
3 years ago
|
-- Tier 30
|
||
|
|
spec:RegisterGear( "tier30", 202527, 202525, 202524, 202523, 202522 )
|
||
|
|
-- 2 pieces (Havoc) : Every 175 Fury you spend, gain Seething Fury, increasing your Agility by 8% for 6 sec.
|
||
|
|
-- TODO: Track Fury spent toward Seething Fury. New expressions: seething_fury_threshold, seething_fury_spent, seething_fury_deficit.
|
||
|
|
spec:RegisterAura( "seething_fury", {
|
||
|
|
id = 408737,
|
||
|
|
duration = 6,
|
||
|
|
max_stack = 1
|
||
|
|
} )
|
||
|
|
-- 4 pieces (Havoc) : Each time you gain Seething Fury, gain 15 Fury and the damage of your next Eye Beam is increased by 15%, stacking 5 times.
|
||
|
|
spec:RegisterAura( "seething_potential", {
|
||
|
|
id = 408754,
|
||
|
|
duration = 60,
|
||
|
|
max_stack = 5
|
||
|
|
} )
|
||
|
3 years ago
|
|
||
|
2 years ago
|
spec:RegisterGear( "tier31", 207261, 207262, 207263, 207264, 207266, 217228, 217230, 217226, 217227, 217229 )
|
||
|
2 years ago
|
-- (2) Blade Dance automatically triggers Throw Glaive on your primary target for $s3% damage and each slash has a $s2% chance to Throw Glaive an enemy for $s1% damage.
|
||
|
|
-- (4) Throw Glaive reduces the remaining cooldown of The Hunt by ${$s1/1000}.1 sec, and The Hunt's damage over time effect lasts ${$s2/1000} sec longer.
|
||
|
|
|
||
|
3 years ago
|
|
||
|
2 years ago
|
local sigil_types = {
|
||
|
|
chains = "sigil_of_chains" ,
|
||
|
|
flame = "sigil_of_flame" ,
|
||
|
|
misery = "sigil_of_misery" ,
|
||
|
|
silence = "sigil_of_silence",
|
||
|
1 year ago
|
spite = "sigil_of_spite",
|
||
|
2 years ago
|
elysian_decree = "elysian_decree"
|
||
|
|
}
|
||
|
3 years ago
|
|
||
|
|
spec:RegisterHook( "reset_precast", function ()
|
||
|
|
last_metamorphosis = nil
|
||
|
|
last_infernal_strike = nil
|
||
|
|
|
||
|
2 years ago
|
wipe( initiative_virtual )
|
||
|
|
active_dot.hit_by_initiative = 0
|
||
|
|
|
||
|
|
for k, v in pairs( initiative_actual ) do
|
||
|
|
initiative_virtual[ k ] = v
|
||
|
|
|
||
|
|
if k == target.unit then
|
||
|
|
applyDebuff( "target", "hit_by_initiative" )
|
||
|
|
else
|
||
|
|
active_dot.hit_by_initiative = active_dot.hit_by_initiative + 1
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Unbound Chaos effect remains even after the buff falls off, so we'll reapply the buff whenever Immo Aura has been used more recently than Fel Rush.
|
||
|
|
if talent.unbound_chaos.enabled and buff.unbound_chaos.remains < gcd.max and action.immolation_aura.lastCast > action.fel_rush.lastCast then
|
||
|
|
applyBuff( "unbound_chaos", nil, gcd.max )
|
||
|
|
end
|
||
|
|
|
||
|
|
for s, a in ipairs( sigil_types ) do
|
||
|
|
local activation = ( action[ a ].lastCast or 0 ) + ( talent.quickened_sigils.enabled and 2 or 1 )
|
||
|
|
if activation > now then sigils[ s ] = activation
|
||
|
|
else sigils[ s ] = 0 end
|
||
|
3 years ago
|
end
|
||
|
|
|
||
|
|
last_darkness = 0
|
||
|
|
last_metamorphosis = 0
|
||
|
|
last_eye_beam = 0
|
||
|
|
|
||
|
|
local rps = 0
|
||
|
|
|
||
|
|
if equipped.convergence_of_fates then
|
||
|
|
rps = rps + ( 3 / ( 60 / 4.35 ) )
|
||
|
|
end
|
||
|
|
|
||
|
|
if equipped.delusions_of_grandeur then
|
||
|
|
-- From SimC model, 1/13/2018.
|
||
|
|
local fps = 10.2 + ( talent.demonic.enabled and 1.2 or 0 )
|
||
|
|
|
||
|
|
-- SimC uses base haste, we'll use current since we recalc each time.
|
||
|
|
fps = fps / haste
|
||
|
|
|
||
|
|
-- Chaos Strike accounts for most Fury expenditure.
|
||
|
|
fps = fps + ( ( fps * 0.9 ) * 0.5 * ( 40 / 100 ) )
|
||
|
|
|
||
|
|
rps = rps + ( fps / 30 ) * ( 1 )
|
||
|
|
end
|
||
|
|
|
||
|
|
meta_cd_multiplier = 1 / ( 1 + rps )
|
||
|
|
|
||
|
|
fury_spent = nil
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterHook( "runHandler", function( action )
|
||
|
|
local ability = class.abilities[ action ]
|
||
|
|
|
||
|
|
if ability.startsCombat and not debuff.hit_by_initiative.up then
|
||
|
|
applyBuff( "initiative" )
|
||
|
|
applyDebuff( "target", "hit_by_initiative" )
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
spec:RegisterHook( "advance_end", function( time )
|
||
|
|
if query_time - time < sigils.flame and query_time >= sigils.flame then
|
||
|
|
-- SoF should've applied.
|
||
|
|
applyDebuff( "target", "sigil_of_flame", debuff.sigil_of_flame.duration - ( query_time - sigils.flame ) )
|
||
|
|
active_dot.sigil_of_flame = active_enemies
|
||
|
|
sigils.flame = 0
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
spec:RegisterHook( "spend", function( amt, resource )
|
||
|
|
if set_bonus.tier30_2pc == 0 or amt < 0 or resource ~= "fury" then return end
|
||
|
|
|
||
|
|
fury_spent = fury_spent + amt
|
||
|
|
if fury_spent > 175 then
|
||
|
|
fury_spent = fury_spent - 175
|
||
|
|
applyBuff( "seething_fury" )
|
||
|
|
if set_bonus.tier30_4pc > 0 then
|
||
|
|
gain( 15, "fury" )
|
||
|
|
applyBuff( "seething_potential" )
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
|
||
|
|
spec:RegisterGear( "tier19", 138375, 138376, 138377, 138378, 138379, 138380 )
|
||
|
|
spec:RegisterGear( "tier20", 147130, 147132, 147128, 147127, 147129, 147131 )
|
||
|
|
spec:RegisterGear( "tier21", 152121, 152123, 152119, 152118, 152120, 152122 )
|
||
|
|
spec:RegisterAura( "havoc_t21_4pc", {
|
||
|
|
id = 252165,
|
||
|
|
duration = 8
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterGear( "class", 139715, 139716, 139717, 139718, 139719, 139720, 139721, 139722 )
|
||
|
|
|
||
|
|
spec:RegisterGear( "convergence_of_fates", 140806 )
|
||
|
|
|
||
|
|
spec:RegisterGear( "achor_the_eternal_hunger", 137014 )
|
||
|
|
spec:RegisterGear( "anger_of_the_halfgiants", 137038 )
|
||
|
|
spec:RegisterGear( "cinidaria_the_symbiote", 133976 )
|
||
|
|
spec:RegisterGear( "delusions_of_grandeur", 144279 )
|
||
|
|
spec:RegisterGear( "kiljaedens_burning_wish", 144259 )
|
||
|
|
spec:RegisterGear( "loramus_thalipedes_sacrifice", 137022 )
|
||
|
|
spec:RegisterGear( "moarg_bionic_stabilizers", 137090 )
|
||
|
|
spec:RegisterGear( "prydaz_xavarics_magnum_opus", 132444 )
|
||
|
|
spec:RegisterGear( "raddons_cascading_eyes", 137061 )
|
||
|
|
spec:RegisterGear( "sephuzs_secret", 132452 )
|
||
|
|
spec:RegisterGear( "the_sentinels_eternal_refuge", 146669 )
|
||
|
|
|
||
|
|
spec:RegisterGear( "soul_of_the_slayer", 151639 )
|
||
|
|
spec:RegisterGear( "chaos_theory", 151798 )
|
||
|
|
spec:RegisterGear( "oblivions_embrace", 151799 )
|
||
|
|
|
||
|
|
|
||
|
|
do
|
||
|
|
local wasWarned = false
|
||
|
|
|
||
|
|
spec:RegisterEvent( "PLAYER_REGEN_DISABLED", function ()
|
||
|
|
if state.talent.demon_blades.enabled and not state.settings.demon_blades_acknowledged and not wasWarned then
|
||
|
|
Hekili:Notify( "|cFFFF0000WARNING!|r Demon Blades cannot be forecasted.\nSee /hekili > Havoc for more information." )
|
||
|
|
wasWarned = true
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
end
|
||
|
|
|
||
|
|
-- SimC documentation reflects that there are still the following expressions, which appear unused:
|
||
|
|
-- greater_soul_fragments, lesser_soul_fragments, blade_dance_worth_using, death_sweep_worth_using
|
||
|
|
-- They are not implemented becuase that documentation is from mid-2016.
|
||
|
|
|
||
|
|
|
||
|
|
-- Abilities
|
||
|
|
spec:RegisterAbilities( {
|
||
|
|
annihilation = {
|
||
|
|
id = 201427,
|
||
|
|
known = 162794,
|
||
|
|
flash = { 201427, 162794 },
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = function () return 40 - buff.thirsting_blades.stack end,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
texture = 1303275,
|
||
|
|
|
||
|
|
bind = "chaos_strike",
|
||
|
|
buff = "metamorphosis",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
removeBuff( "thirsting_blades" )
|
||
|
|
removeBuff( "inner_demon" )
|
||
|
1 year ago
|
if buff.rending_strike.up then applyDebuff( "target", "rending_strike" ) end
|
||
|
3 years ago
|
if azerite.thirsting_blades.enabled then applyBuff( "thirsting_blades", nil, 0 ) end
|
||
|
|
|
||
|
|
if buff.chaotic_blades.up then gain( 20, "fury" ) end -- legendary
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Strike $?a206416[your primary target for $<firstbloodDmg> Chaos damage and ][]all nearby enemies for $<baseDmg> Physical damage$?s320398[, and increase your chance to dodge by $193311s1% for $193311d.][. Deals reduced damage beyond $199552s1 targets.]
|
||
|
|
blade_dance = {
|
||
|
|
id = 188499,
|
||
|
|
flash = { 188499, 210152 },
|
||
|
|
cast = 0,
|
||
|
|
cooldown = function() return ( level > 21 and 10 or 15 ) * haste end,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
spend = 35,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
bind = "death_sweep",
|
||
|
|
nobuff = "metamorphosis",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "blade_dance" )
|
||
|
1 year ago
|
removeBuff( "restless_hunter" )
|
||
|
|
removeBuff( "glaive_flurry" )
|
||
|
3 years ago
|
setCooldown( "death_sweep", action.blade_dance.cooldown )
|
||
|
|
if talent.chaos_theory.enabled then applyBuff( "chaos_theory" ) end
|
||
|
|
if talent.cycle_of_hatred.enabled and cooldown.eye_beam.remains > 0 then reduceCooldown( "eye_beam", 0.5 * talent.cycle_of_hatred.rank ) end
|
||
|
2 years ago
|
if set_bonus.tier31_2pc > 0 then spec.abilities.throw_glaive.handler() end
|
||
|
|
if pvptalent.mortal_dance.enabled or talent.mortal_dance.enabled then applyDebuff( "target", "mortal_dance" ) end
|
||
|
3 years ago
|
end,
|
||
|
|
|
||
|
|
copy = "blade_dance1"
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Increases your chance to dodge by $212800s2% and reduces all damage taken by $212800s3% for $212800d.
|
||
|
|
blur = {
|
||
|
|
id = 198589,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = function () return 60 + ( conduit.fel_defender.mod * 0.001 ) end,
|
||
|
|
gcd = "off",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "defensives",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "blur" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Unleash an eruption of fel energy, dealing $s2 Chaos damage and stunning all nearby enemies for $d.$?s320412[ Each enemy stunned by Chaos Nova has a $s3% chance to generate a Lesser Soul Fragment.][]
|
||
|
|
chaos_nova = {
|
||
|
|
id = 179057,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = 45,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
2 years ago
|
spend = 25,
|
||
|
3 years ago
|
spendType = "fury",
|
||
|
|
|
||
|
|
talent = "chaos_nova",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "chaos_nova" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Slice your target for ${$222031s1+$199547s1} Chaos damage. Chaos Strike has a ${$min($197125h,100)}% chance to refund $193840s1 Fury.
|
||
|
|
chaos_strike = {
|
||
|
|
id = 162794,
|
||
|
|
flash = { 162794, 201427 },
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chaos",
|
||
|
|
|
||
|
|
spend = function () return 40 - buff.thirsting_blades.stack end,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
bind = "annihilation",
|
||
|
|
nobuff = "metamorphosis",
|
||
|
|
|
||
|
|
cycle = function () return ( talent.burning_wound.enabled or legendary.burning_wound.enabled ) and "burning_wound" or nil end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
removeBuff( "thirsting_blades" )
|
||
|
|
removeBuff( "inner_demon" )
|
||
|
1 year ago
|
if buff.rending_strike.up then
|
||
|
|
applyDebuff( "target", "reavers_mark" )
|
||
|
|
removeBuff( "rending_strike" )
|
||
|
|
end
|
||
|
3 years ago
|
if azerite.thirsting_blades.enabled then applyBuff( "thirsting_blades", nil, 0 ) end
|
||
|
|
if talent.burning_wound.enabled then applyDebuff( "target", "burning_wound" ) end
|
||
|
|
if buff.chaos_theory.up then
|
||
|
|
gain( 20, "fury" )
|
||
|
|
removeBuff( "chaos_theory" )
|
||
|
|
end
|
||
|
|
removeBuff( "chaotic_blades" )
|
||
|
|
if talent.cycle_of_hatred.enabled and cooldown.eye_beam.remains > 0 then reduceCooldown( "eye_beam", 0.5 * talent.cycle_of_hatred.rank ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Consume $m1 beneficial Magic effect removing it from the target$?s320313[ and granting you $s2 Fury][].
|
||
|
|
consume_magic = {
|
||
|
|
id = 278326,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 10,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
2 years ago
|
talent = "consume_magic",
|
||
|
3 years ago
|
|
||
|
|
toggle = "interrupts",
|
||
|
|
|
||
|
|
usable = function () return buff.dispellable_magic.up end,
|
||
|
|
handler = function ()
|
||
|
|
removeBuff( "dispellable_magic" )
|
||
|
|
if talent.swallowed_anger.enabled then gain( 20, "fury" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
2 years ago
|
-- Summons darkness around you in a$?a357419[ 12 yd][n 8 yd] radius, granting friendly targets a $209426s2% chance to avoid all damage from an attack. Lasts $d.; Chance to avoid damage increased by $s3% when not in a raid.
|
||
|
3 years ago
|
darkness = {
|
||
|
|
id = 196718,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 300,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
talent = "darkness",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "defensives",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
last_darkness = query_time
|
||
|
|
applyBuff( "darkness" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
death_sweep = {
|
||
|
|
id = 210152,
|
||
|
|
known = 188499,
|
||
|
|
flash = { 210152, 188499 },
|
||
|
|
cast = 0,
|
||
|
|
cooldown = function() return 9 * haste end,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = 35,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
texture = 1309099,
|
||
|
|
|
||
|
|
bind = "blade_dance",
|
||
|
|
buff = "metamorphosis",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "death_sweep" )
|
||
|
1 year ago
|
removeBuff( "restless_hunter" )
|
||
|
3 years ago
|
setCooldown( "blade_dance", action.death_sweep.cooldown )
|
||
|
1 year ago
|
if buff.rending_strike.up then
|
||
|
|
applyDebuff( "target", "reavers_mark" )
|
||
|
|
removeBuff( "rending_strike" )
|
||
|
|
end
|
||
|
3 years ago
|
|
||
|
2 years ago
|
if talent.cycle_of_hatred.enabled and cooldown.eye_beam.remains > 0 then reduceCooldown( "eye_beam", 0.5 * talent.cycle_of_hatred.rank ) end
|
||
|
|
if set_bonus.tier31_2pc > 0 then spec.abilities.throw_glaive.handler() end
|
||
|
3 years ago
|
if pvptalent.mortal_dance.enabled or talent.mortal_dance.enabled then
|
||
|
|
applyDebuff( "target", "mortal_dance" )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Quickly attack for $s2 Physical damage. |cFFFFFFFFGenerates $?a258876[${$m3+$258876s3} to ${$M3+$258876s4}][$m3 to $M3] Fury.|r
|
||
|
|
demons_bite = {
|
||
|
|
id = 162243,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
spend = function () return talent.insatiable_hunger.enabled and -25 or -20 end,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
notalent = "demon_blades",
|
||
|
|
cycle = function () return ( talent.burning_wound.enabled or legendary.burning_wound.enabled ) and "burning_wound" or nil end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
if talent.burning_wound.enabled then applyDebuff( "target", "burning_wound" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Interrupts the enemy's spellcasting and locks them from that school of magic for $d.|cFFFFFFFF$?s183782[ Generates $218903s1 Fury on a successful interrupt.][]|r
|
||
|
|
disrupt = {
|
||
|
|
id = 183752,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 15,
|
||
|
|
gcd = "off",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
toggle = "interrupts",
|
||
|
|
|
||
|
|
debuff = "casting",
|
||
|
|
readyTime = state.timeToInterrupt,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
interrupt()
|
||
|
|
if talent.disrupting_fury.enabled then gain( 30, "fury" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Slash all enemies in front of you for $s1 Chaos damage, and increase the damage your Chaos Strike and Blade Dance deal to them by $320338s1% for $320338d. Deals reduced damage beyond $s2 targets.
|
||
|
|
essence_break = {
|
||
|
|
id = 258860,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 40,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
talent = "essence_break",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "essence_break" )
|
||
|
|
active_dot.essence_break = max( 1, active_enemies )
|
||
|
|
end,
|
||
|
|
|
||
|
|
copy = "dark_slash"
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- Blasts all enemies in front of you,$?s320415[ dealing guaranteed critical strikes][] for up to $<dmg> Chaos damage over $d. Deals reduced damage beyond $s5 targets.$?s343311[; When Eye Beam finishes fully channeling, your Haste is increased by an additional $343312s1% for $343312d.][]
|
||
|
3 years ago
|
eye_beam = {
|
||
|
|
id = 198013,
|
||
|
|
cast = function () return ( talent.blind_fury.enabled and 3 or 2 ) * haste end,
|
||
|
|
channeled = true,
|
||
|
|
cooldown = 40,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
spend = 30,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
talent = "eye_beam",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
start = function ()
|
||
|
|
last_eye_beam = query_time
|
||
|
|
|
||
|
|
applyBuff( "eye_beam" )
|
||
|
3 years ago
|
removeBuff( "seething_potential" )
|
||
|
3 years ago
|
|
||
|
|
if talent.demonic.enabled then
|
||
|
|
if buff.metamorphosis.up then
|
||
|
|
buff.metamorphosis.duration = buff.metamorphosis.remains + 8
|
||
|
|
buff.metamorphosis.expires = buff.metamorphosis.expires + 8
|
||
|
|
else
|
||
|
|
applyBuff( "metamorphosis", action.eye_beam.cast + 8 )
|
||
|
|
buff.metamorphosis.duration = action.eye_beam.cast + 8
|
||
|
|
stat.haste = stat.haste + 25
|
||
|
2 years ago
|
|
||
|
|
if talent.inner_demon.enabled then
|
||
|
|
applyBuff( "inner_demon" )
|
||
|
|
end
|
||
|
3 years ago
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if pvptalent.isolated_prey.enabled and active_enemies == 1 then
|
||
|
|
applyDebuff( "target", "isolated_prey" )
|
||
|
|
end
|
||
|
|
|
||
|
|
-- This is likely repeated per tick but it's not worth the CPU overhead to model each tick.
|
||
|
|
if legendary.agony_gaze.enabled and debuff.sinful_brand.up then
|
||
|
|
debuff.sinful_brand.expires = debuff.sinful_brand.expires + 0.75
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
|
||
|
|
finish = function ()
|
||
|
|
if talent.furious_gaze.enabled then applyBuff( "furious_gaze" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Unleash a torrent of Fel energy over $d, inflicting ${(($d/$t1)+1)*$258926s1} Chaos damage to all enemies within $258926A1 yds. Deals reduced damage beyond $258926s2 targets.
|
||
|
|
fel_barrage = {
|
||
|
|
id = 258925,
|
||
|
|
cast = 3,
|
||
|
|
channeled = true,
|
||
|
2 years ago
|
cooldown = 90,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
2 years ago
|
spend = 10,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
3 years ago
|
talent = "fel_barrage",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
2 years ago
|
handler = function ()
|
||
|
|
applyBuff( "fel_barrage" )
|
||
|
3 years ago
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
2 years ago
|
-- Impales the target for $s1 Chaos damage and stuns them for $d.
|
||
|
3 years ago
|
fel_eruption = {
|
||
|
|
id = 211881,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 30,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
spend = 10,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "fel_eruption" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
2 years ago
|
|
||
|
|
fel_lance = {
|
||
|
|
id = 206966,
|
||
|
|
cast = 1,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
pvptalent = "rain_from_above",
|
||
|
|
buff = "rain_from_above",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
},
|
||
|
|
|
||
|
3 years ago
|
-- Rush forward, incinerating anything in your path for $192611s1 Chaos damage.
|
||
|
|
fel_rush = {
|
||
|
|
id = 195072,
|
||
|
|
cast = 0,
|
||
|
|
charges = function() return talent.blazing_path.enabled and 2 or nil end,
|
||
|
|
cooldown = function () return ( legendary.erratic_fel_core.enabled and 7 or 10 ) * ( 1 - 0.1 * talent.erratic_felheart.rank ) end,
|
||
|
|
recharge = function () return talent.blazing_path.enabled and ( ( legendary.erratic_fel_core.enabled and 7 or 10 ) * ( 1 - 0.1 * talent.erratic_felheart.rank ) ) or nil end,
|
||
|
|
gcd = "off",
|
||
|
2 years ago
|
icd = 0.5,
|
||
|
3 years ago
|
school = "physical",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
nodebuff = "rooted",
|
||
|
|
|
||
|
|
readyTime = function ()
|
||
|
|
if prev[1].fel_rush then return 3600 end
|
||
|
|
if ( settings.fel_rush_charges or 1 ) == 0 then return end
|
||
|
|
return ( ( 1 + ( settings.fel_rush_charges or 1 ) ) - cooldown.fel_rush.charges_fractional ) * cooldown.fel_rush.recharge
|
||
|
|
end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
setDistance( 5 )
|
||
|
|
setCooldown( "global_cooldown", 0.25 )
|
||
|
2 years ago
|
if buff.unbound_chaos.up then
|
||
|
|
removeBuff( "unbound_chaos" )
|
||
|
|
if talent.inertia.enabled then applyBuff( "inertia" ) end
|
||
|
|
end
|
||
|
3 years ago
|
if cooldown.vengeful_retreat.remains < 1 then setCooldown( "vengeful_retreat", 1 ) end
|
||
|
|
if talent.momentum.enabled then applyBuff( "momentum" ) end
|
||
|
|
if active_enemies == 1 and talent.isolated_prey.enabled then gain( 25, "fury" ) end
|
||
|
|
if conduit.felfire_haste.enabled then applyBuff( "felfire_haste" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Charge to your target and deal $213243sw2 $@spelldesc395020 damage. $?s203513[Shear has a chance to reset the cooldown of Felblade. |cFFFFFFFFGenerates $213243s3 Fury.|r]?a203555[Demon Blades has a chance to reset the cooldown of Felblade. |cFFFFFFFFGenerates $213243s3 Fury.|r][Demon's Bite has a chance to reset the cooldown of Felblade. |cFFFFFFFFGenerates $213243s3 Fury.|r]
|
||
|
|
felblade = {
|
||
|
|
id = 232893,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 15,
|
||
|
|
hasteCD = true,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
spend = -40,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
talent = "felblade",
|
||
|
|
startsCombat = true,
|
||
|
|
nodebuff = "rooted",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
setDistance( 5 )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Launch two demonic glaives in a whirlwind of energy, causing ${14*$342857s1} Chaos damage over $d to all nearby enemies. Deals reduced damage beyond $s2 targets.
|
||
|
|
glaive_tempest = {
|
||
|
|
id = 342817,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = 25,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "magic",
|
||
|
|
|
||
|
|
spend = 30,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
talent = "glaive_tempest",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
if talent.cycle_of_hatred.enabled and cooldown.eye_beam.remains > 0 then reduceCooldown( "eye_beam", 0.5 * talent.cycle_of_hatred.rank ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Engulf yourself in flames, $?a320364 [instantly causing $258921s1 $@spelldesc395020 damage to enemies within $258921A1 yards and ][]radiating ${$258922s1*$d} $@spelldesc395020 damage over $d.$?s320374[ |cFFFFFFFFGenerates $<havocTalentFury> Fury over $d.|r][]$?(s212612 & !s320374)[ |cFFFFFFFFGenerates $<havocFury> Fury.|r][]$?s212613[ |cFFFFFFFFGenerates $<vengeFury> Fury over $d.|r][]
|
||
|
|
immolation_aura = {
|
||
|
|
id = 258920,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = function() return 30 * haste end,
|
||
|
|
charges = function()
|
||
|
|
if talent.a_fire_inside.enabled then return 2 end
|
||
|
|
end,
|
||
|
2 years ago
|
recharge = function()
|
||
|
2 years ago
|
if talent.a_fire_inside.enabled then return 30 * haste end
|
||
|
2 years ago
|
end,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = -20,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
2 years ago
|
startsCombat = false,
|
||
|
3 years ago
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "immolation_aura" )
|
||
|
|
if talent.unbound_chaos.enabled then applyBuff( "unbound_chaos" ) end
|
||
|
|
if talent.ragefire.enabled then applyBuff( "ragefire" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Imprisons a demon, beast, or humanoid, incapacitating them for $d. Damage will cancel the effect. Limit 1.
|
||
|
|
imprison = {
|
||
|
|
id = 217832,
|
||
|
|
cast = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
talent = "imprison",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "imprison" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Leap into the air and land with explosive force, dealing $200166s2 Chaos damage to enemies within 8 yds, and stunning them for $200166d. Players are Dazed for $247121d instead. Upon landing, you are transformed into a hellish demon for $162264d, $?s320645[immediately resetting the cooldown of your Eye Beam and Blade Dance abilities, ][]greatly empowering your Chaos Strike and Blade Dance abilities and gaining $162264s4% Haste$?(s235893&s204909)[, $162264s5% Versatility, and $162264s3% Leech]?(s235893&!s204909[ and $162264s5% Versatility]?(s204909&!s235893)[ and $162264s3% Leech][].
|
||
|
|
metamorphosis = {
|
||
|
|
id = 191427,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = function () return ( 180 - ( talent.rush_of_chaos.enabled and 30 or 0 ) ) * ( essence.vision_of_perfection.enabled and 0.87 or 1 ) - ( pvptalent.demonic_origins.enabled and 120 or 0 ) end,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "metamorphosis" )
|
||
|
|
last_metamorphosis = query_time
|
||
|
|
|
||
|
|
setDistance( 5 )
|
||
|
|
|
||
|
|
if IsSpellKnownOrOverridesKnown( 317009 ) then
|
||
|
|
applyDebuff( "target", "sinful_brand" )
|
||
|
|
active_dot.sinful_brand = active_enemies
|
||
|
|
end
|
||
|
|
|
||
|
|
if level > 19 then stat.haste = stat.haste + 25 end
|
||
|
|
|
||
|
|
if azerite.chaotic_transformation.enabled or talent.chaotic_transformation.enabled then
|
||
|
|
setCooldown( "eye_beam", 0 )
|
||
|
|
setCooldown( "blade_dance", 0 )
|
||
|
|
setCooldown( "death_sweep", 0 )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
|
||
|
|
meta = {
|
||
|
|
adjusted_remains = function ()
|
||
|
|
--[[ if level < 116 and ( equipped.delusions_of_grandeur or equipped.convergeance_of_fates ) then
|
||
|
|
return cooldown.metamorphosis.remains * meta_cd_multiplier
|
||
|
|
end ]]
|
||
|
|
|
||
|
|
return cooldown.metamorphosis.remains
|
||
|
|
end
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Slip into the nether, increasing movement speed by $s3% and becoming immune to damage, but unable to attack. Lasts $d.
|
||
|
|
netherwalk = {
|
||
|
|
id = 196555,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 180,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
talent = "netherwalk",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "interrupts",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "netherwalk" )
|
||
|
|
setCooldown( "global_cooldown", buff.netherwalk.remains )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
rain_from_above = {
|
||
|
|
id = 206803,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 60,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
pvptalent = "rain_from_above",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
texture = 1380371,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "rain_from_above" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
reverse_magic = {
|
||
|
|
id = 205604,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 60,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
-- toggle = "cooldowns",
|
||
|
|
pvptalent = "reverse_magic",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
texture = 1380372,
|
||
|
|
|
||
|
|
debuff = "reversible_magic",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
if debuff.reversible_magic.up then removeDebuff( "player", "reversible_magic" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
-- Talent: Place a Sigil of Flame at your location that activates after $d. Deals $204598s1 Fire damage, and an additional $204598o3 Fire damage over $204598d, to all enemies affected by the sigil. |CFFffffffGenerates $389787s1 Fury.|R
|
||
|
|
sigil_of_flame = {
|
||
|
|
id = function ()
|
||
|
|
if talent.precise_sigils.enabled then return 389810 end
|
||
|
2 years ago
|
if talent.concentrated_sigils.enabled then return 204513 end -- TODO: Remove?
|
||
|
3 years ago
|
return 204596
|
||
|
|
end,
|
||
|
|
known = 204596,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = 30,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
spend = -30,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
sigil_placed = function() return sigil_placed end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
create_sigil( "flame" )
|
||
|
|
end,
|
||
|
|
|
||
|
|
copy = { 204596, 204513 }
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Place a Sigil of Misery at your location that activates after $d. Causes all enemies affected by the sigil to cower in fear. Targets are disoriented for $207685d.
|
||
|
|
sigil_of_misery = {
|
||
|
|
id = function ()
|
||
|
|
if talent.precise_sigils.enabled then return 389813 end
|
||
|
|
if talent.concentrated_sigils.enabled then return 202140 end
|
||
|
|
return 207684
|
||
|
|
end,
|
||
|
|
known = 207684,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = function () return 120 * ( pvptalent.sigil_mastery.enabled and 0.75 or 1 ) end,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
talent = "sigil_of_misery",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = function()
|
||
|
|
if talent.misery_in_defeat.enabled then return "cooldowns" end
|
||
|
|
return "interrupts"
|
||
|
|
end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
create_sigil( "misery" )
|
||
|
|
end,
|
||
|
|
|
||
|
|
copy = { 389813, 207684, 202140 }
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- Place a demonic sigil at the target location that activates after $d.; Detonates to deal $389860s1 Chaos damage and shatter up to $s3 Lesser Soul Fragments from
|
||
|
|
sigil_of_spite = {
|
||
|
|
id = 390163,
|
||
|
|
cast = 0.0,
|
||
|
|
cooldown = function() return 60 * ( pvptalent.sigil_mastery.enabled and 0.75 or 1 ) end,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
talent = "sigil_of_spite",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
sigil_placed = function() return sigil_placed end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
create_sigil( "spite" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
3 years ago
|
-- Allows you to see enemies and treasures through physical barriers, as well as enemies that are stealthed and invisible. Lasts $d. Attacking or taking damage disrupts the sight.
|
||
|
|
spectral_sight = {
|
||
|
|
id = 188501,
|
||
|
|
cast = 0,
|
||
|
2 years ago
|
cooldown = 30,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "spectral_sight" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent / Covenant (Night Fae): Charge to your target, striking them for $370966s1 $@spelldesc395042 damage, rooting them in place for $370970d and inflicting $370969o1 $@spelldesc395042 damage over $370969d to up to $370967s2 enemies in your path. The pursuit invigorates your soul, healing you for $?c1[$370968s1%][$370968s2%] of the damage you deal to your Hunt target for $370966d.
|
||
|
|
the_hunt = {
|
||
|
|
id = function() return talent.the_hunt.enabled and 370965 or 323639 end,
|
||
|
|
cast = 1,
|
||
|
|
cooldown = function() return talent.the_hunt.enabled and 90 or 180 end,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "nature",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
toggle = "cooldowns",
|
||
|
|
nodebuff = "rooted",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "the_hunt" )
|
||
|
|
applyDebuff( "target", "the_hunt_dot" )
|
||
|
|
setDistance( 5 )
|
||
|
|
|
||
|
|
if talent.momentum.enabled then applyBuff( "momentum" ) end
|
||
|
|
|
||
|
|
if legendary.blazing_slaughter.enabled then
|
||
|
|
applyBuff( "immolation_aura" )
|
||
|
|
applyBuff( "blazing_slaughter" )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
|
||
|
|
copy = { 370965, 323639 }
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Throw a demonic glaive at the target, dealing $337819s1 Physical damage. The glaive can ricochet to $?$s320386[${$337819x1-1} additional enemies][an additional enemy] within 10 yards.
|
||
|
|
throw_glaive = {
|
||
|
1 year ago
|
id = function() return buff.reavers_glaive.up and 442294 or 185123 end,
|
||
|
|
known = 185123,
|
||
|
3 years ago
|
cast = 0,
|
||
|
2 years ago
|
charges = function () return talent.champion_of_the_glaive.enabled and 2 or nil end,
|
||
|
3 years ago
|
cooldown = 9,
|
||
|
2 years ago
|
recharge = function () return talent.champion_of_the_glaive.enabled and 9 or nil end,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
spend = function() return talent.furious_throws.enabled and 25 or 0 end,
|
||
|
|
spendType = "fury",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
readyTime = function ()
|
||
|
|
if ( settings.throw_glaive_charges or 1 ) == 0 then return end
|
||
|
|
return ( ( 1 + ( settings.throw_glaive_charges or 1 ) ) - cooldown.throw_glaive.charges_fractional ) * cooldown.throw_glaive.recharge
|
||
|
|
end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
1 year ago
|
if buff.reavers_glaive.up then
|
||
|
|
-- ?
|
||
|
|
end
|
||
|
3 years ago
|
if talent.burning_wound.enabled then applyDebuff( "target", "burning_wound" ) end
|
||
|
2 years ago
|
if talent.champion_of_the_glaive.enabled then applyDebuff( "target", "master_of_the_glaive" ) end
|
||
|
3 years ago
|
if talent.serrated_glaive.enabled then applyDebuff( "target", "serrated_glaive" ) end
|
||
|
2 years ago
|
if talent.soulscar.enabled then applyDebuff( "target", "soulscar" ) end
|
||
|
|
if set_bonus.tier31_4pc > 0 then reduceCooldown( "the_hunt", 2 ) end
|
||
|
3 years ago
|
end,
|
||
|
1 year ago
|
|
||
|
|
copy = { 185123, "reavers_glaive", 442294 }
|
||
|
3 years ago
|
},
|
||
|
|
|
||
|
|
-- Taunts the target to attack you.
|
||
|
|
torment = {
|
||
|
|
id = 185245,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 8,
|
||
|
|
gcd = "off",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "torment" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Remove all snares and vault away. Nearby enemies take $198813s2 Physical damage$?s320635[ and have their movement speed reduced by $198813s1% for $198813d][].$?a203551[ |cFFFFFFFFGenerates ${($203650s1/5)*$203650d} Fury over $203650d if you damage an enemy.|r][]
|
||
|
|
vengeful_retreat = {
|
||
|
|
id = 198793,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = function () return talent.tactical_retreat.enabled and 20 or 25 end,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
nodebuff = "rooted",
|
||
|
|
|
||
|
|
readyTime = function ()
|
||
|
|
if settings.retreat_and_return == "fel_rush" or settings.retreat_and_return == "either" and not talent.felblade.enabled then
|
||
|
|
return max( 0, cooldown.fel_rush.remains - 1 )
|
||
|
|
end
|
||
|
|
if settings.retreat_and_return == "felblade" and talent.felblade.enabled then
|
||
|
2 years ago
|
return max( 0, cooldown.felblade.remains - 0.4 )
|
||
|
3 years ago
|
end
|
||
|
|
if settings.retreat_and_return == "either" then
|
||
|
|
return max( 0, min( cooldown.felblade.remains, cooldown.fel_rush.remains ) - 1 )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
2 years ago
|
applyBuff( "vengeful_retreat_movement" )
|
||
|
|
if cooldown.fel_rush.remains < 1 then setCooldown( "fel_rush", 1 ) end
|
||
|
1 year ago
|
applyDebuff( "target", "vengeful_retreat" )
|
||
|
|
applyDebuff( "target", "vengeful_retreat_snare" )
|
||
|
|
-- Assume that we retreated away.
|
||
|
|
setDistance( 15 )
|
||
|
|
|
||
|
|
if talent.evasive_action.enabled then
|
||
|
|
if buff.evasive_action.down then applyBuff( "evasive_action" )
|
||
|
|
else
|
||
|
|
removeBuff( "evasive_action" )
|
||
|
|
setCooldown( "vengeful_retreat", 0 )
|
||
|
|
end
|
||
|
|
end
|
||
|
3 years ago
|
if talent.tactical_retreat.enabled then applyBuff( "tactical_retreat" ) end
|
||
|
|
if talent.momentum.enabled then applyBuff( "momentum" ) end
|
||
|
|
if pvptalent.glimpse.enabled then applyBuff( "glimpse" ) end
|
||
|
|
end,
|
||
|
|
}
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterRanges( "disrupt", "felblade", "fel_eruption", "torment", "throw_glaive", "the_hunt" )
|
||
|
|
|
||
|
3 years ago
|
spec:RegisterOptions( {
|
||
|
|
enabled = true,
|
||
|
|
|
||
|
2 years ago
|
aoe = 3,
|
||
|
|
cycle = false,
|
||
|
3 years ago
|
|
||
|
|
nameplates = true,
|
||
|
2 years ago
|
nameplateRange = 10,
|
||
|
|
rangeFilter = false,
|
||
|
3 years ago
|
|
||
|
|
damage = true,
|
||
|
|
damageExpiration = 8,
|
||
|
|
|
||
|
|
potion = "phantom_fire",
|
||
|
|
|
||
|
|
package = "Havoc",
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterSetting( "demon_blades_text", nil, {
|
||
|
|
name = function()
|
||
|
|
return strformat( "|cFFFF0000WARNING!|r If using the %s talent, Fury gains from your auto-attacks will be forecast conservatively and updated when you "
|
||
|
|
.. "actually gain resources. This prediction can result in Fury spenders appearing abruptly since it was not guaranteed that you'd have enough Fury on "
|
||
|
|
.. "your next melee swing.", Hekili:GetSpellLinkWithTexture( 203555 ) )
|
||
|
|
end,
|
||
|
|
type = "description",
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "demon_blades_acknowledged", false, {
|
||
|
|
name = function()
|
||
|
|
return strformat( "I understand that Fury generation from %s is unpredictable.", Hekili:GetSpellLinkWithTexture( 203555 ) )
|
||
|
|
end,
|
||
|
|
desc = function()
|
||
|
|
return strformat( "If checked, %s will not trigger a warning when entering combat.", Hekili:GetSpellLinkWithTexture( 203555 ) )
|
||
|
|
end,
|
||
|
|
type = "toggle",
|
||
|
|
width = "full",
|
||
|
|
arg = function() return false end,
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
-- Fel Rush
|
||
|
|
spec:RegisterSetting( "fel_rush_head", nil, {
|
||
|
|
name = Hekili:GetSpellLinkWithTexture( 195072, 20 ),
|
||
|
|
type = "header"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "fel_rush_warning", nil, {
|
||
|
|
name = strformat( "The %s, %s, and/or %s talents require the use of %s. If you do not want |W%s|w to be recommended to trigger these talents, you may want to "
|
||
|
|
.. "consider a different talent build.\n\n"
|
||
|
|
.. "You can reserve |W%s|w charges to ensure recommendations will always leave you with charge(s) available to use, but failing to use |W%s|w may ultimately "
|
||
|
|
.. "cost you DPS.", Hekili:GetSpellLinkWithTexture( 388113 ), Hekili:GetSpellLinkWithTexture( 206476 ), Hekili:GetSpellLinkWithTexture( 347461 ),
|
||
|
|
Hekili:GetSpellLinkWithTexture( 195072 ), spec.abilities.fel_rush.name, spec.abilities.fel_rush.name, spec.abilities.fel_rush.name ),
|
||
|
|
type = "description",
|
||
|
|
width = "full",
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "fel_rush_charges", 0, {
|
||
|
|
name = strformat( "Reserve %s Charges", Hekili:GetSpellLinkWithTexture( 195072 ) ),
|
||
|
|
desc = strformat( "If set above zero, %s will not be recommended if it would leave you with fewer (fractional) charges.", Hekili:GetSpellLinkWithTexture( 195072 ) ),
|
||
|
|
type = "range",
|
||
|
|
min = 0,
|
||
|
|
max = 2,
|
||
|
|
step = 0.1,
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "fel_rush_filler", true, {
|
||
|
|
name = strformat( "%s: Filler and Movement", Hekili:GetSpellLinkWithTexture( 195072 ) ),
|
||
|
|
desc = strformat( "When enabled, %s may be recommended as a filler ability or for movement.\n\n"
|
||
|
|
.. "These recommendations may occur with %s talented, when your other abilities are on cooldown, and/or because you are out of range of your target.",
|
||
|
|
Hekili:GetSpellLinkWithTexture( 195072 ), Hekili:GetSpellLinkWithTexture( 203555 ) ),
|
||
|
|
type = "toggle",
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
|
-- Throw Glaive
|
||
|
|
spec:RegisterSetting( "throw_glaive_head", nil, {
|
||
|
|
name = Hekili:GetSpellLinkWithTexture( 185123, 20 ),
|
||
|
|
type = "header"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "throw_glaive_charges_text", nil, {
|
||
|
|
name = strformat( "You can reserve charges of %s to ensure that it is always available for %s or |W|T1385910:0::::64:64:4:60:4:60|t |cff71d5ff%s (affix)|r|w procs. "
|
||
|
|
.. "If set to your maximum charges (2 with %s, 1 otherwise), |W%s|w will never be recommended. Failing to use |W%s|w when appropriate may impact your DPS.",
|
||
|
1 year ago
|
Hekili:GetSpellLinkWithTexture( 185123 ), Hekili:GetSpellLinkWithTexture( 391429 ), GetSpellInfo( 396363 ).name, Hekili:GetSpellLinkWithTexture( 389763 ),
|
||
|
3 years ago
|
spec.abilities.throw_glaive.name, spec.abilities.throw_glaive.name ),
|
||
|
|
type = "description",
|
||
|
|
width = "full",
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "throw_glaive_charges", 0, {
|
||
|
|
name = strformat( "Reserve %s Charges", Hekili:GetSpellLinkWithTexture( 185123 ) ),
|
||
|
|
desc = strformat( "If set above zero, %s will not be recommended if it would leave you with fewer (fractional) charges.", Hekili:GetSpellLinkWithTexture( 185123 ) ),
|
||
|
|
type = "range",
|
||
|
|
min = 0,
|
||
|
|
max = 2,
|
||
|
|
step = 0.1,
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
2 years ago
|
--[[ Retired 20240712:
|
||
|
|
spec:RegisterSetting( "footloose", true, {
|
||
|
|
name = strformat( "%s before %s", Hekili:GetSpellLinkWithTexture( 185123 ) , Hekili:GetSpellLinkWithTexture( 188499 ) ),
|
||
|
|
desc = strformat( "When enabled, %s may be recommended without having %s on cooldown.\n\n"
|
||
|
|
.. "This setting deviates from the default SimulationCraft profile, but performs equally on average with higher top-end damage.",
|
||
|
|
Hekili:GetSpellLinkWithTexture( 185123 ) , Hekili:GetSpellLinkWithTexture( 188499 ) ),
|
||
|
|
type = "toggle",
|
||
|
|
width = "full"
|
||
|
|
} ) ]]
|
||
|
|
|
||
|
3 years ago
|
-- Vengeful Retreat
|
||
|
|
spec:RegisterSetting( "retreat_head", nil, {
|
||
|
|
name = Hekili:GetSpellLinkWithTexture( 198793, 20 ),
|
||
|
|
type = "header"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "retreat_warning", nil, {
|
||
|
|
name = strformat( "The %s, %s, and/or %s talents require the use of %s. If you do not want |W%s|w to be recommended to trigger the benefit of these talents, you "
|
||
|
|
.. "may want to consider a different talent build.", Hekili:GetSpellLinkWithTexture( 388108 ),Hekili:GetSpellLinkWithTexture( 206476 ),
|
||
|
|
Hekili:GetSpellLinkWithTexture( 389688 ), Hekili:GetSpellLinkWithTexture( 198793 ), spec.abilities.vengeful_retreat.name ),
|
||
|
|
type = "description",
|
||
|
|
width = "full",
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "retreat_and_return", "off", {
|
||
|
|
name = strformat( "%s: %s and %s", Hekili:GetSpellLinkWithTexture( 198793 ), Hekili:GetSpellLinkWithTexture( 195072 ), Hekili:GetSpellLinkWithTexture( 232893 ) ),
|
||
|
|
desc = function()
|
||
|
|
return strformat( "When enabled, %s will |cFFFF0000NOT|r be recommended unless either %s or %s are available to quickly return to your current target. This "
|
||
|
|
.. "requirement applies to all |W%s|w and |W%s|w recommendations, regardless of talents.\n\n"
|
||
|
|
.. "If |W%s|w is not talented, its cooldown will be ignored.\n\n"
|
||
|
|
.. "This option does not guarantee that |W%s|w or |W%s|w will be the first recommendation after |W%s|w but will ensure that either/both are available immediately.",
|
||
|
|
Hekili:GetSpellLinkWithTexture( 198793 ), Hekili:GetSpellLinkWithTexture( 195072 ), Hekili:GetSpellLinkWithTexture( 232893 ),
|
||
|
|
spec.abilities.fel_rush.name, spec.abilities.vengeful_retreat.name, spec.abilities.felblade.name,
|
||
|
|
spec.abilities.fel_rush.name, spec.abilities.felblade.name, spec.abilities.vengeful_retreat.name )
|
||
|
|
end,
|
||
|
|
type = "select",
|
||
|
|
values = {
|
||
|
|
off = "Disabled (default)",
|
||
|
|
fel_rush = "Require " .. Hekili:GetSpellLinkWithTexture( 195072 ),
|
||
|
|
felblade = "Require " .. Hekili:GetSpellLinkWithTexture( 232893 ),
|
||
|
|
either = "Either " .. Hekili:GetSpellLinkWithTexture( 195072 ) .. " or " .. Hekili:GetSpellLinkWithTexture( 232893 )
|
||
|
|
},
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "retreat_filler", false, {
|
||
|
|
name = strformat( "%s: Filler and Movement", Hekili:GetSpellLinkWithTexture( 198793 ) ),
|
||
|
|
desc = function()
|
||
|
|
return strformat( "When enabled, %s may be recommended as a filler ability or for movement.\n\n"
|
||
|
|
.. "These recommendations may occur with %s talented, when your other abilities being on cooldown, and/or because you are out of range of your target.",
|
||
|
|
Hekili:GetSpellLinkWithTexture( 198793 ), Hekili:GetSpellLinkWithTexture( 203555 ) )
|
||
|
|
end,
|
||
|
|
type = "toggle",
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
1 year ago
|
spec:RegisterPack( "Havoc", 20270723, [[Hekili:v3ZAVjos2(BjA1LoesySnq6KvbgP78L72Av)LSs3VHXbmbVnyZ6hjtKq8BFRh(r94CQYgi9mJgPEsSlFQZ7x1XoZDN)VM)8QG8W5F3ZXBSZx9gn09rNhN4n)58p2ho)59bl)rWRKFioyh5F))cElzj9QFSnjyf9PZsksxsUZZr7k2gKhLe)BPbRZN)8lfrBZ)hXZFbEhip5(WLZ)(KV(15pVjA1Qq(sdZiWNU07C(6DEJ(7hx8V2eECX)Fqk5FIY3eft2(0K1rBjBAWs6gMnCFA4YKDVeKpy6V8wqAuWlBdVLIXt3f8Vts9ZtJI)ry(TVfSTiCA5Vn0D4YKKTRsEpE4QIugUp19bNdhQwGh8co(n77Bji8Z(iEPF22KQ9292O1ciWMGm)S8G8HbXF4VAFwVRVQzZvVzdIbG5ZMAaR7FoOSNikRJvcOSo9yKxoZa5GGXbPldId9ZtstdJZHxt0UDjCnr)ac0o(TJF7V93oUOCPKfKgMhK(kHsdkYt8dYZj643UnIa3LRicOYBsi6DrXRcFPy96HVuKghf)Q)7jfXRgMgUlikoJXxc2sqe573R8IRc3rWHx2gquQ7r3(3c9xLOS4NUMyhSDRpFxZM9RJ6Fo47v8FByuM)ljzxguCkek2GEYArRd36)sqAkXPXTj7NM1y1X3rH7376AXUWvR4Up96Yvd3f87381ExxIzHXH7IcZMnLGTrPHRQWObPbrR8dFJc)GvRYiQtfX5hoOE5O4gGcD3zp60xaP2r477ss3VjjlkRcToCqbz86F4athrKgk23V3vkO9u3ExPUNH)EuwEMe7CvuwAX(CXlTmGW95)Q)wYdW50v4P4kP4qAr2gQCNHufXVqfH(l3eKKrqREaxvLH7PQaUpA5p8l27VMqB7i4(T7swfonominKGm0aft3gMLfMs321fPFq0RwhTmkF20Xti(hQ5OHFe6)syWoYwgS6JdhOR9Pros0FArSoTMSNWezG)ADGvS)WbeHgvoKhTl8jxcEaiWh3I9wuJMGavQ7sAYQGUyViyv8irHIQsuLbjfARj62qYjk9r92Qzijq(agsZi(g3qnu8PCI(9kDPrfyXljSqIS4hdvvKofuwNjODPkvnI4a5wZM0oe0UMUg(wZ6iUotZJceyBckMmSyG3mCdfzVFHXeYVGGmH5een)2ISq)K1R9FL5CUX)BuCezpPOupaD4kQNWyOMHv8jNHJoCq(cU9qF6NMkSuBoYM56iWayHa8xfqy46(d6ZnIMn(syRC4WvqbFGcpa4wfrvNANZwTmPQQ0aIZ0hPwls19r3u5K1V4yu5VWTEnYVhJlzjwfxZrKHkwMd522zZC4rMawHK9)aVNq3fdgegmhUZRpgxQKFSlHg1OyNbnxHypgDcH5wKybsnbfi0gqc65x)b0ISRKLrFlOMDxMkae3h)flFhaY0gzaPddGJ4IYj)5d)LSbXOizZKj4MjgTITzI)5YB6v6nGMQgJjfSDM7qhhBwvKsf6To61n5(crOnrjIaSI)qHuLVDPG3nrEPS78OLKcYdIZwNKUJHhOPVvRsny0nLqiBdPaOqkdJW4YJI)W2dtcP2xJRRW0VXdKbpY5Uk8(JLBPH19j7o55i58e)JBCLRdsKnaZfA0OKsTrZh4GjgOwS70Zm0jH7fRTbs5eOMiACvH0MQYGrGNRM)Ju6fGGtwumy05ycyrcDFFGK(adDJg8S0GAQtV2eDDgvxtRkpk4Xs39bA5JaMFsMScslQ2fEu6sviOa5Y5Y862aQqipC3EAnC6XQodHImUNf9A0wQGz9ws2wa70iPsDPYd)S80OFWwlyTaAPLX4pIxlFtAY7(CIKxuQw6btBNxCyFktQs1llPyB2YG0EzH5(VKexKnmpkmDKRV3(LMWORGEan)uUn27LBuFtClRkguhD0IUN9GTqckMnxOCO0kkRVzvfMWpPiNErIfnjtFwOA0kepLYJ9MC4q7BvJCVAOvWK5)suEyhkuqpBdd5AyGuXL2pqizWebCLqF5UPEs8BwhCCPjyudyMjdJ5eKVXp79WW9iLxPe4tdcbXXrBI4kMNii6AnBgbGA5mC8P83mukJr6jkMSZ(mnjk6GlvRb8iJzMzlFOgW0xdbLeWC)MeFfEoxYEjuwwVUjrzK5QC1PbnvCcznuzfDa4pdxf2eEx53CGZWjOfoyTIdD)KdgzWKhxnF2etwz6ItHmsXPFnTq6v1GLEcdTXZKbwADOO7D0Zp)SY(qxV2Aoi2Tv7ijvQmJuotpXasmakMtdow3jndT8IWHR9oUAWYcjMHCaodU1(vCQ6IQyyQvcTWBFxdT8hAu(EWcfaVhcjW0C3Q9KScj5cLupTYbjsYRL67B0Ydh2Ng(gTp5dDhk4gt46EixFK417J3lQM0bL4ShoGuwrjFtmlrUqa8OJiPnIwvxtSlbG1xp93M1H1AeGiEINyMOSAFsDMfap0eqFsu)ocN2Ni4IIFl5heK93ZdtjAw(0NM3Y89jVtIwefVUidp1mAaCa8yQNdiYtp3eIA4UBPJEq18g4QFCkxBpdjv2SlcL3huWAyQeUZDI5k5vgfc2Ugq7AdaJWJ1RGW)tr0(9HRg(Eu(MWuIMYpiphrhy5gWHNOUQfNYdLPdCtV)a5MaZ)r75MExuUP7PZnzA)6WMXjb75xd31ul)A8ciTSlCZYCDMaNbT3eqQMqL(BkITLS3Llc91UdaBls)BgpPu(aJP1z0KTNiMSKrtde4tvGG8nd4EQr0OqhoWfWdRf9elKNLoKFYDHvmctzCxa0SkvrJCU6ro6EhaqWJ9aCdGmgR6PQh(jGPvefWC3aSzTQcBBrCrQ1L4HdyhpJASiycsyttfBaHeaPTw33U2WjHKdfq6ZIUeuGIIzpOb(yNbtCUb0ghI1kYhbUVztprvbWhgmZxHS1gOoABVsF0G8Ku)I9YZ2ME5CAo4RxIC1x4nWYeMqlY0NGoYyH7)Z1EdV)g(ac6tIyMh2)gxVbCnaLJTiJUOBUNFZC6MUmOX9rX(BeBRIrUYYv(RiYAfKPUltEyGPf2QypQOrhsg7QjTamDsiQO9r3v1UJbV1ijzddtOMKQcrSNTdJhHk7WdEMfX2j9M)at6QmDm4PCEwDIQf(n6ZY63IRJdyYNpcCgKndbkEYNJnCofaOJ5gmx1dvagogq17qJ0uvoUtatm4oWJ1tb0TutL(u3vpFx1obUB0KzoatUvDvOho08qc(tRpwkH7x5LBM7dDqZefXC(PIykQ4)jHDPFIpNNILzvFShumlcgDq23lBzeivrG7BxiDG5p)wykTVgLVYkJDDM)87bSbIpB(ZSxhLOD7tsZpUGK14XfFHNuXxoUiLw)jbPpUilzhzz0b2NKvj9ceEcjf9SHh)2)KKm2Xf03SLFljMSvSB)fJ5KsaDEITfnmmMQhSIS4RD)9(22PM6iuGEZn6ielRVqbCLxfdwF9NgF4rm(al1ynMapHznyD8Bakae7NGIT5DtdWfgFe0lvWjrRYUXnPpcDeTvay1L7i0olm8HlkgEzKPLYdNlUHIlImwCYNHmxkVvxb7zjyCr9tCk8YXWaR6WuuGw9zOJboenXtd3qubpjG5HO0ivRGciL7pqhb8NGJrSTsBedv2fT7JUbi6RNptcbWF6y(N(gCgoDWb5POFJy5vnoAQ0D5LrbhIT3jcUrOUSpbsD0L1RkyIc1VNQF58sva)iQQrXYLKdVgzpIxyWBfWahgKgGHxtRW7tf8nQPOme1xWza(bWsKTbqXARahCjTc4NQO8tg8wb8PkkBjEFQGVXPXNPWed4xe1qCm)0yjFYG3kGpvvWwI3Nk4XIeqBqC3ccCjZp)YME(9xqm7IMPpcW6mzckbRK1DtkE5Z3ZunMDTBmFwjQFztTYim)ekq6s7t4tg8TaWIJtdamvUDlX2wau6GwqxsBbQ(GpPbyWL8jcCCFONzeoBUOptW3caBuaQD7wITTaOyAfyavFaUmzxGOvCzbEnyN8j5b9YdxwiT1jB3M8Eu8R0GwPbzhx8Eyk56erczxIIjqKUm(HMCCb9RMWXfVuKxTU4ew8WI
|