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.
1940 lines
97 KiB
1940 lines
97 KiB
|
3 years ago
|
-- WarlockDestruction.lua
|
||
|
|
-- November 2022
|
||
|
|
|
||
|
|
if UnitClassBase( "player" ) ~= "WARLOCK" then return end
|
||
|
|
|
||
|
|
local addon, ns = ...
|
||
|
|
local Hekili = _G[ addon ]
|
||
|
|
local class, state = Hekili.Class, Hekili.State
|
||
|
|
|
||
|
|
local FindUnitBuffByID, FindUnitDebuffByID = ns.FindUnitBuffByID, ns.FindUnitDebuffByID
|
||
|
|
local PTR = ns.PTR
|
||
|
1 year ago
|
local GetSpellTexture = C_Spell.GetSpellTexture
|
||
|
3 years ago
|
|
||
|
2 years ago
|
local strformat = string.format
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
local spec = Hekili:NewSpecialization( 267 )
|
||
|
1 year ago
|
local GetSpellCount = C_Spell.GetSpellCastCount
|
||
|
3 years ago
|
|
||
|
|
spec:RegisterResource( Enum.PowerType.SoulShards, {
|
||
|
|
infernal = {
|
||
|
|
aura = "infernal",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.infernal.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( ( t - app ) * 2 ) * 0.5
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = 0.5,
|
||
|
|
value = 0.1
|
||
|
|
},
|
||
|
|
|
||
|
|
chaos_shards = {
|
||
|
|
aura = "chaos_shards",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.chaos_shards.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( ( t - app ) * 2 ) * 0.5
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = 0.5,
|
||
|
|
value = 0.2,
|
||
|
|
},
|
||
|
|
|
||
|
|
immolate = {
|
||
|
|
aura = "immolate",
|
||
|
|
debuff = true,
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.debuff.immolate.applied
|
||
|
|
local t = state.query_time
|
||
|
|
local tick = state.debuff.immolate.tick_time
|
||
|
|
|
||
|
|
return app + floor( ( t - app ) / tick ) * tick
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = function () return state.debuff.immolate.tick_time end,
|
||
|
|
value = 0.1
|
||
|
|
},
|
||
|
|
|
||
|
|
blasphemy = {
|
||
|
|
aura = "blasphemy",
|
||
|
|
|
||
|
|
last = function ()
|
||
|
|
local app = state.buff.blasphemy.applied
|
||
|
|
local t = state.query_time
|
||
|
|
|
||
|
|
return app + floor( ( t - app ) * 2 ) * 0.5
|
||
|
|
end,
|
||
|
|
|
||
|
|
interval = 0.5,
|
||
|
|
value = 0.1
|
||
|
|
}
|
||
|
|
}, setmetatable( {
|
||
|
|
actual = nil,
|
||
|
|
max = nil,
|
||
|
|
active_regen = 0,
|
||
|
|
inactive_regen = 0,
|
||
|
|
forecast = {},
|
||
|
|
times = {},
|
||
|
|
values = {},
|
||
|
|
fcount = 0,
|
||
|
|
regen = 0,
|
||
|
|
regenerates = false,
|
||
|
|
}, {
|
||
|
|
__index = function( t, k )
|
||
|
|
if k == 'count' or k == 'current' then return t.actual
|
||
|
|
|
||
|
|
elseif k == 'actual' then
|
||
|
|
t.actual = UnitPower( "player", Enum.PowerType.SoulShards, true ) / 10
|
||
|
|
return t.actual
|
||
|
|
|
||
|
|
elseif k == 'max' then
|
||
|
|
t.max = UnitPowerMax( "player", Enum.PowerType.SoulShards, true ) / 10
|
||
|
|
return t.max
|
||
|
|
|
||
|
|
else
|
||
|
|
local amount = k:match( "time_to_(%d+)" )
|
||
|
|
amount = amount and tonumber( amount )
|
||
|
|
|
||
|
|
if amount then return state:TimeToResource( t, amount ) end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
} ) )
|
||
|
|
|
||
|
|
spec:RegisterResource( Enum.PowerType.Mana )
|
||
|
|
|
||
|
|
|
||
|
|
-- Talents
|
||
|
|
spec:RegisterTalents( {
|
||
|
|
-- Warlock
|
||
|
1 year ago
|
abyss_walker = { 71954, 389609, 1 }, -- Using Demonic Circle: Teleport or your Demonic Gateway reduces all damage you take by $389614s1% for $389614d.
|
||
|
|
accrued_vitality = { 71953, 386613, 2 }, -- Drain Life heals for $s1% of the amount drained over $386614d.
|
||
|
|
amplify_curse = { 71934, 328774, 1 }, -- Your next Curse of Exhaustion, Curse of Tongues or Curse of Weakness cast within $d is amplified.; $@spellname334275; Reduces the target's movement speed by an additional $s3%.; $@spellname1714; Increases casting time by an additional $<cast>%.; $@spellname702; Enemy is unable to critically strike.
|
||
|
|
banish = { 71944, 710 , 1 }, -- Banishes an enemy Demon, Aberration$?s386651[, Undead][], or Elemental, preventing any action for $d. Limit 1. Casting Banish again on the target will cancel the effect.
|
||
|
|
burning_rush = { 71949, 111400, 1 }, -- Increases your movement speed by $s1%, but also damages you for $s2% of your maximum health every $t2 sec. Movement impairing effects may not reduce you below $s3% of normal movement speed. Lasts $d.
|
||
|
|
curses_of_enfeeblement = { 71951, 386105, 1 }, -- [1714] Forces the target to speak in Demonic, increasing the casting time of all spells by $s1% for $d.$?s103112[; Soulburn: Your Curse of Tongues will affect all enemies in a $104224A yard radius around your target.][]; Curses: A warlock can only have one Curse active per target.
|
||
|
|
dark_accord = { 71956, 386659, 1 }, -- Reduces the cooldown of Unending Resolve by ${$s1/-1000} sec.
|
||
|
|
dark_pact = { 71936, 108416, 1 }, -- Sacrifices $s2% of your current health to shield you for $s3% of the sacrificed health plus an additional $<points> for $d. Usable while suffering from control impairing effects.
|
||
|
|
darkfury = { 71941, 264874, 1 }, -- Reduces the cooldown of Shadowfury by ${$s1/-1000} sec and increases its radius by $s2 yards.
|
||
|
2 years ago
|
demon_skin = { 71952, 219272, 2 }, -- Your Soul Leech absorption now passively recharges at a rate of ${$s1/10}.1% of maximum health every $t1 sec, and may now absorb up to $s2% of maximum health.; Increases your armor by $m4%.
|
||
|
1 year ago
|
demonic_circle = { 100941, 268358, 1 }, -- [48018] Summons a Demonic Circle for $d. Cast Demonic Circle: Teleport to teleport to its location and remove all movement slowing effects.$?s58081[; If you cast Demonic Circle: Summon while controlling an Eye of Kilrogg, the circle will appear where the eye is located.][]
|
||
|
|
demonic_embrace = { 71930, 288843, 1 }, -- Stamina increased by $s1%.
|
||
|
|
demonic_fortitude = { 71922, 386617, 1 }, -- Increases you and your pets' maximum health by $s1%.
|
||
|
|
demonic_gateway = { 71955, 111771, 1 }, -- Creates a demonic gateway between two locations. Activating the gateway transports the user to the other gateway. Each player can use a Demonic Gateway only once per $<GatewayCooldown> sec.
|
||
|
|
demonic_inspiration = { 71928, 386858, 1 }, -- Increases the attack speed of your primary pet by $s1%. $?a137044[][; Increases Grimoire of Sacrifice damage by $s2%.]
|
||
|
|
demonic_resilience = { 71917, 389590, 2 }, -- Reduces the chance you will be critically struck by $s1%. All damage your primary demon takes is reduced by $s3%.
|
||
|
|
demonic_tactics = { 71925, 452894, 1 }, -- Your spells have a $s1% increased chance to deal a critical strike.; You gain $s2% more of the Critical Strike stat from all sources.
|
||
|
|
fel_armor = { 71950, 386124, 2 }, -- When Soul Leech absorbs damage, $s1% of damage taken is absorbed and spread out over $387847d.; Reduces damage taken by ${$s4/10}.1%.
|
||
|
|
fel_domination = { 71931, 333889, 1 }, -- Your next Imp, Voidwalker, Incubus, Succubus, Felhunter, or Felguard Summon spell is free and has its casting time reduced by $s1%.;
|
||
|
|
fel_pact = { 71932, 386113, 1 }, -- Reduces the cooldown of Fel Domination by ${$s1/-1000} sec.
|
||
|
|
fel_synergy = { 71924, 389367, 2 }, -- Soul Leech also heals you for $s1% and your pet for $s2% of the absorption it grants.
|
||
|
|
fiendish_stride = { 71948, 386110, 1 }, -- Reduces the damage dealt by Burning Rush by ${$abs($s1)}%. Burning Rush increases your movement speed by an additional $s2%.
|
||
|
|
frequent_donor = { 71937, 386686, 1 }, -- Reduces the cooldown of Dark Pact by ${$s1/-1000} sec.
|
||
|
3 years ago
|
horrify = { 71916, 56244 , 1 }, -- Your Fear causes the target to tremble in place instead of fleeing in fear.
|
||
|
1 year ago
|
howl_of_terror = { 71947, 5484 , 1 }, -- Let loose a terrifying howl, causing $i enemies within $A1 yds to flee in fear, disorienting them for $d. Damage may cancel the effect.
|
||
|
|
ichor_of_devils = { 71937, 386664, 1 }, -- Dark Pact sacrifices only $s3% of your current health for the same shield value.
|
||
|
|
lifeblood = { 71940, 386646, 2 }, -- When you use a Healthstone, gain $s2% Leech for $386647d.
|
||
|
|
mortal_coil = { 71947, 6789 , 1 }, -- Horrifies an enemy target into fleeing, incapacitating for $6789d and healing you for $108396m1% of maximum health.
|
||
|
|
nightmare = { 71916, 386648, 1 }, -- Increases the amount of damage required to break your fear effects by $s1%.
|
||
|
|
pact_of_gluttony = { 71926, 386689, 1 }, -- [452930] Instantly restores $s1% health$?s262031[, plus an additional ${$262080d/$262080t1*$262080s1}% over $262080d.][.]
|
||
|
|
resolute_barrier = { 71915, 389359, 2 }, -- Attacks received that deal at least $s2% of your health decrease Unending Resolve's cooldown by $s3 sec. Cannot occur more than once every ${$proccooldown-$s1/-1000} sec.;
|
||
|
|
sargerei_technique = { 93179, 405955, 2 }, -- $?c1[Shadow Bolt and Drain Soul damage increased by $s1%.]?c2[Shadow Bolt damage increased by $s1%.][Incinerate damage increased by $s2%.]
|
||
|
|
shadowflame = { 71941, 384069, 1 }, -- Slows enemies in a $A1 yard cone in front of you by $s1% for $d.
|
||
|
|
shadowfury = { 71942, 30283 , 1 }, -- Stuns all enemies within $a1 yds for $d.
|
||
|
|
socrethars_guile = { 93178, 405936, 2 }, -- $?c1[Agony damage increased by $s1%.]?c2[Wild Imp damage increased by $s2%.][Immolate damage increased by $s3%.]
|
||
|
|
soul_conduit = { 71939, 215941, 1 }, -- Every Soul Shard you spend has a $?s137043[$s1%]?s137046[$s3%][$s2%] chance to be refunded.
|
||
|
|
soul_link = { 71923, 108415, 2 }, -- $s2% of all damage you take is taken by your demon pet instead. $?a137044[][; While Grimoire of Sacrifice is active, your Stamina is increased by $s3%.]
|
||
|
|
soulburn = { 71957, 385899, 1 }, -- Consumes a Soul Shard, unlocking the hidden power of your spells.; Demonic Circle: Teleport: Increases your movement speed by $387633s1% and makes you immune to snares and roots for $387633d.; Demonic Gateway: Can be cast instantly.; Drain Life: Gain an absorb shield equal to the amount of healing done for $387630d. This shield cannot exceed $387630s1% of your maximum health.; Health Funnel: Restores $387626s1% more health and reduces the damage taken by your pet by ${$abs($387641s1)}% for $387641d.; Healthstone: Increases the healing of your Healthstone by $387626s2% and increases your maximum health by $387636s1% for $387636d.
|
||
|
|
strength_of_will = { 71956, 317138, 1 }, -- Unending Resolve reduces damage taken by an additional $s1%.
|
||
|
|
sweet_souls = { 71927, 386620, 1 }, -- Your Healthstone heals you for an additional $s1% of your maximum health. Any party or raid member using a Healthstone also heals you for that amount.
|
||
|
|
swift_artifice = { 71918, 452902, 1 }, -- Reduces the cast time of Soulstone and Create Healthstone by $s1%.
|
||
|
|
teachings_of_the_black_harvest = { 71938, 385881, 1 }, -- Your primary pets gain a bonus effect.; Imp: Successful Singe Magic casts grant the target $386869s1% damage reduction for $386869d.; Voidwalker: Reduces the cooldown of Shadow Bulwark by ${$abs($s2/1000)} sec.; Felhunter: Reduces the cooldown of Devour Magic by ${$abs($s3/1000)} sec.; Sayaad: Reduces the cooldown of Seduction by ${$abs($s4/1000)} sec and causes the target to walk faster towards the demon.$?s137044[; Felguard: Reduces the cooldown of Pursuit by ${$abs($s6/1000)} sec and increases its maximum range by $s7 yards.][]
|
||
|
|
teachings_of_the_satyr = { 71935, 387972, 1 }, -- Reduces the cooldown of Amplify Curse by ${$s1/-1000} sec.
|
||
|
|
wrathful_minion = { 71946, 386864, 1 }, -- Increases the damage done by your primary pet by $s1%. $?a137044[][; Increases Grimoire of Sacrifice damage by $s2%.]
|
||
|
|
|
||
|
|
-- Destruction Talents
|
||
|
|
abyssal_dominion = { 94831, 429581, 1 }, -- $?s137044[Summon Demonic Tyrant is empowered, dealing $s1% increased damage and increasing the damage of your demons by $s2% while active.][Summon Infernal becomes empowered, dealing $s3% increased damage. When your Summon Infernal ends, it fragments into two smaller Infernals at $s4% effectiveness that lasts $456310d.]
|
||
|
|
annihilans_bellow = { 94836, 429072, 1 }, -- Howl of Terror cooldown is reduced by ${$s1/-1000} sec and range is increased by $s2 yds.
|
||
|
|
ashen_remains = { 71969, 387252, 1 }, -- Chaos Bolt, Shadowburn, and Incinerate deal $s1% increased damage to targets afflicted by $?a445465[Wither][Immolate].
|
||
|
|
aura_of_enfeeblement = { 94822, 440059, 1 }, -- While Unending Resolve is active, enemies within $449587a1 yds are affected by Curse of Tongues and Curse of Weakness at $s1% effectiveness.
|
||
|
|
avatar_of_destruction = { 101998, 456975, 1 }, -- [434587] Generates $457578s1 Soul Shard Fragment every $457578t1 sec and casts Chaos Bolt at $456975s1% effectiveness at its summoner's target.
|
||
|
|
backdraft = { 72067, 196406, 1 }, -- Conflagrate reduces the cast time of your next Incinerate, Chaos Bolt, or Soul Fire by $117828s1%. Maximum $?s267115[$s2][$s1] charges.
|
||
|
|
backlash = { 71983, 387384, 1 }, -- Increases your critical strike chance by $s1%.; Physical attacks against you have a $s2% chance to make your next Incinerate instant cast. This effect can only occur once every $proccooldown sec.
|
||
|
|
blackened_soul = { 94837, 440043, 1 }, -- Spending Soul Shards on damaging spells will further corrupt enemies affected by your Wither, increasing its stack count by $s1.; Each time Wither gains a stack it has a chance to collapse, consuming a stack every $445731t1 sec to deal $445736s1 Shadowflame damage to its host until 1 stack remains.
|
||
|
|
bleakheart_tactics = { 94854, 440051, 1 }, -- Wither damage increased $s1%. When Wither gains a stack from Blackened Soul, it has a chance to gain an additional stack.
|
||
|
|
blistering_atrophy = { 101996, 456939, 1 }, -- Increases the damage of Shadowburn by $s1%. The critical strike chance of Shadowburn is increased by an additional $s3% when damaging a target that is at or below $s4% health.
|
||
|
|
burn_to_ashes = { 71964, 387153, 1 }, -- Chaos Bolt and Rain of Fire increase the damage of your next $s3 Incinerates by $s1%. Shadowburn increases the damage of your next Incinerate by $s1%.; Stacks up to $387154U times.
|
||
|
|
cataclysm = { 71974, 152108, 1 }, -- Calls forth a cataclysm at the target location, dealing $s1 Shadowflame damage to all enemies within $A1 yards and afflicting them with $?a445465[Wither][Immolate].
|
||
|
|
channel_demonfire = { 72064, 196447, 1 }, -- Launches $s1 bolts of felfire over $d at random targets afflicted by your $?a445465[Wither][Immolate] within $196449A1 yds. Each bolt deals $196448s1 Fire damage to the target and $196448s2 Fire damage to nearby enemies.
|
||
|
|
chaos_incarnate = { 71966, 387275, 1 }, -- Chaos Bolt, Rain of Fire, and Shadowburn always gain at least $s1% of the maximum benefit from your Mastery: Chaotic Energies.
|
||
|
|
cloven_souls = { 94849, 428517, 1 }, -- Enemies damaged by your Overlord have their souls cloven, increasing damage taken by you and your pets by $434424s1% for $434424d.
|
||
|
|
conflagrate = { 72068, 17962 , 1 }, -- Triggers an explosion on the target, dealing $s1 Fire damage.$?s196406[; Reduces the cast time of your next Incinerate or Chaos Bolt by $117828s1% for $117828d.][]; Generates $245330s1 Soul Shard Fragments.
|
||
|
|
conflagration_of_chaos = { 72061, 387108, 1 }, -- Conflagrate and Shadowburn have a $s1% chance to guarantee your next cast of the ability to critically strike, and increase its damage by your critical strike chance.
|
||
|
|
crashing_chaos = { 71960, 417234, 1 }, -- Summon Infernal increases the damage of your next $s3 casts of Chaos Bolt by $s1% or your next $s3 casts of Rain of Fire by $s2%.
|
||
|
|
cruelty_of_kerxan = { 94848, 429902, 1 }, -- $?s137044[Summon Demonic Tyrant][Summon Infernal] grants Diabolic Ritual and reduces its duration by ${$s1/1000} sec.
|
||
|
|
curse_of_the_satyr = { 94822, 440057, 1 }, -- [442804] Increases the time between an enemy's attacks by $s1% and the casting time of all spells by $s3% for $d.$?s103112[; Soulburn: Your Curse of Weakness will affect all enemies in a $104222A yard radius around your target.][]; Curses: A warlock can only have one Curse active per target.
|
||
|
|
decimation = { 101997, 456985, 1 }, -- Your critical strikes have a chance to reset the cooldown of Soul Fire and reduce the cast time of your next Soul Fire by $457555s1%.
|
||
|
|
demonfire_mastery = { 101993, 456946, 1 }, -- Increases the damage of Channel Demonfire by $s1% and it deals damage $s2% faster.
|
||
|
|
devastation = { 72066, 454735, 1 }, -- Increases the critical strike chance of your Destruction spells by $s1%.
|
||
|
|
diabolic_embers = { 71968, 387173, 1 }, -- Incinerate now generates $s1% additional Soul Shard Fragments.
|
||
|
|
diabolic_ritual = { 94855, 428514, 1 }, -- Spending a Soul Shard on a damaging spell grants Diabolic Ritual for $431944d. While Diabolic Ritual is active, each Soul Shard spent on a damaging spell reduces its duration by $s1 sec.; When Diabolic Ritual expires you gain Demonic Art, causing your next $?s137044[Hand of Gul'dan][Chaos Bolt, Rain of Fire, or Shadowburn] to summon an Overlord, Mother of Chaos, or Pit Lord that unleashes a devastating attack against your enemies.
|
||
|
|
dimension_ripper = { 102002, 457025, 1 }, -- Incinerate has a chance to tear open a Dimensional Rift or recharge Dimensional Rift if learned.
|
||
|
|
dimensional_rift = { 102003, 387976, 1 }, -- [394235] Deals ${$394238s1*($394237d/$394237t1)} Shadow damage over $394237d.
|
||
|
|
emberstorm = { 72062, 454744, 1 }, -- Increases the damage done by your Fire spells by $s1% and reduces the cast time of your Incinerate spell by $s2%.
|
||
|
|
eradication = { 71984, 196412, 1 }, -- Chaos Bolt and Shadowburn increases the damage you deal to the target by $s2% for $196414d.
|
||
|
|
explosive_potential = { 72059, 388827, 1 }, -- Reduces the cooldown of Conflagrate by ${$s1/-1000} sec.
|
||
|
|
fiendish_cruelty = { 101994, 456943, 1 }, -- When Shadowburn fails to kill a target that is at or below $s2% health, its cooldown is reduced by $s1 sec.
|
||
|
|
fire_and_brimstone = { 71982, 196408, 1 }, -- Incinerate now also hits all enemies near your target for $s1% damage.
|
||
|
|
flames_of_xoroth = { 94833, 429657, 1 }, -- Fire damage increased by $s1% and damage dealt by your demons is increased by $s3%.
|
||
|
|
flashpoint = { 71972, 387259, 1 }, -- When your $?a445465[Wither][Immolate] deals periodic damage to a target above $s2% health, gain $387263s1% Haste for $387263d.; Stacks up to $387263U times.
|
||
|
|
gloom_of_nathreza = { 94843, 429899, 1 }, -- $?s137044[Hand of Gul'dan deals $s1% increased damage for each Soul Shard spent.][Enemies marked by your Havoc take $s2% increased damage from your single target spells.]
|
||
|
|
grimoire_of_sacrifice = { 71971, 108503, 1 }, -- Sacrifices your demon pet for power, gaining its command demon ability, and causing your spells to sometimes also deal $196100s1 additional Shadow damage.; Lasts $196099d or until you summon a demon pet.
|
||
|
|
hatefury_rituals = { 94854, 440048, 1 }, -- Wither deals $s1% increased periodic damage but its duration is $s2% shorter.
|
||
|
|
havoc = { 71979, 80240 , 1 }, -- Marks a target with Havoc for $d, causing your single target spells to also strike the Havoc victim for $s1% of the damage dealt.
|
||
|
|
illhoofs_design = { 94835, 440070, 1 }, -- Sacrifice $s1% of your maximum health. Soul Leech now absorbs an additional $s2% of your maximum health.
|
||
|
|
improved_chaos_bolt = { 101992, 456951, 1 }, -- Increases the damage of Chaos Bolt by $s1% and reduces its cast time by ${$s2/-1000}.1 sec.
|
||
|
3 years ago
|
improved_conflagrate = { 72065, 231793, 1 }, -- Conflagrate gains an additional charge.
|
||
|
1 year ago
|
indiscriminate_flames = { 101995, 457114, 1 }, -- Backdraft increases the damage of your next Chaos Bolt by $s1% and increases the critical strike chance of your next Incinerate or Soul Fire by $s2%.
|
||
|
|
infernal_bulwark = { 94852, 429130, 1 }, -- Unending Resolve grants Soul Leech equal to $434561s1% of your maximum health and increases the maximum amount Soul Leech can absorb by $434561s1% for $434561d.
|
||
|
|
infernal_machine = { 94848, 429917, 1 }, -- Spending Soul Shards on damaging spells while your $?s137044[Demonic Tyrant][Infernal] is active decreases the duration of Diabolic Ritual by ${$s1/1000} additional sec.
|
||
|
|
infernal_vitality = { 94852, 429115, 1 }, -- Unending Resolve heals you for ${$434559s1*($434559d/$434559t1)}% of your maximum health over $434559d.
|
||
|
|
inferno = { 71974, 270545, 1 }, -- Rain of Fire damage is increased by $s2% and its Soul Shard cost is reduced by ${$s1/-10}.
|
||
|
|
internal_combustion = { 71980, 266134, 1 }, -- Chaos Bolt consumes up to $s1 sec of $?a445465[Wither's][Immolate's] damage over time effect on your target, instantly dealing that much damage.
|
||
|
|
malevolence = { 94842, 442726, 1 }, -- Dark magic erupts from you and corrupts your soul for $442726d, causing enemies suffering from your Wither to take $446285s1 Shadowflame damage and increase its stack count by $s1.; While corrupted your Haste is increased by $442726s1% and spending Soul Shards on damaging spells grants $s2 additional stack of Wither.
|
||
|
|
mark_of_perotharn = { 94844, 440045, 1 }, -- Critical strike damage dealt by Wither is increased by $s1%. ; Wither has a chance to gain a stack when it critically strikes. Stacks gained this way do not activate Blackened Soul.
|
||
|
|
mark_of_xavius = { 94834, 440046, 1 }, -- $?s980[Agony damage increased by $s1%.][Wither damage increased by $s2%.]; Blackened Soul deals $s3% increased damage per stack of Wither.
|
||
|
|
master_ritualist = { 71962, 387165, 1 }, -- Ritual of Ruin requires $s1 less Soul Shards spent.
|
||
|
|
mayhem = { 71979, 387506, 1 }, -- Your single target spells have a $s1% chance to apply $?a200546[Bane of Havoc below][Havoc to] a nearby enemy for ${$s3/1000}.1 sec.; $?a200546[$@spellicon200546 $@spellname200546; Curses the ground with a demonic bane, causing all of your single target spells to also strike targets marked with the bane for $80240s1% of the damage dealt. Lasts ${$s3/1000}.1 sec.][$@spellicon80240 $@spellname80240; Marks a target with Havoc for ${$s3/1000}.1 sec, causing your single target spells to also strike the Havoc victim for $80240s1% of the damage dealt.]
|
||
|
|
power_overwhelming = { 71965, 387279, 1 }, -- Consuming Soul Shards increases your Mastery by ${$s2/10}.1% for $387283d for each shard spent. Gaining a stack does not refresh the duration.
|
||
|
|
pyrogenics = { 71975, 387095, 1 }, -- Enemies affected by your Rain of Fire take $s1% increased damage from your Fire spells.
|
||
|
|
raging_demonfire = { 72063, 387166, 1 }, -- Channel Demonfire fires an additional $s1 bolts. Each bolt increases the remaining duration of $?a445465[Wither][Immolate] on all targets hit by ${$s2/1000}.1 sec.
|
||
|
|
rain_of_chaos = { 71960, 266086, 1 }, -- While your initial Infernal is active, every Soul Shard you spend has a $s1% chance to summon an additional Infernal that lasts $335236d.
|
||
|
|
rain_of_fire = { 72069, 5740 , 1 }, -- Calls down a rain of hellfire, dealing ${$42223m1*8} Fire damage over $d to enemies in the area.
|
||
|
|
reverse_entropy = { 71980, 205148, 1 }, -- Your spells have a chance to grant you $266030s1% Haste for $266030d.
|
||
|
|
ritual_of_ruin = { 71970, 387156, 1 }, -- Every $s1 Soul Shards spent grants Ritual of Ruin, making your next Chaos Bolt or Rain of Fire consume no Soul Shards and have its cast time reduced by $387157s3%.
|
||
|
|
roaring_blaze = { 72065, 205184, 1 }, -- Conflagrate increases your $?s6353[Soul Fire, ][]$?s196447[Channel Demonfire, ][]$?a445465[Wither][Immolate], Incinerate, and Conflagrate damage to the target by $265931s1% for $265931d.
|
||
|
|
rolling_havoc = { 71961, 387569, 1 }, -- Each time your spells duplicate from Havoc, gain $s1% increased damage for $387570d. Stacks up to $387570U times.
|
||
|
|
ruin = { 71967, 387103, 1 }, -- Increases the critical strike damage of your Destruction spells by $s1%.
|
||
|
|
ruination = { 94830, 428522, 1 }, -- [434635] Call down a demon-infested meteor from the depths of the Twisting Nether, dealing $434636s1 Chaos damage on impact to all enemies within $434636a1 yds of the target$?s137046[ and summoning $433885s3 Diabolic Imp.; Damage is further increased by your critical strike chance and is reduced beyond $s2 targets.][ and summoning $433885s2 Wild Imps.; Damage is reduced beyond $s2 targets.]
|
||
|
|
scalding_flames = { 71973, 388832, 1 }, -- Increases the damage of $?a445465[Wither][Immolate] by $s1% and its duration by ${$s3/1000} sec.
|
||
|
|
secrets_of_the_coven = { 94826, 428518, 1 }, -- [434506] Hurl a bolt enveloped in the infernal flames of the abyss, dealing $s1 Fire damage to your enemy target and generating ${$s2/10} Soul Shards.
|
||
|
|
seeds_of_their_demise = { 94829, 440055, 1 }, -- After Wither reaches $s1 stacks or when its host reaches $s2% health, Wither deals $445736s1 Shadowflame damage to its host every $445731t1 sec until 1 stack remains.; When Blackened Soul deals damage, you have a chance to gain $?s137046[$s4 stacks of Flashpoint][Tormented Crescendo].
|
||
|
|
shadowburn = { 72060, 17877 , 1 }, -- Blasts a target for $s1 Shadowflame damage, gaining $s3% critical strike chance on targets that have $s4% or less health.; Restores ${$245731s1/10} Soul Shard and refunds a charge if the target dies within $d.
|
||
|
|
soul_fire = { 71978, 6353 , 1 }, -- Burns the enemy's soul, dealing $s1 Fire damage and applying $?a445465[Wither][Immolate].; Generates ${$281490s1/10} Soul Shard.
|
||
|
|
souletched_circles = { 94836, 428911, 1 }, -- You always gain the benefit of Soulburn when casting Demonic Circle: Teleport, increasing your movement speed by 50% and making you immune to snares and roots for 6 sec.
|
||
|
|
summon_infernal = { 71985, 1122 , 1 }, -- Summons an Infernal from the Twisting Nether, impacting for $22703s1 Fire damage and stunning all enemies in the area for $22703d.; The Infernal will serve you for $111685d, dealing ${$20153s1*(100+$137046s3)/100} damage to all nearby enemies every $19483t1 sec and generating $264365s1 Soul Shard Fragment every $264364t1 sec.
|
||
|
|
summoners_embrace = { 71971, 453105, 1 }, -- Increases the damage dealt by your spells and your demon by $s1%.
|
||
|
|
touch_of_rancora = { 94856, 429893, 1 }, -- Demonic Art increases the damage of your next $?s137044[Hand of Gul'dan][Chaos Bolt, Rain of Fire, or Shadowburn] by $s1% and reduces its cast time by $s2%.
|
||
|
|
unstable_rifts = { 102427, 457064, 1 }, -- Bolts from Dimensional Rift now deal $s1% of damage dealt to nearby enemies as Fire damage.
|
||
|
|
wither = { 94840, 445468, 1 }, -- [445468] Bestows a vile malediction upon the target, burning the sinew and muscle of its host, dealing $s1 Shadowflame damage immediately and an additional $445474o1 Shadowflame damage over $445474d.$?s137046[; Periodic damage generates 1 Soul Shard Fragment and has a $s2% chance to generate an additional 1 on critical strikes.; Replaces Immolate.][; Replaces Corruption.]
|
||
|
|
xalans_cruelty = { 94845, 440040, 1 }, -- Shadow damage dealt by your spells and abilities is increased by $s3% and your Shadow spells gain $s1% more critical strike chance from all sources.
|
||
|
|
xalans_ferocity = { 94853, 440044, 1 }, -- Fire damage dealt by your spells and abilities is increased by $s1% and your Fire spells gain $s4% more critical strike chance from all sources.
|
||
|
|
zevrims_resilience = { 94835, 440065, 1 }, -- Dark Pact heals you for $108416s5 every $108416t5 sec while active.
|
||
|
3 years ago
|
} )
|
||
|
|
|
||
|
|
-- PvP Talents
|
||
|
|
spec:RegisterPvpTalents( {
|
||
|
1 year ago
|
bane_of_havoc = 164 , -- (461917) [200546] $?a387506[Your single target spells have a $387506s1% chance to curse][Curses] the ground with a demonic bane, causing all of your single target spells to also strike targets marked with the bane for $80240s1% of the damage dealt. Lasts $?a387506[${$387506s3/1000} sec][$d].
|
||
|
|
bonds_of_fel = 5401, -- (353753) Encircle enemy players with Bonds of Fel. If any affected player leaves the $a2 yd radius they explode, dealing $353813s1 Fire damage split amongst all nearby enemies.
|
||
|
|
call_observer = 5544, -- (201996) Summons a demonic Observer to keep a watchful eye over the area for $d.; Anytime an enemy within $m2 yards casts a harmful magical spell, the Observer will deal up to $212529s2% of the target's maximum health in Shadow damage.
|
||
|
|
fel_fissure = 157 , -- (200586) Chaos Bolt creates a $m1 yd wide eruption of Felfire under the target, reducing movement speed by $200587m1% and reducing all healing received by $200587m2% on all enemies within the fissure. Lasts $212269d.
|
||
|
|
gateway_mastery = 5382, -- (248855) Increases the range of your Demonic Gateway by $s1 yards, and reduces the cast time by $s2%. Reduces the time between how often players can take your Demonic Gateway by $s3 sec.
|
||
|
|
impish_instincts = 5580, -- (409835) Taking direct Physical damage reduces the cooldown of Demonic Circle by ${$s1/-1000} sec.; Cannot occur more than once every $proccooldown sec.
|
||
|
|
nether_ward = 3508, -- (212295) Surrounds the caster with a shield that lasts $d, reflecting all harmful spells cast on you.
|
||
|
|
shadow_rift = 5393, -- (353294) Conjure a Shadow Rift at the target location lasting $d. Enemy players within the rift when it expires are teleported to your Demonic Circle.; Must be within $s2 yds of your Demonic Circle to cast.
|
||
|
|
soul_rip = 5607, -- (410598) Fracture the soul of up to $i target players within $r yds into the shadows, reducing their damage done by $s1% and healing received by $s3% for $d. Souls are fractured up to $410615a yds from the player's location.; Players can retrieve their souls to remove this effect.
|
||
|
3 years ago
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
-- Auras
|
||
|
|
spec:RegisterAuras( {
|
||
|
|
active_havoc = {
|
||
|
|
duration = function () return class.auras.havoc.duration end,
|
||
|
|
max_stack = 1,
|
||
|
|
|
||
|
|
generate = function( ah )
|
||
|
|
ah.duration = class.auras.havoc.duration
|
||
|
|
|
||
|
|
if pvptalent.bane_of_havoc.enabled and debuff.bane_of_havoc.up and query_time - last_havoc < ah.duration then
|
||
|
|
ah.count = 1
|
||
|
|
ah.applied = last_havoc
|
||
|
|
ah.expires = last_havoc + ah.duration
|
||
|
|
ah.caster = "player"
|
||
|
|
return
|
||
|
|
elseif not pvptalent.bane_of_havoc.enabled and active_dot.havoc > 0 and query_time - last_havoc < ah.duration then
|
||
|
|
ah.count = 1
|
||
|
|
ah.applied = last_havoc
|
||
|
|
ah.expires = last_havoc + ah.duration
|
||
|
|
ah.caster = "player"
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
ah.count = 0
|
||
|
|
ah.applied = 0
|
||
|
|
ah.expires = 0
|
||
|
|
ah.caster = "nobody"
|
||
|
|
end
|
||
|
|
},
|
||
|
|
-- Going to need to keep an eye on this. active_dot.bane_of_havoc won't work due to no SPELL_AURA_APPLIED event.
|
||
|
|
bane_of_havoc = {
|
||
|
|
id = 200548,
|
||
|
|
duration = function () return level > 53 and 12 or 10 end,
|
||
|
|
max_stack = 1,
|
||
|
|
generate = function( boh )
|
||
|
|
boh.applied = action.bane_of_havoc.lastCast
|
||
|
|
boh.expires = boh.applied > 0 and ( boh.applied + boh.duration ) or 0
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
accrued_vitality = {
|
||
|
|
id = 386614,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 339298
|
||
|
|
},
|
||
|
|
-- Talent: Next Curse of Tongues, Curse of Exhaustion or Curse of Weakness is amplified.
|
||
|
|
-- https://wowhead.com/beta/spell=328774
|
||
|
|
amplify_curse = {
|
||
|
|
id = 328774,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Time between attacks increased $w1% and casting speed increased by $w2%.
|
||
|
|
aura_of_enfeeblement = {
|
||
|
|
id = 449587,
|
||
|
|
duration = 8.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
backdraft = {
|
||
|
|
id = 117828,
|
||
|
|
duration = 10,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 2,
|
||
|
|
},
|
||
|
|
-- Talent: Your next Incinerate is instant cast.
|
||
|
|
-- https://wowhead.com/beta/spell=387385
|
||
|
|
backlash = {
|
||
|
|
id = 387385,
|
||
|
|
duration = 15,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Invulnerable, but unable to act.
|
||
|
|
-- https://wowhead.com/beta/spell=710
|
||
|
|
banish = {
|
||
|
|
id = 710,
|
||
|
|
duration = 30,
|
||
|
|
mechanic = "banish",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
blasphemy = {
|
||
|
|
id = 367680,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Talent: Incinerate damage increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=387154
|
||
|
|
burn_to_ashes = {
|
||
|
|
id = 387154,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 6
|
||
|
|
},
|
||
|
|
-- Talent: Movement speed increased by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=111400
|
||
|
|
burning_rush = {
|
||
|
|
id = 111400,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent:
|
||
|
|
-- https://wowhead.com/beta/spell=196447
|
||
|
|
channel_demonfire = {
|
||
|
|
id = 196447,
|
||
|
1 year ago
|
duration = function() return 3 * ( 1 - 0.35 * talent.demonfire_mastery.rank ) * haste end,
|
||
|
|
tick_time = function() return 3 * ( 1 - 0.35 * talent.demonfire_mastery.rank ) * ( 1 - 0.12 * talent.raging_demonfire.rank ) * haste end,
|
||
|
3 years ago
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Damage taken from you and your pets is increased by $s1%.
|
||
|
|
cloven_soul = {
|
||
|
|
id = 434424,
|
||
|
|
duration = 15.0,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
3 years ago
|
conflagrate = {
|
||
|
|
id = 265931,
|
||
|
|
duration = 8,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1,
|
||
|
|
copy = "roaring_blaze"
|
||
|
|
},
|
||
|
|
conflagration_of_chaos_cf = {
|
||
|
|
id = 387109,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
conflagration_of_chaos_sb = {
|
||
|
|
id = 387110,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Shadow damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=146739
|
||
|
|
corruption = {
|
||
|
|
id = 146739,
|
||
|
|
duration = 14,
|
||
|
|
tick_time = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
crashing_chaos = {
|
||
|
2 years ago
|
id = 417282,
|
||
|
3 years ago
|
duration = 45,
|
||
|
2 years ago
|
max_stack = 8,
|
||
|
3 years ago
|
},
|
||
|
|
-- Movement speed slowed by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=334275
|
||
|
|
curse_of_exhaustion = {
|
||
|
|
id = 334275,
|
||
|
|
duration = 12,
|
||
|
|
mechanic = "snare",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Speaking Demonic increasing casting time by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=1714
|
||
|
|
curse_of_tongues = {
|
||
|
|
id = 1714,
|
||
|
|
duration = 60,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Time between attacks increased by $w1%. $?e1[Chance to critically strike reduced by $w2%.][]
|
||
|
|
-- https://wowhead.com/beta/spell=702
|
||
|
|
curse_of_weakness = {
|
||
|
|
id = 702,
|
||
|
|
duration = 120,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Absorbs $w1 damage.
|
||
|
|
-- https://wowhead.com/beta/spell=108416
|
||
|
|
dark_pact = {
|
||
|
|
id = 108416,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Damage of $?s137046[Incinerate]?s198590[Drain Soul]?a137044&!s137046[Demonbolt][Shadow Bolt] increased by $w2%.
|
||
|
|
-- https://wowhead.com/beta/spell=325299
|
||
|
|
decimating_bolt = {
|
||
|
|
id = 325299,
|
||
|
|
duration = 45,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 3
|
||
|
|
},
|
||
|
1 year ago
|
-- The cast time of your next Soul Fire is reduced by $s1%.
|
||
|
|
decimation = {
|
||
|
|
id = 457555,
|
||
|
|
duration = 10.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- [428524] Your next Soul Shard spent summons an Overlord that unleashes a devastating attack.
|
||
|
|
diabolic_ritual_overlord = {
|
||
|
|
id = 431944,
|
||
|
|
duration = 20.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
diabolic_ritual_mother_of_chaos = {
|
||
|
|
id = 432815,
|
||
|
|
duration = 20.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
diabolic_ritual_pit_lord = {
|
||
|
|
id = 432816,
|
||
|
|
duration = 20.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
diabolic_ritual = {
|
||
|
|
alias = { "diabolic_ritual_overlord", "diabolic_ritual_mother_of_chaos", "diabolic_ritual_pit_lord" },
|
||
|
|
aliasMode = "first",
|
||
|
|
aliasType = "buff"
|
||
|
|
},
|
||
|
3 years ago
|
-- Talent:
|
||
|
|
-- https://wowhead.com/beta/spell=268358
|
||
|
|
demonic_circle = {
|
||
|
|
id = 268358,
|
||
|
|
duration = 3600,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Attack speed increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=386861
|
||
|
|
demonic_inspiration = {
|
||
|
|
id = 386861,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
generate = function( t )
|
||
|
|
local name, _, count, _, duration, expires, caster = FindUnitBuffByID( "pet", 386861 )
|
||
|
|
|
||
|
|
if name then
|
||
|
|
t.name = name
|
||
|
|
t.count = count
|
||
|
|
t.expires = expires
|
||
|
|
t.applied = expires - duration
|
||
|
|
t.caster = caster
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
t.count = 0
|
||
|
|
t.expires = 0
|
||
|
|
t.applied = 0
|
||
|
|
t.caster = "nobody"
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
-- Movement speed increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=339412
|
||
|
|
demonic_momentum = {
|
||
|
|
id = 339412,
|
||
|
|
duration = 5,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Damage done increased by $w2%.
|
||
|
|
-- https://wowhead.com/beta/spell=171982
|
||
|
|
demonic_synergy = {
|
||
|
|
id = 171982,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Doomed to take $w1 Shadow damage.
|
||
|
|
-- https://wowhead.com/beta/spell=603
|
||
|
|
doom = {
|
||
|
|
id = 603,
|
||
|
|
duration = 20,
|
||
|
|
tick_time = 20,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $s1 Shadow damage every $t1 seconds. Restoring health to the Warlock.
|
||
|
|
-- https://wowhead.com/beta/spell=234153
|
||
|
|
drain_life = {
|
||
|
|
id = 234153,
|
||
|
|
duration = function () return 5 * haste * ( legendary.claw_of_endereth.enabled and 0.5 or 1 ) end,
|
||
|
|
tick_time = function () return haste * ( legendary.claw_of_endereth.enabled and 0.5 or 1 ) end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Shadow damage every $t1 seconds.
|
||
|
|
-- https://wowhead.com/beta/spell=198590
|
||
|
|
drain_soul = {
|
||
|
|
id = 198590,
|
||
|
|
duration = 5,
|
||
|
|
tick_time = 1,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Healing for $m1% of maximum health every $t1 sec.; Spell casts are not delayed by taking damage.
|
||
|
|
empowered_healthstone = {
|
||
|
|
id = 262080,
|
||
|
|
duration = 6.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- Talent: Damage taken from the Warlock increased by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=196414
|
||
|
|
eradication = {
|
||
|
|
id = 196414,
|
||
|
|
duration = 7,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Controlling Eye of Kilrogg. Detecting Invisibility.
|
||
|
|
-- https://wowhead.com/beta/spell=126
|
||
|
|
eye_of_kilrogg = {
|
||
|
|
id = 126,
|
||
|
|
duration = 45,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
2 years ago
|
-- $w1 damage is being delayed every $387846t1 sec.; Damage Remaining: $w2
|
||
|
3 years ago
|
fel_armor = {
|
||
|
2 years ago
|
id = 387847,
|
||
|
3 years ago
|
duration = 5,
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 387846
|
||
|
|
},
|
||
|
|
-- Talent: Imp, Voidwalker, Succubus, Felhunter, or Felguard casting time reduced by $/1000;S1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=333889
|
||
|
|
fel_domination = {
|
||
|
|
id = 333889,
|
||
|
|
duration = 15,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Haste increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=387263
|
||
|
|
flashpoint = {
|
||
|
|
id = 387263,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 3
|
||
|
|
},
|
||
|
|
-- Talent: Sacrificed your demon pet to gain its command demon ability. Your spells sometimes deal additional Shadow damage.
|
||
|
|
-- https://wowhead.com/beta/spell=196099
|
||
|
|
grimoire_of_sacrifice = {
|
||
|
|
id = 196099,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Taking $s2% increased damage from the Warlock. Haunt's cooldown will be reset on death.
|
||
|
|
-- https://wowhead.com/beta/spell=48181
|
||
|
|
haunt = {
|
||
|
|
id = 48181,
|
||
|
|
duration = 18,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Spells cast by the Warlock also hit this target for $s1% of normal initial damage.
|
||
|
|
-- https://wowhead.com/beta/spell=80240
|
||
|
|
havoc = {
|
||
|
|
id = 80240,
|
||
|
|
duration = function()
|
||
|
|
if talent.mayhem.enabled then return 5 end
|
||
|
|
return talent.pandemonium.enabled and 15 or 12
|
||
|
|
end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Transferring health.
|
||
|
|
-- https://wowhead.com/beta/spell=755
|
||
|
|
health_funnel = {
|
||
|
|
id = 755,
|
||
|
|
duration = 5,
|
||
|
|
tick_time = 1,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Disoriented.
|
||
|
|
-- https://wowhead.com/beta/spell=5484
|
||
|
|
howl_of_terror = {
|
||
|
|
id = 5484,
|
||
|
|
duration = 20,
|
||
|
|
mechanic = "flee",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Fire damage every $t1 sec.$?a339892[ Damage taken by Chaos Bolt and Incinerate increased by $w2%.][]
|
||
|
|
-- https://wowhead.com/beta/spell=157736
|
||
|
|
immolate = {
|
||
|
|
id = 157736,
|
||
|
1 year ago
|
duration = function() return ( 18 + 3 * talent.scalding_flames.rank ) * haste end,
|
||
|
3 years ago
|
tick_time = function() return 3 * haste end,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Shadow damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=322170
|
||
|
|
impending_catastrophe = {
|
||
|
|
id = 322170,
|
||
|
|
duration = 12,
|
||
|
|
tick_time = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Every $s1 Soul Shards spent grants Ritual of Ruin, making your next Chaos Bolt or Rain of Fire consume no Soul Shards and have its cast time reduced by $387157s3%.
|
||
|
|
-- https://wowhead.com/beta/spell=387158
|
||
|
|
impending_ruin = {
|
||
|
|
id = 387158,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 15
|
||
|
|
},
|
||
|
|
infernal = {
|
||
|
|
duration = 30,
|
||
|
|
generate = function( inf )
|
||
|
|
if pet.infernal.alive then
|
||
|
|
inf.count = 1
|
||
|
|
inf.applied = pet.infernal.expires - 30
|
||
|
|
inf.expires = pet.infernal.expires
|
||
|
|
inf.caster = "player"
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
inf.count = 0
|
||
|
|
inf.applied = 0
|
||
|
|
inf.expires = 0
|
||
|
|
inf.caster = "nobody"
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
infernal_awakening = {
|
||
|
|
id = 22703,
|
||
|
|
duration = 2,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
1 year ago
|
-- Soul Leech can absorb an additional $s1% of your maximum health.
|
||
|
|
infernal_bulwark = {
|
||
|
|
id = 434561,
|
||
|
|
duration = 8.0,
|
||
|
|
max_stack = 1,
|
||
|
3 years ago
|
},
|
||
|
1 year ago
|
-- Healing for ${$s1*($d/$t1)}% of your maximum health over $d.
|
||
|
|
infernal_vitality = {
|
||
|
|
id = 434559,
|
||
|
|
duration = 10.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Inflicts Shadow damage.
|
||
|
|
laserbeam = {
|
||
|
|
id = 212529,
|
||
|
|
duration = 0.0,
|
||
|
|
max_stack = 1,
|
||
|
3 years ago
|
},
|
||
|
|
-- Talent: Leech increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=386647
|
||
|
|
lifeblood = {
|
||
|
|
id = 386647,
|
||
|
|
duration = 20,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
1 year ago
|
-- Haste increased by $w1% and $?s324536[Malefic Rapture grants $w2 additional stack of Wither to targets affected by Unstable Affliction.][Chaos Bolt grants $w3 additional stack of Wither.]; All of your active Withers are acute.
|
||
|
|
malevolence = {
|
||
|
|
id = 442726,
|
||
|
|
duration = 20.0,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
3 years ago
|
-- Talent: Incapacitated.
|
||
|
|
-- https://wowhead.com/beta/spell=6789
|
||
|
|
mortal_coil = {
|
||
|
|
id = 6789,
|
||
|
|
duration = 3,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Reflecting all spells.
|
||
|
|
-- https://wowhead.com/beta/spell=212295
|
||
|
|
nether_ward = {
|
||
|
|
id = 212295,
|
||
|
|
duration = 3,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Movement speed increased by $s3%.
|
||
|
|
-- https://wowhead.com/beta/spell=30151
|
||
|
|
pursuit = {
|
||
|
|
id = 30151,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Fire damage taken increased by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=387096
|
||
|
|
pyrogenics = {
|
||
|
|
id = 387096,
|
||
|
|
duration = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
rain_of_chaos = {
|
||
|
|
id = 266087,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: $42223s1 Fire damage every $5740t2 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=5740
|
||
|
|
rain_of_fire = {
|
||
|
|
id = 5740,
|
||
|
|
duration = 8,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Haste increased by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=266030
|
||
|
|
reverse_entropy = {
|
||
|
|
id = 266030,
|
||
|
|
duration = 8,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Your next Chaos Bolt or Rain of Fire cost no Soul Shards and has its cast time reduced by 50%.
|
||
|
|
ritual_of_ruin = {
|
||
|
|
id = 387157,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
--
|
||
|
|
-- https://wowhead.com/beta/spell=698
|
||
|
|
ritual_of_summoning = {
|
||
|
|
id = 698,
|
||
|
|
duration = 120,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Damage increased by $W1%.
|
||
|
|
-- https://wowhead.com/beta/spell=387570
|
||
|
|
rolling_havoc = {
|
||
|
|
id = 387570,
|
||
|
|
duration = 6,
|
||
|
|
max_stack = 5
|
||
|
|
},
|
||
|
|
-- Covenant: Suffering $w2 Arcane damage every $t2 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=312321
|
||
|
|
scouring_tithe = {
|
||
|
|
id = 312321,
|
||
|
|
duration = 18,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Disoriented.
|
||
|
|
-- https://wowhead.com/beta/spell=6358
|
||
|
|
seduction = {
|
||
|
|
id = 6358,
|
||
|
|
duration = 30,
|
||
|
|
mechanic = "sleep",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Embeded with a demon seed that will soon explode, dealing Shadow damage to the caster's enemies within $27285A1 yards, and applying Corruption to them. The seed will detonate early if the target is hit by other detonations, or takes $w3 damage from your spells.
|
||
|
|
-- https://wowhead.com/beta/spell=27243
|
||
|
|
seed_of_corruption = {
|
||
|
|
id = 27243,
|
||
|
|
duration = 12,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Maximum health increased by $s1%.
|
||
|
|
-- https://wowhead.com/beta/spell=17767
|
||
|
|
shadow_bulwark = {
|
||
|
|
id = 17767,
|
||
|
|
duration = 20,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: If the target dies and yields experience or honor, Shadowburn restores ${$245731s1/10} Soul Shard and refunds a charge.
|
||
|
|
-- https://wowhead.com/beta/spell=17877
|
||
|
|
shadowburn = {
|
||
|
|
id = 17877,
|
||
|
|
duration = 5,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Slowed by $w1% for $d.
|
||
|
|
-- https://wowhead.com/beta/spell=384069
|
||
|
|
shadowflame = {
|
||
|
|
id = 384069,
|
||
|
|
duration = 6,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Stunned.
|
||
|
|
-- https://wowhead.com/beta/spell=30283
|
||
|
|
shadowfury = {
|
||
|
|
id = 30283,
|
||
|
|
duration = 3,
|
||
|
|
mechanic = "stun",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Shadow damage every $t1 sec and siphoning life to the casting Warlock.
|
||
|
|
-- https://wowhead.com/beta/spell=63106
|
||
|
|
siphon_life = {
|
||
|
|
id = 63106,
|
||
|
|
duration = 15,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Absorbs $w1 damage.
|
||
|
|
-- https://wowhead.com/beta/spell=108366
|
||
|
|
soul_leech = {
|
||
|
|
id = 108366,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: $s1% of all damage taken is split with the Warlock's summoned demon. The Warlock is healed for $s2% and your demon is healed for $s3% of all absorption granted by Soul Leech.
|
||
|
|
-- https://wowhead.com/beta/spell=108446
|
||
|
|
soul_link = {
|
||
|
|
id = 108446,
|
||
|
|
duration = 3600,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $s2 Nature damage every $t2 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=386997
|
||
|
|
soul_rot = {
|
||
|
|
id = 386997,
|
||
|
|
duration = 8,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1,
|
||
|
|
copy = 325640
|
||
|
|
},
|
||
|
|
--
|
||
|
|
-- https://wowhead.com/beta/spell=246985
|
||
|
|
soul_shards = {
|
||
|
|
id = 246985,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Consumes a Soul Shard, unlocking the hidden power of your spells. |cFFFFFFFFDemonic Circle: Teleport|r: Increases your movement speed by $387633s1% and makes you immune to snares and roots for $387633d. |cFFFFFFFFDemonic Gateway|r: Can be cast instantly. |cFFFFFFFFDrain Life|r: Gain an absorb shield equal to the amount of healing done for $387630d. This shield cannot exceed $387630s1% of your maximum health. |cFFFFFFFFHealth Funnel|r: Restores $387626s1% more health and reduces the damage taken by your pet by ${$abs($387641s1)}% for $387641d. |cFFFFFFFFHealthstone|r: Increases the healing of your Healthstone by $387626s2% and increases your maximum health by $387636s1% for $387636d.
|
||
|
|
-- https://wowhead.com/beta/spell=387626
|
||
|
|
soulburn = {
|
||
|
|
id = 387626,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
soulburn_demonic_circle = {
|
||
|
|
id = 387633,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
soulburn_drain_life = {
|
||
|
|
id = 394810,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
soulburn_health_funnel = {
|
||
|
|
id = 387641,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
soulburn_healthstone = {
|
||
|
|
id = 387636,
|
||
|
|
duration = 12,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Soul stored by $@auracaster.
|
||
|
|
-- https://wowhead.com/beta/spell=20707
|
||
|
|
soulstone = {
|
||
|
|
id = 20707,
|
||
|
|
duration = 900,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- $@auracaster's subject.
|
||
|
|
-- https://wowhead.com/beta/spell=1098
|
||
|
|
subjugate_demon = {
|
||
|
|
id = 1098,
|
||
|
|
duration = 300,
|
||
|
|
mechanic = "charm",
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
--
|
||
|
|
-- https://wowhead.com/beta/spell=101508
|
||
|
|
the_codex_of_xerrath = {
|
||
|
|
id = 101508,
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
tormented_souls = {
|
||
|
|
duration = 3600,
|
||
|
|
max_stack = 20,
|
||
|
|
generate = function( t )
|
||
|
|
local n = GetSpellCount( 386256 )
|
||
|
|
|
||
|
|
if n > 0 then
|
||
|
|
t.applied = query_time
|
||
|
|
t.duration = 3600
|
||
|
|
t.expires = t.applied + 3600
|
||
|
|
t.count = n
|
||
|
|
t.caster = "player"
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
t.applied = 0
|
||
|
|
t.duration = 0
|
||
|
|
t.expires = 0
|
||
|
|
t.count = 0
|
||
|
|
t.caster = "nobody"
|
||
|
|
end,
|
||
|
|
copy = "tormented_soul"
|
||
|
|
},
|
||
|
|
-- Damage dealt by your demons increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=339784
|
||
|
|
tyrants_soul = {
|
||
|
|
id = 339784,
|
||
|
|
duration = 15,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Dealing $w1 Shadowflame damage every $t1 sec for $d.
|
||
|
|
-- https://wowhead.com/beta/spell=273526
|
||
|
|
umbral_blaze = {
|
||
|
|
id = 273526,
|
||
|
|
duration = 6,
|
||
|
|
tick_time = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
unending_breath = {
|
||
|
|
id = 5697,
|
||
|
|
duration = 600,
|
||
|
|
max_stack = 1,
|
||
|
|
},
|
||
|
|
-- Damage taken reduced by $w3% Immune to interrupt and silence effects.
|
||
|
|
-- https://wowhead.com/beta/spell=104773
|
||
|
|
unending_resolve = {
|
||
|
|
id = 104773,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w2 Shadow damage every $t2 sec. If dispelled, will cause ${$w2*$s1/100} damage to the dispeller and silence them for $196364d.
|
||
|
|
-- https://wowhead.com/beta/spell=316099
|
||
|
|
unstable_affliction = {
|
||
|
|
id = 316099,
|
||
|
|
duration = 16,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Suffering $w1 Shadow damage every $t1 sec.
|
||
|
|
-- https://wowhead.com/beta/spell=386931
|
||
|
|
vile_taint = {
|
||
|
|
id = 386931,
|
||
|
|
duration = 10,
|
||
|
|
tick_time = 2,
|
||
|
|
type = "Magic",
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
-- Talent: Damage done increased by $w1%.
|
||
|
|
-- https://wowhead.com/beta/spell=386865
|
||
|
|
wrathful_minion = {
|
||
|
|
id = 386865,
|
||
|
|
duration = 8,
|
||
|
|
max_stack = 1,
|
||
|
|
generate = function( t )
|
||
|
|
local name, _, count, _, duration, expires, caster = FindUnitBuffByID( "pet", 386865 )
|
||
|
|
|
||
|
|
if name then
|
||
|
|
t.name = name
|
||
|
|
t.count = count
|
||
|
|
t.expires = expires
|
||
|
|
t.applied = expires - duration
|
||
|
|
t.caster = caster
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
t.count = 0
|
||
|
|
t.expires = 0
|
||
|
|
t.applied = 0
|
||
|
|
t.caster = "nobody"
|
||
|
|
end,
|
||
|
|
},
|
||
|
1 year ago
|
-- Suffering $w1 Shadowflame damage every $t1 sec.$?a339892[ ; Damage taken by Chaos Bolt and Incinerate increased by $w2%.][]
|
||
|
|
wither = {
|
||
|
|
id = 445474,
|
||
|
|
duration = function() return ( 18.0 + 3 * talent.scalding_flames.rank ) * ( 1 - 0.15 * talent.hatefury_rituals.rank ) end,
|
||
|
|
tick_time = 2.0,
|
||
|
|
pandemic = true,
|
||
|
|
max_stack = 8,
|
||
|
|
},
|
||
|
3 years ago
|
|
||
|
|
-- Azerite Powers
|
||
|
|
chaos_shards = {
|
||
|
|
id = 287660,
|
||
|
|
duration = 2,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Conduit
|
||
|
|
combusting_engine = {
|
||
|
|
id = 339986,
|
||
|
|
duration = 30,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Legendary
|
||
|
|
odr_shawl_of_the_ymirjar = {
|
||
|
|
id = 337164,
|
||
|
|
duration = function () return class.auras.havoc.duration end,
|
||
|
|
max_stack = 1
|
||
|
|
},
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterHook( "runHandler", function( a )
|
||
|
|
if talent.rolling_havoc.enabled and havoc_active and not debuff.havoc.up and action[ a ].startsCombat then
|
||
|
|
addStack( "rolling_havoc" )
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterHook( "spend", function( amt, resource )
|
||
|
|
if resource == "soul_shards" then
|
||
|
|
if amt > 0 then
|
||
|
|
if legendary.wilfreds_sigil_of_superior_summoning.enabled then reduceCooldown( "summon_infernal", amt * 1.5 ) end
|
||
|
|
|
||
|
|
if talent.grand_warlocks_design.enabled then reduceCooldown( "summon_infernal", amt * 1.5 ) end
|
||
|
|
if talent.power_overwhelming.enabled then addStack( "power_overwhelming", ( buff.power_overwhelming.up and buff.power_overwhelming.remains or nil ), amt ) end
|
||
|
|
if talent.ritual_of_ruin.enabled then
|
||
|
|
addStack( "impending_ruin", nil, amt )
|
||
|
|
if buff.impending_ruin.stack > 15 - ceil( 2.5 * talent.master_ritualist.rank ) then
|
||
|
|
applyBuff( "ritual_of_ruin" )
|
||
|
|
removeBuff( "impending_ruin" )
|
||
|
|
end
|
||
|
|
end
|
||
|
|
elseif amt < 0 and floor( soul_shard ) < floor( soul_shard + amt ) then
|
||
|
|
if talent.demonic_inspiration.enabled then applyBuff( "demonic_inspiration" ) end
|
||
|
|
if talent.wrathful_minion.enabled then applyBuff( "wrathful_minion" ) end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
|
local lastTarget
|
||
|
|
local lastMayhem = 0
|
||
|
|
|
||
|
|
spec:RegisterHook( "COMBAT_LOG_EVENT_UNFILTERED", function( _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName )
|
||
|
|
if sourceGUID == GUID then
|
||
|
|
if subtype == "SPELL_CAST_SUCCESS" and destGUID ~= nil and destGUID ~= "" then
|
||
|
|
lastTarget = destGUID
|
||
|
|
elseif state.talent.mayhem.enabled and subtype == "SPELL_AURA_APPLIED" and spellID == 80240 then
|
||
|
|
lastMayhem = GetTime()
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end, false )
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "last_havoc", function ()
|
||
|
|
if talent.mayhem.enabled then return lastMayhem end
|
||
|
|
return pvptalent.bane_of_havoc.enabled and action.bane_of_havoc.lastCast or action.havoc.lastCast
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "havoc_remains", function ()
|
||
|
|
return buff.active_havoc.remains
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "havoc_active", function ()
|
||
|
|
return buff.active_havoc.up
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterHook( "TimeToReady", function( wait, action )
|
||
|
|
local ability = action and class.abilities[ action ]
|
||
|
|
|
||
|
|
if ability and ability.spend and ability.spendType == "soul_shards" and ability.spend > soul_shard then
|
||
|
|
wait = 3600
|
||
|
|
end
|
||
|
|
|
||
|
|
return wait
|
||
|
|
end )
|
||
|
|
|
||
|
|
spec:RegisterStateExpr( "soul_shard", function () return soul_shards.current end )
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
-- Tier 29
|
||
|
2 years ago
|
spec:RegisterGear( "tier29", 200336, 200338, 200333, 200335, 200337, 217212, 217214, 217215, 217211, 217213 )
|
||
|
3 years ago
|
spec:RegisterAura( "chaos_maelstrom", {
|
||
|
|
id = 394679,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
} )
|
||
|
|
|
||
|
3 years ago
|
spec:RegisterGear( "tier30", 202534, 202533, 202532, 202536, 202531 )
|
||
|
|
spec:RegisterAura( "umbrafire_embers", {
|
||
|
|
id = 409652,
|
||
|
|
duration = 13,
|
||
|
|
max_stack = 8
|
||
|
|
} )
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterGear( "tier31", 207270, 207271, 207272, 207273, 207275 )
|
||
|
|
spec:RegisterAura( "searing_bolt", {
|
||
|
|
id = 423886,
|
||
|
|
duration = 10,
|
||
|
|
max_stack = 1
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
3 years ago
|
|
||
|
|
local SUMMON_DEMON_TEXT
|
||
|
|
|
||
|
|
spec:RegisterHook( "reset_precast", function ()
|
||
|
|
last_havoc = nil
|
||
|
|
soul_shards.actual = nil
|
||
|
|
|
||
|
|
class.abilities.summon_pet = class.abilities[ settings.default_pet ]
|
||
|
|
|
||
|
|
if not SUMMON_DEMON_TEXT then
|
||
|
|
SUMMON_DEMON_TEXT = GetSpellInfo( 180284 )
|
||
|
|
class.abilityList.summon_pet = "|T136082:0|t |cff00ccff[" .. ( SUMMON_DEMON_TEXT or "Summon Demon" ) .. "]|r"
|
||
|
|
end
|
||
|
|
|
||
|
|
for i = 1, 5 do
|
||
|
|
local up, _, start, duration, id = GetTotemInfo( i )
|
||
|
|
|
||
|
|
if up and id == 136219 then
|
||
|
|
summonPet( "infernal", start + duration - now )
|
||
|
|
break
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if pvptalent.bane_of_havoc.enabled then
|
||
|
|
class.abilities.havoc = class.abilities.bane_of_havoc
|
||
|
|
else
|
||
|
|
class.abilities.havoc = class.abilities.real_havoc
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterCycle( function ()
|
||
|
|
if active_enemies == 1 then return end
|
||
|
|
|
||
|
|
-- For Havoc, we want to cast it on a different target.
|
||
|
|
if this_action == "havoc" and class.abilities.havoc.key == "havoc" then return "cycle" end
|
||
|
|
|
||
|
|
if ( debuff.havoc.up or FindUnitDebuffByID( "target", 80240, "PLAYER" ) ) and not legendary.odr_shawl_of_the_ymirjar.enabled then
|
||
|
|
return "cycle"
|
||
|
|
end
|
||
|
|
end )
|
||
|
|
|
||
|
|
|
||
|
|
local Glyphed = IsSpellKnownOrOverridesKnown
|
||
|
|
|
||
|
|
-- Fel Imp 58959
|
||
|
|
spec:RegisterPet( "imp",
|
||
|
|
function() return Glyphed( 112866 ) and 58959 or 416 end,
|
||
|
|
"summon_imp",
|
||
|
|
3600 )
|
||
|
|
|
||
|
|
-- Voidlord 58960
|
||
|
|
spec:RegisterPet( "voidwalker",
|
||
|
|
function() return Glyphed( 112867 ) and 58960 or 1860 end,
|
||
|
|
"summon_voidwalker",
|
||
|
|
3600 )
|
||
|
|
|
||
|
|
-- Observer 58964
|
||
|
|
spec:RegisterPet( "felhunter",
|
||
|
|
function() return Glyphed( 112869 ) and 58964 or 417 end,
|
||
|
|
"summon_felhunter",
|
||
|
|
3600 )
|
||
|
|
|
||
|
|
-- Fel Succubus 120526
|
||
|
|
-- Shadow Succubus 120527
|
||
|
|
-- Shivarra 58963
|
||
|
|
spec:RegisterPet( "sayaad",
|
||
|
|
function()
|
||
|
|
if Glyphed( 240263 ) then return 120526
|
||
|
|
elseif Glyphed( 240266 ) then return 120527
|
||
|
|
elseif Glyphed( 112868 ) then return 58963
|
||
|
|
elseif Glyphed( 365349 ) then return 184600
|
||
|
|
end
|
||
|
|
return 1863
|
||
|
|
end,
|
||
|
|
"summon_sayaad",
|
||
|
|
3600,
|
||
|
|
"incubus", "succubus" )
|
||
|
|
|
||
|
|
-- Wrathguard 58965
|
||
|
|
spec:RegisterPet( "felguard",
|
||
|
|
function() return Glyphed( 112870 ) and 58965 or 17252 end,
|
||
|
|
"summon_felguard",
|
||
|
|
3600 )
|
||
|
|
|
||
|
|
|
||
|
|
-- Abilities
|
||
|
|
spec:RegisterAbilities( {
|
||
|
1 year ago
|
-- Calls forth a cataclysm at the target location, dealing $s1 Shadowflame damage to all enemies within $A1 yards and afflicting them with $?a445465[Wither][Immolate].
|
||
|
3 years ago
|
cataclysm = {
|
||
|
|
id = 152108,
|
||
|
|
cast = 2,
|
||
|
|
cooldown = 30,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadowflame",
|
||
|
|
|
||
|
|
spend = 0.01,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "cataclysm",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
3 years ago
|
toggle = function()
|
||
|
|
if active_enemies == 1 then return "interrupts" end
|
||
|
|
end,
|
||
|
|
|
||
|
3 years ago
|
handler = function ()
|
||
|
1 year ago
|
local applies = talent.wither.enabled and "wither" or "immolate"
|
||
|
|
applyDebuff( "target", applies )
|
||
|
|
active_dot[ applies ] = max( active_dot[ applies ], true_active_enemies )
|
||
|
3 years ago
|
removeDebuff( "target", "combusting_engine" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- Launches $s1 bolts of felfire over $d at random targets afflicted by your $?a445465[Wither][Immolate] within $196449A1 yds. Each bolt deals $196448s1 Fire damage to the target and $196448s2 Fire damage to nearby enemies.
|
||
|
3 years ago
|
channel_demonfire = {
|
||
|
|
id = 196447,
|
||
|
1 year ago
|
cast = function() return class.auras.channel_demonfire.duration end,
|
||
|
3 years ago
|
channeled = true,
|
||
|
|
cooldown = 25,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = 0.015,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "channel_demonfire",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
1 year ago
|
usable = function () return active_dot[ talent.wither.enabled and "wither" or "immolate" ] > 0 end,
|
||
|
3 years ago
|
|
||
|
|
start = function()
|
||
|
|
removeBuff( "umbrafire_embers" )
|
||
|
|
end
|
||
|
|
|
||
|
3 years ago
|
-- With raging_demonfire, this will extend Immolates but it's not worth modeling for the addon ( 0.2s * 17-20 ticks ).
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Unleashes a devastating blast of chaos, dealing a critical strike for 8,867 Chaos damage. Damage is further increased by your critical strike chance.
|
||
|
|
chaos_bolt = {
|
||
|
|
id = 116858,
|
||
|
1 year ago
|
cast = function () return ( 3 - 0.5 * talent.improved_chaos_bolt.rank )
|
||
|
3 years ago
|
* ( buff.ritual_of_ruin.up and 0.5 or 1 )
|
||
|
|
* ( buff.backdraft.up and 0.7 or 1 )
|
||
|
1 year ago
|
* haste
|
||
|
3 years ago
|
end,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chromatic",
|
||
|
|
|
||
|
|
spend = function ()
|
||
|
|
if buff.ritual_of_ruin.up then return 0 end
|
||
|
2 years ago
|
return 2
|
||
|
3 years ago
|
end,
|
||
|
|
spendType = "soul_shards",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
cycle = function () return talent.eradication.enabled and "eradication" or nil end,
|
||
|
|
|
||
|
|
velocity = 16,
|
||
|
|
|
||
|
2 years ago
|
handler = function ()
|
||
|
3 years ago
|
removeStack( "crashing_chaos" )
|
||
|
|
if buff.ritual_of_ruin.up then
|
||
|
|
removeBuff( "ritual_of_ruin" )
|
||
|
|
if talent.avatar_of_destruction.enabled then applyBuff( "blasphemy" ) end
|
||
|
|
else
|
||
|
|
removeStack( "backdraft" )
|
||
|
|
end
|
||
|
1 year ago
|
if debuff.wither.up then
|
||
|
|
applyDebuff( "target", "wither", nil, debuff.wither.stack + 1 + ( buff.malevolence.up and 1 or 0 ) )
|
||
|
|
end
|
||
|
3 years ago
|
if talent.burn_to_ashes.enabled then
|
||
|
|
addStack( "burn_to_ashes", nil, 2 )
|
||
|
|
end
|
||
|
|
if talent.eradication.enabled then
|
||
|
|
applyDebuff( "target", "eradication" )
|
||
|
|
active_dot.eradication = max( active_dot.eradication, active_dot.bane_of_havoc )
|
||
|
|
end
|
||
|
|
if talent.internal_combustion.enabled and debuff.immolate.up then
|
||
|
|
if debuff.immolate.remains <= 5 then removeDebuff( "target", "immolate" )
|
||
|
|
else debuff.immolate.expires = debuff.immolate.expires - 5 end
|
||
|
|
end
|
||
|
|
end,
|
||
|
3 years ago
|
|
||
|
|
impact = function() end,
|
||
|
3 years ago
|
},
|
||
|
|
|
||
|
|
--[[ Commands your demon to perform its most powerful ability. This spell will transform based on your active pet. Felhunter: Devour Magic Voidwalker: Shadow Bulwark Incubus/Succubus: Seduction Imp: Singe Magic
|
||
|
|
command_demon = {
|
||
|
|
id = 119898,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "off",
|
||
|
|
school = "physical",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
end,
|
||
|
|
}, ]]
|
||
|
|
|
||
|
|
-- Talent: Triggers an explosion on the target, dealing 3,389 Fire damage. Reduces the cast time of your next Incinerate or Chaos Bolt by 30% for 10 sec. Generates 5 Soul Shard Fragments.
|
||
|
|
conflagrate = {
|
||
|
|
id = 17962,
|
||
|
|
cast = 0,
|
||
|
|
charges = function() return talent.improved_conflagrate.enabled and 3 or 2 end,
|
||
|
|
cooldown = function() return talent.explosive_potential.enabled and 11 or 13 end,
|
||
|
|
recharge = function() return talent.explosive_potential.enabled and 11 or 13 end,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = 0.01,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "conflagrate",
|
||
|
|
startsCombat = true,
|
||
|
|
cycle = function () return talent.roaring_blaze.enabled and "conflagrate" or nil end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
gain( 0.5, "soul_shards" )
|
||
|
|
addStack( "backdraft" )
|
||
|
|
|
||
|
|
removeBuff( "conflagration_of_chaos_cf" )
|
||
|
|
|
||
|
|
if talent.decimation.enabled and target.health_pct < 50 then reduceCooldown( "soulfire", 5 ) end
|
||
|
|
if talent.roaring_blaze.enabled then
|
||
|
|
applyDebuff( "target", "conflagrate" )
|
||
|
|
active_dot.conflagrate = max( active_dot.conflagrate, active_dot.bane_of_havoc )
|
||
|
|
end
|
||
|
|
if conduit.combusting_engine.enabled then
|
||
|
|
applyDebuff( "target", "combusting_engine" )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- Corrupts the target, causing $s3 Shadow damage and $?a196103[$146739s1 Shadow damage every $146739t1 sec.][an additional $146739o1 Shadow damage over $146739d.]
|
||
|
|
corruption = {
|
||
|
|
id = 172,
|
||
|
|
cast = 2.0,
|
||
|
|
cooldown = 0.0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = 0.010,
|
||
|
|
spendType = 'mana',
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function()
|
||
|
|
applyDebuff( "target", "corruption" )
|
||
|
|
end,
|
||
|
|
|
||
|
|
-- Effects:
|
||
|
|
-- #0: { 'type': TRIGGER_SPELL, 'subtype': NONE, 'trigger_spell': 146739, 'target': TARGET_UNIT_TARGET_ENEMY, }
|
||
|
|
-- #1: { 'type': DUMMY, 'subtype': NONE, }
|
||
|
|
-- #2: { 'type': SCHOOL_DAMAGE, 'subtype': NONE, 'sp_bonus': 0.138, 'pvp_multiplier': 1.25, 'variance': 0.05, 'target': TARGET_UNIT_TARGET_ENEMY, }
|
||
|
|
|
||
|
|
-- Affected by:
|
||
|
|
-- destruction_warlock[137046] #12: { 'type': APPLY_AURA, 'subtype': OVERRIDE_ACTIONBAR_SPELLS, 'spell': 348, 'target': TARGET_UNIT_CASTER, }
|
||
|
|
-- mark_of_perotharn[440045] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 10.0, 'target': TARGET_UNIT_CASTER, 'modifies': SHOULD_NEVER_SEE_15, }
|
||
|
|
-- xalans_cruelty[440040] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 10.0, 'target': TARGET_UNIT_CASTER, 'modifies': CRIT_CHANCE, }
|
||
|
|
-- xalans_cruelty[440040] #2: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- xalans_cruelty[440040] #3: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- absolute_corruption[196103] #1: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 15.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- wither[445465] #0: { 'type': APPLY_AURA, 'subtype': OVERRIDE_ACTIONBAR_SPELLS, 'spell': 445468, 'value1': 3, 'target': TARGET_UNIT_CASTER, }
|
||
|
|
},
|
||
|
|
|
||
|
3 years ago
|
--[[ Creates a Healthstone that can be consumed to restore 25% health. When you use a Healthstone, gain 7% Leech for 20 sec.
|
||
|
|
create_healthstone = {
|
||
|
|
id = 6201,
|
||
|
|
cast = 3,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 0.02,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
end,
|
||
|
|
}, ]]
|
||
|
|
|
||
|
|
|
||
|
|
-- Talent: Rips a hole in time and space, opening a random portal that damages your target: Shadowy Tear Deals 15,954 Shadow damage over 14 sec. Unstable Tear Deals 13,709 Chaos damage over 6 sec. Chaos Tear Fires a Chaos Bolt, dealing 4,524 Chaos damage. This Chaos Bolt always critically strikes and your critical strike chance increases its damage. Generates 3 Soul Shard Fragments.
|
||
|
|
dimensional_rift = {
|
||
|
|
id = 387976,
|
||
|
|
cast = 0,
|
||
|
|
charges = 3,
|
||
|
|
cooldown = 45,
|
||
|
|
recharge = 45,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "chaos",
|
||
|
|
|
||
|
|
spend = -0.3,
|
||
|
|
spendType = "soul_shards",
|
||
|
|
|
||
|
|
talent = "dimensional_rift",
|
||
|
|
startsCombat = true,
|
||
|
|
},
|
||
|
|
|
||
|
|
--[[ Summons an Eye of Kilrogg and binds your vision to it. The eye is stealthed and moves quickly but is very fragile.
|
||
|
|
eye_of_kilrogg = {
|
||
|
|
id = 126,
|
||
|
|
cast = 2,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 0.03,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "eye_of_kilrogg" )
|
||
|
|
end,
|
||
|
|
}, ]]
|
||
|
|
|
||
|
|
|
||
|
|
-- Talent: Sacrifices your demon pet for power, gaining its command demon ability, and causing your spells to sometimes also deal 1,678 additional Shadow damage. Lasts 1 |4hour:hrs; or until you summon a demon pet.
|
||
|
|
grimoire_of_sacrifice = {
|
||
|
|
id = 108503,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 30,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
talent = "grimoire_of_sacrifice",
|
||
|
|
startsCombat = false,
|
||
|
|
essential = true,
|
||
|
|
|
||
|
|
nobuff = "grimoire_of_sacrifice",
|
||
|
|
|
||
|
|
usable = function () return pet.active, "requires a pet to sacrifice" end,
|
||
|
|
handler = function ()
|
||
|
|
if pet.felhunter.alive then dismissPet( "felhunter" )
|
||
|
|
elseif pet.imp.alive then dismissPet( "imp" )
|
||
|
|
elseif pet.succubus.alive then dismissPet( "succubus" )
|
||
|
|
elseif pet.voidawalker.alive then dismissPet( "voidwalker" ) end
|
||
|
|
applyBuff( "grimoire_of_sacrifice" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Marks a target with Havoc for 15 sec, causing your single target spells to also strike the Havoc victim for 60% of normal initial damage.
|
||
|
|
havoc = {
|
||
|
|
id = 80240,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 30,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 0.02,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "havoc",
|
||
|
|
startsCombat = true,
|
||
|
|
indicator = function () return active_enemies > 1 and ( lastTarget == "lastTarget" or target.unit == lastTarget ) and "cycle" or nil end,
|
||
|
|
cycle = "havoc",
|
||
|
|
|
||
|
|
bind = "bane_of_havoc",
|
||
|
|
|
||
|
3 years ago
|
usable = function()
|
||
|
|
if pvptalent.bane_of_havoc.enabled then return false, "pvptalent bane_of_havoc enabled" end
|
||
|
|
return talent.cry_havoc.enabled or active_enemies > 1, "requires cry_havoc or multiple targets"
|
||
|
|
end,
|
||
|
3 years ago
|
|
||
|
|
handler = function ()
|
||
|
|
if class.abilities.havoc.indicator == "cycle" then
|
||
|
|
active_dot.havoc = active_dot.havoc + 1
|
||
|
|
if legendary.odr_shawl_of_the_ymirjar.enabled then active_dot.odr_shawl_of_the_ymirjar = 1 end
|
||
|
|
else
|
||
|
|
applyDebuff( "target", "havoc" )
|
||
|
|
if legendary.odr_shawl_of_the_ymirjar.enabled then applyDebuff( "target", "odr_shawl_of_the_ymirjar" ) end
|
||
|
|
end
|
||
|
|
applyBuff( "active_havoc" )
|
||
|
|
end,
|
||
|
|
|
||
|
|
copy = "real_havoc",
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
bane_of_havoc = {
|
||
|
|
id = 200546,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 45,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
cycle = "DoNotCycle",
|
||
|
|
|
||
|
|
bind = "havoc",
|
||
|
|
|
||
|
|
pvptalent = "bane_of_havoc",
|
||
|
|
usable = function () return active_enemies > 1, "requires multiple targets" end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "bane_of_havoc" )
|
||
|
|
active_dot.bane_of_havoc = active_enemies
|
||
|
|
applyBuff( "active_havoc" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Let loose a terrifying howl, causing 5 enemies within 10 yds to flee in fear, disorienting them for 20 sec. Damage may cancel the effect.
|
||
|
|
howl_of_terror = {
|
||
|
|
id = 5484,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 40,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
talent = "howl_of_terror",
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "howl_of_terror" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Burns the enemy, causing 1,559 Fire damage immediately and an additional 9,826 Fire damage over 24 sec. Periodic damage generates 1 Soul Shard Fragment and has a 50% chance to generate an additional 1 on critical strikes.
|
||
|
|
immolate = {
|
||
|
|
id = 348,
|
||
|
|
cast = 1.5,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = 0.015,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
cycle = function () return not debuff.immolate.refreshable and "immolate" or nil end,
|
||
|
1 year ago
|
notalent = "wither",
|
||
|
3 years ago
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "immolate" )
|
||
|
|
active_dot.immolate = max( active_dot.immolate, active_dot.bane_of_havoc )
|
||
|
|
removeDebuff( "target", "combusting_engine" )
|
||
|
|
if talent.flashpoint.enabled and target.health_pct > 80 then addStack( "flashpoint" ) end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Draws fire toward the enemy, dealing 3,794 Fire damage. Generates 2 Soul Shard Fragments and an additional 1 on critical strikes.
|
||
|
|
incinerate = {
|
||
|
|
id = 29722,
|
||
|
|
cast = function ()
|
||
|
|
if buff.chaotic_inferno.up then return 0 end
|
||
|
|
return 2 * haste
|
||
|
|
* ( buff.backdraft.up and 0.7 or 1 )
|
||
|
|
end,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = 0.015,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
removeBuff( "chaotic_inferno" )
|
||
|
|
removeStack( "backdraft" )
|
||
|
|
removeStack( "burn_to_ashes" )
|
||
|
|
removeStack( "decimating_bolt" )
|
||
|
|
|
||
|
|
if talent.decimation.enabled and target.health_pct < 50 then reduceCooldown( "soulfire", 5 ) end
|
||
|
|
|
||
|
|
-- Using true_active_enemies for resource predictions' sake.
|
||
|
|
gain( ( 0.2 + ( 0.125 * ( true_active_enemies - 1 ) * talent.fire_and_brimstone.rank ) )
|
||
|
|
* ( legendary.embers_of_the_diabolic_raiment.enabled and 2 or 1 )
|
||
|
|
* ( talent.diabolic_embers.enabled and 2 or 1 ), "soul_shards" )
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- [430014] Dark magic erupts from you and corrupts your soul for $442726d, causing enemies suffering from your Wither to take $446285s1 Shadowflame damage and increase its stack count by $s1.; While corrupted your Haste is increased by $442726s1% and spending Soul Shards on damaging spells grants $s2 additional stack of Wither.
|
||
|
|
malevolence = {
|
||
|
|
id = 442726,
|
||
|
|
cast = 0.0,
|
||
|
|
cooldown = 60.0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = 0.010,
|
||
|
|
spendType = 'mana',
|
||
|
|
|
||
|
|
talent = "malevolence",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyBuff( "malevolence")
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Calls down a rain of hellfire, dealing ${$42223m1*8} Fire damage over $d to enemies in the area.
|
||
|
3 years ago
|
rain_of_fire = {
|
||
|
|
id = 5740,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 0,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = function ()
|
||
|
|
if buff.ritual_of_ruin.up then return 0 end
|
||
|
2 years ago
|
return 3
|
||
|
3 years ago
|
end,
|
||
|
|
spendType = "soul_shards",
|
||
|
|
|
||
|
|
talent = "rain_of_fire",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
removeStack( "crashing_chaos" )
|
||
|
|
if buff.ritual_of_ruin.up then
|
||
|
|
removeBuff( "ritual_of_ruin" )
|
||
|
|
if talent.avatar_of_destruction.enabled then applyBuff( "blasphemy" ) end
|
||
|
|
end
|
||
|
|
if talent.burn_to_ashes.enabled then
|
||
|
|
addStack( "burn_to_ashes", nil, 2 )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
--[[ Begins a ritual that sacrifices a random participant to summon a doomguard. Requires the caster and 4 additional party members to complete the ritual.
|
||
|
|
ritual_of_doom = {
|
||
|
|
id = 342601,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 3600,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 1,
|
||
|
|
spendType = "soul_shards",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Begins a ritual to create a summoning portal, requiring the caster and 2 allies to complete. This portal can be used to summon party and raid members.
|
||
|
|
ritual_of_summoning = {
|
||
|
|
id = 698,
|
||
|
|
cast = 0,
|
||
|
|
cooldown = 120,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 0.05,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
end,
|
||
|
|
}, ]]
|
||
|
|
|
||
|
1 year ago
|
-- Conjure a Shadow Rift at the target location lasting $d. Enemy players within the rift when it expires are teleported to your Demonic Circle.; Must be within $s2 yds of your Demonic Circle to cast.
|
||
|
|
shadow_rift = {
|
||
|
|
id = 353294,
|
||
|
|
cast = 0.0,
|
||
|
|
cooldown = 60.0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = 0.010,
|
||
|
|
spendType = 'mana',
|
||
|
|
|
||
|
|
startsCombat = false,
|
||
|
|
pvptalent = "shadow_rift",
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Blasts a target for $s1 Shadowflame damage, gaining $s3% critical strike chance on targets that have $s4% or less health.; Restores ${$245731s1/10} Soul Shard and refunds a charge if the target dies within $d.
|
||
|
3 years ago
|
shadowburn = {
|
||
|
|
id = 17877,
|
||
|
|
cast = 0,
|
||
|
|
charges = 2,
|
||
|
|
cooldown = 12,
|
||
|
|
recharge = 12,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "shadowflame",
|
||
|
|
|
||
|
2 years ago
|
spend = 1,
|
||
|
3 years ago
|
spendType = "soul_shards",
|
||
|
|
|
||
|
|
talent = "shadowburn",
|
||
|
|
startsCombat = true,
|
||
|
|
cycle = function () return talent.eradication.enabled and "eradication" or nil end,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
gain( 0.3, "soul_shards" )
|
||
|
|
applyDebuff( "target", "shadowburn" )
|
||
|
|
active_dot.shadowburn = max( active_dot.shadowburn, active_dot.bane_of_havoc )
|
||
|
|
|
||
|
|
removeBuff( "conflagration_of_chaos_sb" )
|
||
|
|
|
||
|
|
if talent.burn_to_ashes.enabled then
|
||
|
|
addStack( "burn_to_ashes" )
|
||
|
|
end
|
||
|
|
if talent.eradication.enabled then
|
||
|
|
applyDebuff( "target", "eradication" )
|
||
|
|
active_dot.eradication = max( active_dot.eradication, active_dot.bane_of_havoc )
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
1 year ago
|
-- Burns the enemy's soul, dealing $s1 Fire damage and applying $?a445465[Wither][Immolate].; Generates ${$281490s1/10} Soul Shard.
|
||
|
3 years ago
|
soul_fire = {
|
||
|
|
id = 6353,
|
||
|
1 year ago
|
cast = function () return 4 * ( buff.decimation.up and 0.2 or 1 ) * haste end,
|
||
|
3 years ago
|
cooldown = 45,
|
||
|
|
gcd = "spell",
|
||
|
|
school = "fire",
|
||
|
|
|
||
|
|
spend = 0.02,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "soul_fire",
|
||
|
|
startsCombat = true,
|
||
|
1 year ago
|
aura = function() return talent.wither.enabled and "wither" or "immolate" end,
|
||
|
3 years ago
|
|
||
|
|
handler = function ()
|
||
|
1 year ago
|
removeBuff( "decimation" )
|
||
|
3 years ago
|
gain( 1, "soul_shards" )
|
||
|
1 year ago
|
applyDebuff( "target", talent.wither.enabled and "wither" or "immolate" ) -- Add stack?
|
||
|
3 years ago
|
end,
|
||
|
|
},
|
||
|
|
|
||
|
|
-- Talent: Summons an Infernal from the Twisting Nether, impacting for 1,582 Fire damage and stunning all enemies in the area for 2 sec. The Infernal will serve you for 30 sec, dealing 1,160 damage to all nearby enemies every 1.6 sec and generating 1 Soul Shard Fragment every 0.5 sec.
|
||
|
|
summon_infernal = {
|
||
|
|
id = 1122,
|
||
|
|
cast = 0,
|
||
|
1 year ago
|
cooldown = 120,
|
||
|
3 years ago
|
gcd = "spell",
|
||
|
|
school = "shadow",
|
||
|
|
|
||
|
|
spend = 0.02,
|
||
|
|
spendType = "mana",
|
||
|
|
|
||
|
|
talent = "summon_infernal",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
toggle = "cooldowns",
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
summonPet( "infernal", 30 )
|
||
|
|
if talent.rain_of_chaos.enabled then applyBuff( "rain_of_chaos" ) end
|
||
|
2 years ago
|
if talent.crashing_chaos.enabled then applyBuff( "crashing_chaos", nil, 8 ) end
|
||
|
3 years ago
|
end,
|
||
|
|
},
|
||
|
1 year ago
|
|
||
|
|
-- Bestows a vile malediction upon the target, burning the sinew and muscle of its host, dealing $s1 Shadowflame damage immediately and an additional $445474o1 Shadowflame damage over $445474d.$?s137046[; Periodic damage generates 1 Soul Shard Fragment and has a $s2% chance to generate an additional 1 on critical strikes.; Replaces Immolate.][; Replaces Corruption.]
|
||
|
|
wither = {
|
||
|
|
id = 445468,
|
||
|
|
cast = 0.0,
|
||
|
|
cooldown = 0.0,
|
||
|
|
gcd = "spell",
|
||
|
|
|
||
|
|
spend = 0.015,
|
||
|
|
spendType = 'mana',
|
||
|
|
|
||
|
|
talent = "wither",
|
||
|
|
startsCombat = true,
|
||
|
|
|
||
|
|
handler = function ()
|
||
|
|
applyDebuff( "target", "wither" )
|
||
|
|
end,
|
||
|
|
|
||
|
|
-- Effects:
|
||
|
|
-- #0: { 'type': SCHOOL_DAMAGE, 'subtype': NONE, 'sp_bonus': 0.138, 'variance': 0.05, 'target': TARGET_UNIT_TARGET_ENEMY, }
|
||
|
|
-- #1: { 'type': DUMMY, 'subtype': NONE, }
|
||
|
|
-- #2: { 'type': TRIGGER_SPELL, 'subtype': NONE, 'trigger_spell': 445474, 'target': TARGET_UNIT_TARGET_ENEMY, }
|
||
|
|
|
||
|
|
-- Affected by:
|
||
|
|
-- destruction_warlock[137046] #12: { 'type': APPLY_AURA, 'subtype': OVERRIDE_ACTIONBAR_SPELLS, 'spell': 348, 'target': TARGET_UNIT_CASTER, }
|
||
|
|
-- socrethars_guile[405936] #2: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 10.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- bleakheart_tactics[440051] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER_BY_LABEL, 'points': 20.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- emberstorm[454744] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- flames_of_xoroth[429657] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- flames_of_xoroth[429657] #1: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- mark_of_perotharn[440045] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 10.0, 'target': TARGET_UNIT_CASTER, 'modifies': SHOULD_NEVER_SEE_15, }
|
||
|
|
-- mark_of_xavius[440046] #3: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 25.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- scalding_flames[388832] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 25.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- xalans_cruelty[440040] #2: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- xalans_cruelty[440040] #3: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- xalans_ferocity[440044] #0: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': DAMAGE_HEALING, }
|
||
|
|
-- xalans_ferocity[440044] #1: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 2.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- xalans_ferocity[440044] #3: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 10.0, 'target': TARGET_UNIT_CASTER, 'modifies': CRIT_CHANCE, }
|
||
|
|
-- absolute_corruption[196103] #1: { 'type': APPLY_AURA, 'subtype': ADD_PCT_MODIFIER, 'points': 15.0, 'target': TARGET_UNIT_CASTER, 'modifies': PERIODIC_DAMAGE_HEALING, }
|
||
|
|
-- wither[445465] #0: { 'type': APPLY_AURA, 'subtype': OVERRIDE_ACTIONBAR_SPELLS, 'spell': 445468, 'value1': 3, 'target': TARGET_UNIT_CASTER, }
|
||
|
|
-- wither[445465] #1: { 'type': APPLY_AURA, 'subtype': CAST_WHILE_WALKING, 'target': TARGET_UNIT_CASTER, }
|
||
|
|
},
|
||
|
3 years ago
|
} )
|
||
|
|
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterRanges( "corruption", "subjugate_demon", "mortal_coil" )
|
||
|
|
|
||
|
3 years ago
|
spec:RegisterOptions( {
|
||
|
|
enabled = true,
|
||
|
|
|
||
|
|
aoe = 3,
|
||
|
|
cycle = true,
|
||
|
|
|
||
|
|
nameplates = false,
|
||
|
2 years ago
|
nameplateRange = 40,
|
||
|
|
rangeFilter = false,
|
||
|
|
|
||
|
3 years ago
|
|
||
|
|
damage = true,
|
||
|
|
damageDots = false,
|
||
|
|
damageExpiration = 6,
|
||
|
|
|
||
|
|
potion = "spectral_intellect",
|
||
|
|
|
||
|
|
package = "Destruction",
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
spec:RegisterSetting( "default_pet", "summon_sayaad", {
|
||
|
|
name = "|T136082:0|t Preferred Demon",
|
||
|
|
desc = "Specify which demon should be summoned if you have no active pet.",
|
||
|
|
type = "select",
|
||
|
|
values = function()
|
||
|
|
return {
|
||
|
|
summon_sayaad = class.abilityList.summon_sayaad,
|
||
|
|
summon_imp = class.abilityList.summon_imp,
|
||
|
|
summon_felhunter = class.abilityList.summon_felhunter,
|
||
|
|
summon_voidwalker = class.abilityList.summon_voidwalker,
|
||
|
|
}
|
||
|
|
end,
|
||
|
|
width = "full"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "cleave_apl", false, {
|
||
|
|
name = function() return "|T" .. ( GetSpellTexture( 116858 ) ) .. ":0|t Funnel Damage in AOE" end,
|
||
|
|
desc = function()
|
||
|
|
return "If checked, the addon will use its cleave priority to funnel damage into your primary target (via |T" .. ( GetSpellTexture( 116858 ) ) .. ":0|t Chaos Bolt) instead of spending Soul Shards on |T" .. ( GetSpellTexture( 5740 ) ) .. ":0|t Rain of Fire.\n\n" ..
|
||
|
|
"You may wish to change this option for different fights and scenarios, which can be done here, via the minimap button, or with |cFFFFD100/hekili toggle cleave_apl|r."
|
||
|
|
end,
|
||
|
|
type = "toggle",
|
||
|
|
width = "full",
|
||
|
|
} )
|
||
|
|
|
||
|
2 years ago
|
spec:RegisterVariable( "cleave_apl", function()
|
||
|
|
if settings.cleave_apl ~= nil then return settings.cleave_apl end
|
||
|
|
return false
|
||
|
|
end )
|
||
|
|
|
||
|
3 years ago
|
--[[ Retired 2023-02-20.
|
||
|
|
spec:RegisterSetting( "fixed_aoe_3_plus", false, {
|
||
|
|
name = "Require 3+ Targets for AOE",
|
||
|
|
desc = function()
|
||
|
|
return "If checked, the default action list will only use its AOE action list (including |T" .. ( GetSpellTexture( 5740 ) ) .. ":0|t Rain of Fire) when there are 3+ targets.\n\n" ..
|
||
|
|
"In multi-target Patchwerk simulations, this setting creates a significant DPS loss. However, this option may be useful in real-world scenarios, especially if you are fighting two moving targets that will not stand in your Rain of Fire for the whole duration."
|
||
|
|
end,
|
||
|
|
type = "toggle",
|
||
|
|
width = "full",
|
||
|
|
} ) ]]
|
||
|
|
|
||
|
|
spec:RegisterSetting( "havoc_macro_text", nil, {
|
||
|
|
name = "When |T460695:0|t Havoc is shown with a |TInterface\\Addons\\Hekili\\Textures\\Cycle:0|t indicator, the addon is recommending that you cast Havoc on a different target (without swapping). A mouseover macro is useful for this and an example is included below.",
|
||
|
|
type = "description",
|
||
|
|
width = "full",
|
||
|
|
fontSize = "medium"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "havoc_macro", nil, {
|
||
|
|
name = "|T460695:0|t Havoc Macro",
|
||
|
|
type = "input",
|
||
|
|
width = "full",
|
||
|
|
multiline = 2,
|
||
|
|
get = function () return "#showtooltip\n/use [@mouseover,harm,nodead][] " .. class.abilities.havoc.name end,
|
||
|
|
set = function () end,
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "immolate_macro_text", nil, {
|
||
|
|
name = function () return "When |T" .. GetSpellTexture( 348 ) .. ":0|t Immolate is shown with a |TInterface\\Addons\\Hekili\\Textures\\Cycle:0|t indicator, the addon is recommending that you cast Immolate on a different target (without swapping). A mouseover macro is useful for this and an example is included below." end,
|
||
|
|
type = "description",
|
||
|
|
width = "full",
|
||
|
|
fontSize = "medium"
|
||
|
|
} )
|
||
|
|
|
||
|
|
spec:RegisterSetting( "immolate_macro", nil, {
|
||
|
|
name = function () return "|T" .. GetSpellTexture( 348 ) .. ":0|t Immolate Macro" end,
|
||
|
|
type = "input",
|
||
|
|
width = "full",
|
||
|
|
multiline = 2,
|
||
|
|
get = function () return "#showtooltip\n/use [@mouseover,harm,nodead][] " .. class.abilities.immolate.name end,
|
||
|
|
set = function () end,
|
||
|
|
} )
|
||
|
|
|
||
|
|
|
||
|
1 year ago
|
spec:RegisterPack( "Destruction", 20240723, [[Hekili:T3txZTnos(BX1wrr0FOisBTzM9S0d3EVmtD1Up49Q9HRolrjrzZkuK6iLsIVYL(TFaKeG4JUbaPOSt2AQPQmjIGD3Or)nAq8O)J)JhFyD4(Oh)BbJdUB8NdUDuqW4BhF3JpS)LDrp(WUWvFj8jYFjnCl5p)pIk2NFy1(4Su6ZEjjlCnfgfzhYxrE(Z73VR4V8Pp9u8(NpSC0QSTFQiE7HKq6BSkpCZE6)E1NE8HLhIt2)BPpUeIacg)lp(q4H9pNL)4dpeV9VsGC861rvdpQy1Jpqh(nJ)8nb3(xoU4F8C0Xf)ZWCYFqqCC6XfdlYY3FCr2gVhFijUyFbLkJ3hTL(x(BLZ7O0WLjrRF8FNn5wgLKLNt(JI57FoAEXH0vHjjres4qr08SnBM)0Q10x(HWAoa(BSkNGS84WhFyiHyoUyF8wcjo74IGXhxm44IvzzjRZ(w6OIdB3MLopoDtuEAyYO8OTHXPf8X6DCXRVwbI840VeTF0E)rXfJWqDj0fhDWioU4WMcXloU4RHekKWdgvp45bZxEyZM6biJp6eGGP4OnfZFkC7Y49L0ga5f0kYZVfKNpi5fyM88yOKaX8W41ZJ(Au6(rHRxxmk67urJk4P(Sd7Q(9IDrjjZ3hM)u0EtZRztpUycNHSmROOeXBIF659Z5tT7PRQpUNiURicYePsFz7HOI5hsZd)AusC6tZl2fNUojsrMIZCysoZPq4RrCU3(We6Crv(QgL8LnaM83IjtyYmmA(QWI9LZczzbuAuuEaq4YeGdSdyNyT16Y4SrcV)weEFnXquWlsY2l(V7FwVd8DUKR2y3LhNrOOxoUGi05JaWG5rFFvYH1c0vdZ(5WI5mfpivyyLsZesq7SSnqwjxJzoWcbDVl4IBaa3yYamJnBdtpeMystHcH5RpKx6E74IRkxmOgcuen9Q8ALhVRsq7FsMEFlmLSgVp74cI3f(uLm4VrCHDCXVvpviponjIkX)n6lreroUyBm9FhYFPsqmQ2ni)3QGZZekjIknr(J4TepTRPZKKdrxZG2YOY3FnLQZl2pIQHCNznKG3encDdgoQreGQIHQr4BrJaZnLvvZZLgbebDIAebw0icSQre0gncjBSbuPUjIsDlfLX6fbmdoo8NWNuiR6nZjh4Ye5SDrRk11UIfvabVv088O0OTXrfmjKgxMQpFgtc65WVMTIpL9yo50d6HYf)ZT27MA4Tn8DJrHz1WjpUlJWWfhpgdwTMbAteWbnrH1TAvshfVunW)BBi5EKM8c9pJO)HSv(Jl2LN91y6BsSItNgxZga1eEg5pZRElgftE(FN8tXe4Mgfx9CRaBzg1dGiyknU)zRg3vunBPaI72rWfqcqeq6u6c)qiGqy8)cLXJLlj93RsqvyTHQq)qP2puARnld1OFjjB910SSLMuuUGWJQCWr(Dss7jZlEomFDLjAFTF9EYVExdjUklDts4t5081bsHPHCOERNxLY79mRx8LlvCq4JJM0GKYNrIebms9guOaI7gnPY)yfJip8jAm)RJiRguyr(H0VufBGW055W00OKMrzkYNyYcBcDIlqdRZ2pI97sEHRIeg9X6mKQ0lRZInB(64QIf4dSKuoxjuXlRsIyPLsfnu9F(VdueIkMZQ8xMxscssjncXvsVzccVQI5KCLtjcXLltsdJQcHV2lX6jzqVmlb0JL7csaonPYS3ECXn4tNRKygukzjXIXtr5TGF4HnxunU2mx08UxrOdWWtdgez3C7iyRZqO5oB8dJmdpCk5xDF2Y0kAy9HFnKi)sb36MYkQvGcfrUssu38M8JP1UHhNBB5U(JBHrhlwt8Xnz3iFPz1g1IRpUjxns7ZmUnHWigj4lbwIeUjGxIwxAbHkibBNht9BWJawqGqDuLujUvBNmoeNUkonQEot8)rm0f(1iihGC2uysvgbeFV0Q9wvZ35vrjx5u1qj3m(2zu)0g9ejhC(anZue2obgJ2g(DhrzL)EaFrz7iRZr7BadlKh6FJKspvEPE1RY(EZcl19(yPWG2g(YZrBBe5iWQg)7iazEJ8uHvxlmv0SqQPJ5ltc))IKurxhvQKkinl5p0FutHt5sRekMWYMZ)3kbtQrKy6m4ox(bsLb3RHAzPPBUbnYarlpeZORsEPyRzFdyHgjUqvB1wmYfNIAc3pGA4K3whO2qZsfZKcKG6HQSqU1)BLOrqL7uI8T2TGZsssHIQ5wWuKHd1I(BtEeb8ltI4ZESOdX0HRN0sV3(4vFHm112OdM)CMKHSxvogAEUiJxSurQqKZsqGyZZ5q5kfqiB454IlRe7YeFzH1EVsAcMB5zm4zKOK18jZwiRS7kVkEHHCcz7qKlP)zIq)fe6Sfo7R0PCqKUL(R3fTNxYTrmxC05m9be9TIDKLYxKEIAwL3HfPSFP7nUUMmRtoj4)MpU)hMrGdXP1z5XlB2fIbqUMWAYsIxnpA7YOC5qiDlGuPGxxEipLUigw8CuHSYGyW0Kj0QqYeAFKH0haIB0nVwZkTNIYGX9QaeZmOPxuqJ7MrZMlkmC3PXDIRsQbUaAToapi(AWqcWCD8QqTL4AVsIpwY6SKxPAdxntSrs(PUsqsuFOeU)MeA0eyCOaJzp8tQODqGOAVM9iz9(a3ka0SM4kCZZUcFwnqBbPz8W(Ma97MIBbf94g3edeDOsaX3iU7bgOZ6KpkD0w)YOblh8NfxCesetAzHkWM19eYyPu1P8X4zZ1hjKjgZBtbKkxAV6uRygpYPEj(bh5oOPo(dzwp4Y9TkUJgKOwkhCVOM2lWaCaI7rvnSNH1HLr0shpYNhLRwYv1rgYApSj44g3LlKPWBkjbfuZLX9ueGHkOlM5kC32Tnxv0uQoJrIlxvrnfxa7bZkJ)WRJbXJzH0H9tqlLXtnXotjrnuwCaRgbYyr1)oCAKLboWQ5N6MHlRnigShCsDTpzj4zTSJ6bwN62cyhRNYCYtOpU5AoZoo9RzFjA(USVfLtLRpqnMoFmx236aBmltyY11cun6fAzc)1XkghirhKUE(3cZtYw9LcAaKXpLce)TsgCMtBRom7DVKN9uuA8QIM9LuZHSCwKA1Rh3kV9LEBlRy7vosrFCOUpNnLywbul1oeTEzYVdIwgxeqmwkenVFPfXZBiNpd5n2Ym7OJCovKDzE82I9zPwkkiyaVMt)sbgfKfQVW25xzhrUV5oYjgzi27D5rRY2UmCpue4cCdwmf8ftAWtHjsrmTHkXNTnoT00apQCfD6DrQlKQM7OBnbrshBZjyBTq1w5mpCxc1cWMWdKqkEymuaR23RdLE3J2)e0Lfr0P0jiqXC2c8eyfpbn4r1OunEI3yMb1qXfVKkfcKZ9qfytR9bdrpb5yWHb)bB4ScAE1mY5rjfKj4yA9QQ5S(qHu3sgvGDgfwVef8oWOaXPBmk14)BHKRLtmszaAsJ1qJ4RpyQHg5UqeuGUQPVGYGOfZelhUejIZ2rkqFWontceMjAzW0IPsjVl)WYxM)TNJs2rsGlkjbI)(TNJl2fvUfx8sUnpEvn014Z194my2hTG8cCG8cAn5firEQbT3cYZFKERgpuLZTnoppRSQNBYjG8qE0AsyoBjcpzFROmX46Jyf0lBqY5Ysh9E4UA40fyUbTyAgyzAgCkttBkigMMbattex4UAjN158pkxMBJ(9WT1tLtT5jWQZGp5spU7vYOgwwn2ROLCzs5piazXWgegpaOP(YKH4nGq0(IUhBNth6q0bqZtTt3IT5PVZZtFhNNUOd7P540NRffyjhuE(TXBZO5mqWrri5XBIxbK3p4WAsavpzfLuF6VE8qoLldzkWcXMLNaNglptJ005viY2BqgTsTdDk2OBS3Z1LRX1hUVgRgSrXYnfjNeZeFLUXMKSSCMIIsfr(Knvhp2U8r(lxm1mWUQV5kELeOda0tOmF920TEgRcsDO660PTyVwmRpNt)uSc2DMS1C28Ceq34OhJQYp4jq)2H9SkDDTdud9aqUkmTSOuK)kXfqu9bDjBZXMtdZ(NPJH)7m4FD9jOKFSlJ3FnTyq7v)9kFtX1iCDw6hjpGEielpFn0khs
|