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.

2142 lines
52 KiB

-- Shadowlands/Trinkets.lua
-- November 2020
local addon, ns = ...
local Hekili = _G[ addon ]
local class, state = Hekili.Class, Hekili.State
local all = Hekili.Class.specs[ 0 ]
local FindPlayerAuraByID = ns.FindPlayerAuraByID
local RegisterEvent = ns.RegisterEvent
-- 9.0 Trinkets
do
-- Trinket auras (not on-use effects)
all:RegisterAuras( {
anima_field = {
id = 345535,
duration = 8,
max_stack = 1
},
beating_abomination_core = {
id = 336871,
duration = 15,
max_stack = 1
},
booksmart = {
id = 340020,
duration = 12,
max_stack = 1,
},
-- Boon of the Archon
-- ???
crimson_chorus = {
id = 344803,
duration = 10,
max_stack = 1
},
consumptive_infusion_proc = {
id = 344225,
duration = 15,
max_stack = 1
},
consumptive_infusion = {
id = 344227,
duration = 10,
max_stack = 1
},
dreamers_mending = {
id = 339738,
duration = 120,
max_stack = 1,
},
everchill_brambles = {
id = 339301,
duration = 12,
max_stack = 10,
},
everchill_brambles_root = {
id = 339309,
duration = 2,
max_stack = 1
},
mote_of_anger = {
id = 71432,
duration = 3600,
max_stack = 8
},
synaptic_feedback = {
id = 344118,
duration = 15,
max_stack = 1
},
-- Murmurs in the Dark
fall_of_night = {
id = 339342,
duration = 12,
max_stack = 1
},
end_of_night = {
id = 339341,
duration = 8,
max_stack = 1
},
-- End Murmurs
phial_of_putrefaction = {
id = 345464,
duration = 10,
max_stack = 1,
},
primalists_kelpling = {
id = 268522,
duration = 15,
max_stack = 1
},
rejuvenating_serum = {
id = 326377,
duration = 6,
max_stack = 1,
},
critical_resistance = {
id = 336371,
duration = 20,
max_stack = 3
},
stone_legionnaire = {
id = 344686,
duration = 3600,
max_stack = 1
},
caustic_liquid = {
id = 329737,
duration = 8,
max_stack = 1
},
} )
all:RegisterAbilities( {
bargasts_leash = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 184017,
toggle = "defensives",
defensive = true,
handler = function ()
applyBuff( "huntsmans_bond" )
end,
usable = function ()
return incoming_damage_3s > 0 and health.pct < 70, "requires incoming damage and health below 70 percent"
end,
auras = {
huntsmans_bond = {
id = 344388,
duration = 30,
max_stack = 1
}
}
},
bladedancers_armor_kit = {
cast = 0,
cooldown = 300,
gcd = "off",
item = 178862,
toggle = "cooldowns", -- TODO: Review.
handler = function ()
applyBuff( "bladedancers_armor" )
end,
auras = {
bladedancers_armor = {
id = 342423,
duration = 120,
max_stack = 1
}
}
},
bloodspattered_scale = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 179331,
toggle = "cooldowns",
handler = function ()
applyBuff( "blood_barrier" )
end,
auras = {
blood_barrier = {
id = 329840,
duration = 10,
max_stack = 1
},
},
},
bottled_flayedwing_toxin = {
cast = 0,
cooldown = 20,
gcd = "off",
item = 178742,
readyTime = function ()
if combat > 0 then return buff.flayedwing_toxin.remains end
return buff.flayedwing_toxin.remains - 600
end,
handler = function ()
applyBuff( "flayedwing_toxin" )
end,
auras = {
flayedwing_toxin = {
id = 345545,
duration = 3600,
max_stack = 1,
ignore_buff = true -- Don't count as a DPS self-buff.
}
}
},
brimming_ember_shard = {
cast = 6,
channeled = true,
cooldown = 90,
gcd = "spell",
item = 175733,
toggle = "cooldowns",
},
darkmoon_deck_indomitable = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 173096,
toggle = "defensives",
defensive = true,
handler = function ()
applyBuff( "indomitable_deck" )
end,
auras = {
indomitable_deck = {
id = 311444,
duration = 10,
max_stack = 1
}
}
},
darkmoon_deck_putrescence = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 173069,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "putrid_burst" )
end,
auras = {
putrid_burst = {
id = 334058,
duration = 10,
max_stack = 1
}
},
copy = "darkmoon_deck__putrescence" -- simc
},
darkmoon_deck_repose = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 173078,
},
darkmoon_deck_voracity = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 173087,
toggle = "cooldowns",
handler = function ()
applyBuff( "voracious_haste" )
applyDebuff( "target", "voracious_lethargy" )
end,
auras = {
voracious_haste = {
id = 311491,
duration = 20,
max_stack = 1
},
voracious_lethargy = {
id = 329449,
duration = 20,
max_stack = 1
}
}
},
dreadfire_vessel = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184030,
toggle = "cooldowns",
},
empyreal_ordnance = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 180117,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "empyreal_ordnance" )
active_dot.empyreal_ordnance = min( 5, active_enemies )
end,
auras = {
empyreal_ordnance = {
id = 345540,
duration = 10,
max_stack = 1
},
empyreal_surge = {
id = 345541,
duration = 15,
max_stack = 1
}
}
},
flame_of_battle = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 181501,
toggle = "cooldowns",
handler = function ()
applyBuff( "flame_of_battle" )
end,
auras = {
flame_of_battle = {
id = 336841,
duration = 6,
max_stack = 1,
}
}
},
glyph_of_assimilation = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184021,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "glyph_of_assimilation" )
end,
auras = {
glyph_of_assimilation = {
id = 345319,
duration = 10,
max_stack = 1
},
glyph_of_assimilation_buff = {
id = 345320,
duration = 20,
max_stack = 1
}
}
},
grim_codex = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 178811,
toggle = "cooldowns",
},
inscrutable_quantum_device = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 179350,
toggle = "cooldowns",
self_buff = "inscrutable_quantum_device",
auras = {
inscrutable_quantum_device_crit = {
id = 330366,
duration = 30,
max_stack = 1
},
inscrutable_quantum_device_vers = {
id = 330367,
duration = 30,
max_stack = 1
},
inscrutable_quantum_device_haste = {
id = 330368,
duration = 30,
max_stack = 1
},
inscrutable_quantum_device_mastery = {
id = 330380,
duration = 30,
max_stack = 1
},
inscrutable_quantum_device = {
alias = { "inscrutable_quantum_device_crit", "inscrutable_quantum_device_vers", "inscrutable_quantum_device_haste", "inscrutable_quantum_device_mastery" },
aliasMode = "first",
aliasType = "buff",
duration = 30
}
}
},
lingering_sunmote = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 178850,
toggle = "defensives",
defensive = true,
handler = function ()
applyBuff( "suns_embrace" )
end,
auras = {
suns_embrace = {
id = 342435,
duration = 10,
max_stack = 1,
}
}
},
lyre_of_sacred_purpose = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184841,
toggle = "defensives",
defensive = true,
handler = function ()
applyBuff( "lyre_of_sacred_purpose" )
end,
auras = {
lyre_of_sacred_purpose = {
id = 348136,
duration = 15,
max_stack = 1
}
}
},
instructors_divine_bell = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184842,
toggle = "cooldowns",
handler = function ()
applyBuff( "instructors_divine_bell" )
end,
auras = {
instructors_divine_bell = {
id = 348139,
duration = 9,
max_stack = 1
}
}
},
macabre_sheet_music = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184024,
toggle = "cooldowns",
auras = {
blood_waltz = {
id = 345439,
duration = 20,
max_stack = 1
}
}
},
maldraxxian_warhorn = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 180827,
toggle = "cooldowns",
},
manabound_mirror = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 184029,
handler = function ()
removeBuff( "manabound_mirror" )
end,
auras = {
manabound_mirror = {
id = 344244,
duration = 30,
max_stack = 1
}
}
},
memory_of_past_sins = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 184025,
toggle = "cooldowns",
handler = function ()
applyBuff( "shattered_psyche" )
end,
auras = {
shattered_psyche = {
id = 344662,
duration = 30,
max_stack = 1,
},
shattered_psyche_debuff = {
id = 344663,
duration = 5,
max_stack = 1
},
}
},
mistcaller_ocarina = {
cast = 0,
cooldown = 30,
gcd = "spell",
item = 178715,
nobuff = "mistcaller_ocarina",
handler = function ()
applyBuff( "mistcaller_ocarina" )
end,
auras = {
mistcaller_ocarina = {
id = 330067,
duration = 900,
max_stack = 1
}
}
},
overcharged_anima_battery = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 180116,
toggle = "cooldowns",
handler = function ()
applyBuff( "overcharged_anima_battery" )
end,
auras = {
overcharged_anima_battery = {
id = 345530,
duration = 16,
max_stack = 1
}
}
},
overflowing_anima_cage = {
cast = 0,
cooldown = 270,
gcd = "off",
item = 178849,
toggle = "cooldowns",
handler = function ()
applyBuff( "anima_infusion" )
end,
auras = {
anima_infusion = {
id = 343386,
duration = 15,
max_stack = 1
}
}
},
overflowing_ember_mirror = {
cast = 0,
cooldown = 270,
gcd = "off",
item = function ()
if equipped[ 177657 ] then return 177657 end
return 181359
end,
items = { 177657, 181359 },
toggle = "cooldowns",
handler = function ()
applyBuff( "pulsating_light_shield" )
end,
auras = {
pulsating_light_shield = {
id = 336465,
duration = 12,
max_stack = 1
}
}
},
overwhelming_power_crystal = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 179342,
toggle = "cooldowns",
handler = function ()
applyBuff( "power_overwhelming" )
end,
auras = {
power_overwhelming = {
id = 329831,
duration = 15,
max_stack = 1
}
}
},
pulsating_stoneheart = {
cast = 0,
cooldown = 75,
gcd = "off",
item = 178825,
toggle = "defensives",
defensive = true,
handler = function ()
applyBuff( "heart_of_a_gargoyle" )
end,
auras = {
heart_of_a_gargoyle = {
id = 343399,
duration = 12,
max_stack = 1,
}
}
},
sanguine_vintage = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 184031,
handler = function ()
applyBuff( "sanguine_vintage" )
end,
auras = {
sanguine_vintage = {
id = 344231,
duration = 6,
max_stack = 1
}
}
},
shadowgrasp_totem = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 179356,
toggle = "cooldowns",
self_buff = "shadowgrasp_totem",
handler = function ()
applyBuff( "shadowgrasp_totem" )
end,
auras = {
shadowgrasp_totem = {
duration = 15,
max_stack = 1,
}
}
},
siphoning_phylactery_shard = {
cast = 0,
cooldown = 30,
gcd = "off",
item = 178783,
handler = function ()
applyBuff( "charged_phylactery" )
end,
auras = {
charged_phylactery = {
id = 345549,
duration = 30,
max_stack = 1
}
}
},
skulkers_wing = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 184016,
toggle = "cooldowns",
-- ???
},
slimy_consumptive_organ = {
cast = 0,
cooldown = 20,
gcd = "off",
item = 178770,
toggle = "defensives",
defensive = true,
buff = "gluttonous",
usable = function () return buff.gluttonous.stack > 8 and health.percent < 80, "requires gluttonous stacks and a health deficit" end,
handler = function ()
removeBuff( "gluttonous" )
end,
auras = {
gluttonous = {
id = 334511,
duration = 3600,
max_stack = 9
}
}
},
soul_igniter = {
cast = 0,
cooldown = 0.5,
gcd = "off",
item = 184019,
toggle = "cooldowns",
nobuff = "soul_ignition",
no_icd = true,
handler = function ()
applyBuff( "soul_ignition_345211" )
end,
auras = {
soul_ignition_345211 = {
id = 345211,
duration = 15,
max_stack = 1
}
}
},
soul_ignition = {
cast = 0,
cooldown = 60,
toggle = "cooldowns",
buff = "soul_ignition",
indicator = "cancel",
handler = function ()
removeBuff( "soul_ignition" )
end,
},
soulletting_ruby = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 178809,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "soulletting_ruby" )
end,
auras = {
soul_infusion = {
id = 345805,
duration = 16,
max_stack = 1
},
soulletting_ruby = {
id = 345801,
duration = 20,
max_stack = 1,
}
},
copy = "soul_infusion"
},
spare_meat_hook = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 178751,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "spare_meat_hook" )
end,
auras = {
spare_meat_hook = {
id = 345548,
duration = 10,
max_stack = 1
}
}
},
sunblood_amethyst = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 178826,
toggle = "cooldowns",
handler = function ()
applyBuff( "anima_font" )
end,
auras = {
anima_font = {
id = 343396,
duration = 15,
max_stack = 1
}
}
},
tablet_of_despair = {
cast = 0,
cooldown = 120,
gcd = "off",
item = function ()
if equipped[ 175732 ] then return 175732 end
return 181357
end,
items = { 175732, 181357 },
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "growing_despair" )
end,
auras = {
growing_despair = {
id = 336182,
duration = 25,
max_stack = 1
}
}
},
tuft_of_smoldering_plumage = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 184020,
toggle = "cooldowns",
handler = function ()
applyBuff( "tuft_of_smoldering_plumage" )
end,
auras = {
tuft_of_smoldering_plumage = {
id = 344916,
duration = 6,
max_stack = 1
}
}
},
vial_of_spectral_essence = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 178810,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "vial_of_spectral_essence" )
end,
auras = {
vial_of_spectral_essence = {
id = 345695,
duration = 20,
max_stack = 1
}
}
},
wakeners_frond = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 181457,
toggle = "cooldowns",
handler = function ()
applyBuff( "wakeners_frond" )
end,
auras = {
wakeners_frond = {
id = 336588,
duration = 12,
max_stack = 1
}
},
},
-- Sanctum of Domination, Usable Items
jotungeirr_destinys_call = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 186404,
toggle = "cooldowns",
handler = function ()
applyBuff( "burden_of_divinity" )
end,
auras = {
burden_of_divinity = {
id = 357773,
duration = 30,
max_stack = 1,
},
},
},
scrawled_word_of_recall = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 186425,
handler = function ()
if spec.mistweaver then gainChargeTime( "renewing_mist", 7 )
elseif class.druid and spec.restoration then gainChargeTime( "swiftmend", 7.9 )
elseif spec.discipline then gainChargeTime( "penance", 7.2 )
elseif class.priest and spec.holy then gainChargeTime( "circle_of_healing", 11.2 )
elseif class.paladin and spec.holy then gainChargeTime( "holy_shock", 3.7 )
elseif class.shaman and spec.restoration then gainChargeTime( "riptide", 4 ) end
end,
},
forbidden_necromantic_tome = {
cast = 2,
cooldown = 600,
gcd = "spell",
item = 186421,
toggle = "cooldowns",
usable = function () return false, "NYI" end,
handler = function ()
applyBuff( "forbidden_necromancy" )
end,
auras = {
forbidden_knowledge = {
id = 356029,
duration = 15,
max_stack = 1,
},
forbidden_necromancy = {
id = 356213,
duration = 32,
max_stack = 1,
}
}
},
soleahs_secret_technique = {
cast = 0,
cooldown = 0,
gcd = "off",
item = 185818,
nobuff = "soleahs_secret_technique",
disabled = function ()
return not group, "only usable in a party/raid"
end,
handler = function ()
applyBuff( "soleahs_secret_technique" )
end,
auras = {
soleahs_secret_technique = {
id = 351952,
duration = 1800,
max_stack = 1,
},
},
},
shadowed_orb_of_torment = {
cast = 2,
channeled = true,
cooldown = 120,
gcd = "spell",
toggle = "cooldowns",
item = 186428,
handler = function ()
applyBuff( "tormented_insight" )
end,
auras = {
tormented_insight = {
id = 356326,
duration = 40,
max_stack = 1,
},
},
},
relic_of_the_frozen_wastes = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 186437,
handler = function ()
-- ???
end,
auras = {
frozen_heart = {
id = 355759,
duration = 30,
max_stack = 1,
},
}
},
tome_of_monstrous_constructions = {
cast = 2,
cooldown = 60,
gcd = "spell",
item = 186422,
nobuff = "studious_comprehension",
usable = function () return buff.studious_comprehension.down, "not usable if studious_comprehension already buffed" end,
essential = true,
handler = function ()
applyBuff( "studious_comprehension" )
end,
copy = 353692,
auras = {
studious_comprehension = {
id = 357163,
duration = 3600,
max_stack = 1,
shared = "player"
},
}
},
shard_of_annhyldes_aegis = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 186424,
toggle = "defensives",
handler = function ()
applyBuff( "annhyldes_aegis" )
end,
auras = {
annhyldes_aegis = {
id = 358712,
duration = 8,
max_stack = 1,
},
},
},
salvaged_fusion_amplifier = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 186432,
toggle = "cooldowns",
handler = function ()
applyBuff( "salvaged_fusion_amplifier" )
end,
auras = {
salvaged_fusion_amplifier = {
id = 355333,
duration = 20,
max_stack = 1,
},
},
},
ebonsoul_vice = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 186431,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "ebonsoul_vise" )
end,
copy = "ebonsoul_vise",
auras = {
ebonsoul_vice = {
id = 355327,
duration = 12,
max_stack = 1,
copy = "ebonsoul_vise"
},
-- Shredded Soul implemented above.
}
},
iron_maidens_toolkit = {
cast = 0,
cooldown = 150,
gcd = "off",
item = 185902,
toggle = "cooldowns",
handler = function ()
applyBuff( "iron_spikes" )
end,
auras = {
iron_spikes = {
id = 351872,
duration = 120,
max_stack = 1,
},
},
},
unchained_gladiators_shackles = {
cast = 1,
cooldown = 0,
gcd = "spell",
item = 186980,
toggle = "interrupts",
handler = function ()
applyDebuff( "target", "shackles_of_malediction" )
end,
auras = {
shackles_of_malediction = {
id = 356567,
duration = 4,
max_stack = 1,
},
},
},
} )
-- Patch 9.1 Item Buffs
all:RegisterAuras( {
banshees_blight = {
id = 357595,
duration = 3600,
max_stack = 4,
},
sadistic_glee = {
id = 353466,
duration = 6,
max_stack = 1,
},
preternatural_charge = {
id = 351531,
duration = 3600,
max_stack = 5
},
passable_credentials = {
id = 352091,
duration = 15,
max_stack = 1,
},
fraudulent_credentials = {
id = 351987,
duration = 15,
max_stack = 1,
},
worthy = {
id = 355794,
duration = 3600,
max_stack = 1,
},
unworthy = {
id = 355951,
duration = 3600,
max_stack = 1,
},
-- Active Rune Word: Blood
rune_word_blood = {
id = 359420,
duration = 3600,
max_stack = 1,
},
-- Active Rune Word: Frost
rune_word_frost = {
id = 355724,
duration = 3600,
max_stack = 1,
},
-- Active Rune Word: Unholy
rune_word_unholy = {
id = 359435,
duration = 3600,
max_stack = 1,
},
-- Unholy Domination Shard Set
soul_fragment = {
id = 356042,
duration = 30,
max_stack = 15,
},
chaos_bane = {
id = 356043,
duration = 15,
max_stack = 1,
},
-- End Unholy Domination Shard Set
undying_rage = {
id = 356490,
duration = 3600,
max_stack = 5,
},
decanted_warsong = {
id = 356687,
duration = 15,
max_stack = 1,
},
strength_in_fealty = {
id = 357185,
duration = 20,
max_stack = 1,
},
first_class_delivery = {
id = 352274,
duration = 9,
max_stack = 1,
},
winds_of_winter = {
id = 355735,
duration = 20,
max_stack = 1,
},
blood_link = {
id = 355804,
duration = 60,
max_stack = 1,
},
reactive_defense_matrix = {
id = 356813,
duration = 10,
max_stack = 1,
},
excruciating_twinge = {
id = 356181,
duration = 15,
max_stack = 1,
},
shredded_soul = {
id = 357785,
duration = 20,
max_stack = 1,
},
--[[ ??? Codex of the First Technique (Proc)
first_technique = {
}, ]]
volatile_satchel = {
id = 351682,
duration = 15,
max_stack = 3,
},
torturous_might = {
id = 357673,
duration = 15,
max_stack = 1,
},
spark_of_insight = {
id = 355044,
duration = 20,
max_stack = 1,
},
piercing_quill = {
id = 355087,
duration = 4,
max_stack = 1,
},
} )
end
-- 9.2 Trinkets
do
all:RegisterAbilities( {
scars_of_fraternal_strife = {
cast = 0,
cooldown = 30,
gcd = "off",
item = 188253,
no_icd = function () return buff.the_fourth_rune.down end,
toggle = function () return buff.the_fourth_rune.up and "cooldowns" or nil end,
handler = function ()
if buff.the_first_rune.up then applyBuff( "the_second_rune" )
elseif buff.the_second_rune.up then applyBuff( "the_third_rune" )
elseif buff.the_third_rune.up then applyBuff( "the_fourth_rune" )
elseif buff.the_fourth_rune.up then
removeBuff( "the_first_rune" )
removeBuff( "the_second_rune" )
removeBuff( "the_third_rune" )
removeBuff( "the_fourth_rune" )
applyBuff( "the_final_rune" )
else
applyBuff( "the_first_rune" )
end
end,
auras = {
the_first_rune = {
id = 368635,
duration = 3600,
max_stack = 1,
copy = { "scars_of_fraternal_strife", "scars_of_fraternal_strife_1" }
},
the_second_rune = {
id = 368636,
duration = 3600,
max_stack = 1,
copy = "scars_of_fraternal_strife_2"
},
the_third_rune = {
id = 368637,
duration = 3600,
max_stack = 1,
copy = "scars_of_fraternal_strife_3"
},
the_fourth_rune = {
id = 368638,
duration = 3600,
max_stack = 1,
copy = "scars_of_fraternal_strife_4"
},
the_fourth_rune_snare = {
id = 368639,
duration = 15,
max_stack = 10,
},
the_final_rune = {
id = 368641,
duration = 30,
max_stack = 1,
copy = "scars_of_fraternal_strife_5"
},
}
},
chains_of_domination = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188252,
toggle = "cooldowns",
handler = function()
applyBuff( "chains_of_domination" )
end,
auras = {
chains_of_domination = {
id = 367931,
duration = 20,
max_stack = 1,
},
}
},
grim_eclipse = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 188254,
toggle = "cooldowns",
handler = function()
end,
auras = {
grim_eclipse = {
id = 368645,
duration = 10,
max_stack = 1,
copy = 369294
}
}
},
heart_of_the_swarm = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188255,
toggle = "cooldowns",
handler = function()
applyBuff( "heart_of_the_swarm" )
setCooldown( "global_cooldown", 3 )
end,
self_buff = "heart_of_the_swarm",
auras = {
heart_of_the_swarm = {
-- id = ???,
-- May need to use FindPlayerAuraByID.
duration = 3,
max_stack = 1,
},
}
},
intrusive_thoughtcage = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188261,
toggle = "defensives",
handler = function()
end,
auras = {
intrusive_thoughtcage = {
id = 367885,
duration = 6,
max_stack = 1,
}
}
},
the_first_sigil = {
cast = 0,
cooldown = 300,
gcd = "off",
item = 188271,
toggle = "cooldowns",
handler = function()
applyBuff( "the_first_sigil" )
end,
auras = {
the_first_sigil = {
id = 367241,
duration = 20,
max_stack = 1,
}
}
},
the_lions_roar = {
cast = 3,
channeled = true,
cooldown = 600,
gcd = "off",
item = 188262,
toggle = "interrupts",
start = function()
applyBuff( "the_lions_roar" )
end,
auras = {
the_lions_roar = {
id = 363557,
duration = 3,
max_stack = 1,
}
}
},
pulsating_riftshard = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 188266,
handler = function()
end,
},
resonant_reservoir = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 188272,
toggle = "cooldowns",
handler = function()
end,
},
architects_ingenuity_core = {
cast = 0,
cooldown = 90,
gcd = "off",
item = 188268,
toggle = "cooldowns",
handler = function()
end,
auras = {
architects_ingenuity = {
id = 368937,
duration = 10,
max_stack = 1,
}
}
},
earthbreakers_impact = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188264,
toggle = "cooldowns",
handler = function()
applyBuff( "earthbreakers_impact" )
end,
auras = {
earthbreakers_impact = {
id = 367808,
duration = 12,
max_stack = 1,
}
}
},
reclaimers_intensity_core = {
cast = 0,
cooldown = 150,
gcd = "off",
item = 188263,
toggle = "interrupts",
handler = function()
end,
},
cosmic_gladiators_resonator = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 188766,
toggle = "cooldowns",
handler = function()
end,
},
eternal_gladiators_resonator = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 192303,
toggle = "cooldowns",
handler = function()
end,
},
cosmic_gladiators_fastidious_resolve = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188524,
toggle = "cooldowns",
handler = function()
applyBuff( "gladiators_fastidious_resolve" )
end,
auras = {
gladiators_fastidious_resolve = {
id = 363117,
duration = 15,
max_stack = 1,
}
}
},
eternal_gladiators_fastidious_resolve = {
cast = 0,
cooldown = 180,
gcd = "off",
item = 192301,
toggle = "cooldowns",
handler = function()
applyBuff( "gladiators_fastidious_resolve" )
end,
},
cosmic_gladiators_eternal_aegis = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 188775,
toggle = "defensives",
handler = function()
applyBuff( "gladiators_eternal_aegis" )
end,
auras = {
gladiators_eternal_aegis = {
id = 363522,
duration = 15,
max_stack = 1,
}
}
},
eternal_gladiators_eternal_aegis = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 192304,
toggle = "defensives",
handler = function()
applyBuff( "gladiators_eternal_aegis" )
end,
},
cosmic_gladiators_devouring_malediction = {
cast = 3,
channeled = true,
cooldown = 180,
gcd = "off",
item = 188778,
toggle = "cooldowns",
},
eternal_gladiators_devouring_malediction = {
cast = 3,
channeled = true,
cooldown = 180,
gcd = "spell",
item = 192305,
},
bloodstained_handkerchief = {
cast = 0,
cooldown = 60,
gcd = "off",
item = 142159,
cycle = "cruel_garrote",
handler = function()
applyDebuff( "target", "cruel_garrote" )
end,
auras = {
cruel_garrote = {
id = 230011,
duration = 3600,
max_stack = 1,
}
}
},
fleshrenders_meathook = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 110002,
toggle = "cooldowns",
handler = function()
applyBuff( "haste" )
end,
auras = {
haste = {
id = 165531,
duration = 20,
max_stack = 1,
}
}
},
kihras_adrenaline_injector = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 109997,
toggle = "cooldowns",
handler = function()
applyBuff( "mastery" )
end,
auras = {
mastery = {
id = 165485,
duration = 20,
max_stack = 1,
}
}
},
enforcers_stun_grenade = {
cast = 0,
cooldown = 120,
gcd = "off",
item = 110017,
toggle = "cooldowns",
handler = function()
applyBuff( "versatility" )
end,
auras = {
versatility = {
id = 165534,
duration = 20,
max_stack = 1,
}
}
}
} )
all:RegisterAuras( {
elegy_of_the_eternals = {
id = 369439,
duration = 10,
max_stack = 1,
},
} )
end
do
local treasure_auras = {
[368657] = "acquired_sword",
[368656] = "acquired_axe",
[368654] = "acquired_wand"
}
local treasure_applied = {
acquired_sword = 0,
acquired_axe = 0,
acquired_wand = 0,
}
-- local f = CreateFrame("Frame")
-- f:RegisterEvent( "COMBAT_LOG_EVENT_UNFILTERED" )
RegisterEvent( "COMBAT_LOG_EVENT_UNFILTERED", function( event )
if not state.equipped.cache_of_acquired_treasures then return end
if event == "COMBAT_LOG_EVENT_UNFILTERED" then
local _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName = CombatLogGetCurrentEventInfo()
if destGUID == state.GUID and ( subtype == "SPELL_AURA_APPLIED" or subtype == "SPELL_AURA_REFRESH" or subtype == "SPELL_AURA_APPLIED_DOSE" ) then
local treasure = treasure_auras[ spellID ]
if treasure then treasure_applied[ treasure ] = GetTime() end
end
end
end )
local function generate_treasure( t )
local key = t.key
local id = class.auras[ key ] and class.auras[ key ].id
if id then
local name, _, count, _, _, _, caster = FindPlayerAuraByID( id )
if name then
local applied = treasure_applied[ key ]
local duration = 12
local expires = applied + duration
t.count = max( 1, count )
t.expires = expires
t.applied = expires - duration
t.caster = caster
return
end
end
t.count = 0
t.expires = 0
t.applied = 0
t.caster = "nobody"
end
-- Cache of Acquired Treasures, special detection.
all:RegisterAbility( "cache_of_acquired_treasures", {
cast = 0,
cooldown = 180,
gcd = "off",
item = 188265,
toggle = "cooldowns",
buff = "acquired_treasure",
handler = function()
if buff.acquired_sword.up then
applyBuff( "acquired_sword_haste" )
elseif buff.acquired_axe.up then
applyBuff( "acquired_axe_driver" )
end
removeBuff( "acquired_sword" )
removeBuff( "acquired_axe" )
removeBuff( "acquired_wand" )
end,
auras = {
acquired_sword = {
id = 368657,
duration = 12,
max_stack = 1,
generate = generate_treasure,
},
acquired_sword_haste = {
id = 368649,
duration = 25,
max_stack = 10,
copy = "acquired_sword_driver"
},
acquired_axe = {
id = 368656,
duration = 12,
max_stack = 1,
generate = generate_treasure,
},
acquired_axe_driver = {
id = 368650,
duration = 25,
max_stack = 1,
copy = "acquired_axe_buff"
},
vicious_wound = {
id = 368651,
duration = 3,
max_stack = 1,
copy = "acquired_axe_bleed"
},
acquired_wand = {
id = 368654,
duration = 12,
max_stack = 1,
generate = generate_treasure,
},
acquired_treasure = {
alias = { "acquired_sword", "acquired_axe", "acquired_wand" },
aliasMode = "first",
aliasType = "buff",
duration = 12,
}
}
} )
end
do
all:RegisterAbility( "gavel_of_the_first_arbiter", {
cast = 0,
cooldown = 240,
gcd = "off",
item = 189862,
-- toggle = "cooldowns",
handler = function()
-- Spawns an enemy, kill to receive buff.
end,
auras = {
boon_of_looming_winter_active = {
id = 368693,
duration = 60,
max_stack = 1,
},
boon_of_looming_winter_absorb = {
id = 368698,
duration = 15,
max_stack = 1,
},
boon_of_harvested_hope_active = {
id = 368695,
duration = 60,
max_stack = 1,
},
boon_of_harvested_hope_damage = {
id = 368701,
duration = 3,
max_stack = 1,
},
boon_of_divine_command_active = {
id = 368694,
duration = 60,
max_stack = 1,
},
boon_of_divine_command_damage = {
id = 368699,
duration = 15,
max_stack = 1,
},
boon_of_assured_victory_active = {
id = 368696,
duration = 60,
max_stack = 1,
},
rotting_decay = {
id = 368700,
duration = 8,
max_stack = 1,
},
boon_of_the_end_active = {
id = 368697,
duration = 60,
max_stack = 1,
},
}
} )
end