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.
988 lines
36 KiB
988 lines
36 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- TODO List:
|
|
-- - Soul Siphon CD
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Gul'dan", 1530, 1737)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(104154)
|
|
mod.engageId = 1866
|
|
mod.respawnTime = 30
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local mobCollector = {}
|
|
local phase = 1
|
|
local obeliskCounter = 1
|
|
local bondsCount = 1
|
|
local liquidHellfireCount = 1
|
|
local handOfGuldanCount = 1
|
|
local blackHarvestCount = 1
|
|
local stormCount = 1
|
|
local flamesCount = 1
|
|
local eyeCount = 1
|
|
local eyeOnMe = false
|
|
local severCount = 1
|
|
local crashCounter = 1
|
|
local orbCounter = 1
|
|
local visionCounter = 1
|
|
local essenceCount = 1
|
|
local timeStopCheck = nil
|
|
local liquidHellfireEmpowered = false
|
|
local eyeEmpowered = false
|
|
local bondsEmpowered = false
|
|
local expectedBonds = mod:Mythic() and 4 or 3
|
|
local parasiteSayTimers = {}
|
|
local effluxCount = 1
|
|
local effluxTimers = {11.0, 14.0, 20.0, 12.0, 12.3, 12.0}
|
|
|
|
local normalTimers = {
|
|
-- Black Harvest (206744 _start), after 227427 _applied
|
|
[206744] = {71.2, 82.8, 100}, -- not sure if complete
|
|
-- Empowered Eye of Gul'dan P3 (211152 _start), after 227427 _applied
|
|
[211152] = {42.7, 71.4, 71.4, 28.6, 114.3}, -- not sure if complete
|
|
}
|
|
local heroicTimers = {
|
|
-- Hand of Gul'dan P2
|
|
[212258] = {13.5, 48.9, 138.9},
|
|
-- Storm of the Destroyer (167819 _start), after 227427 _applied
|
|
[167935] = {84.1, 68.8, 61.2, 76.5}, -- timers should be complete
|
|
-- Black Harvest (206744 _start), after 227427 _applied
|
|
[206744] = {64.1, 72.5, 87.6}, -- timers should be complete
|
|
-- Empowered Eye of Gul'dan P3 (211152 _start), after 227427 _applied
|
|
[211152] = {39.1, 62.5, 62.5, 25, 100}, -- timers should be complete
|
|
-- Flames of Sargeras (When applied).
|
|
[221606] = {27.6, 7.8, 8.8, 34.7, 7.8, 8.8, 34.7, 7.8, 8.7, 34.8, 7.7, 8.8, 36.0, 7.7, 8.8}
|
|
}
|
|
local mythicTimers = {
|
|
-- Hand of Gul'dan "P2"
|
|
[212258] = {16.6, 165},
|
|
-- Storm of the Destroyer (167819 _start), after 227427 _applied
|
|
[167935] = {72.6, 57.9, 51.6, 64.7, 57.4},
|
|
-- Black Harvest (206744 _start), after 227427 _applied
|
|
[206744] = {55.7, 61.0, 75.3, 86.8},
|
|
-- Empowered Eye of Gul'dan P3 (211152 _start), after 227427 _applied
|
|
[211152] = {35.1, 52.6, 53.3, 20.4, 84.2, 52.6},
|
|
-- Flames of Sargeras (When applied).
|
|
[221606] = {25.7, 6.4, 7.4, 29.4, 6.4, 7.4, 29.4, 6.4, 7.4, 29.4, 6.4, 7.4, 29.5, 7.4, 7.4, 28.4, 6.4, 7.4, 28.4, 6.4, 7.4},
|
|
-- Violent Winds
|
|
[218144] = {11.5, 43.4, 66, 75.4}
|
|
}
|
|
|
|
local timers = mod:Mythic() and mythicTimers or mod:Heroic() and heroicTimers or normalTimers
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
-- HORDE: Have you forgotten your humiliation on the Broken Shore? How your mighty warchief was stuck in the belly like a helpless piglet? Will you die slowly as he did, consumed by fel corruption and squealing for a merciful end?
|
|
-- ALLIANCE: Have you forgotten your humiliation on the Broken Shore? How your precious high king was bent and broken before me? Will you beg for your lives as he did, whimpering like some worthless dog?
|
|
L.warmup_trigger = "Have you forgotten"
|
|
|
|
L.empowered = "(E) %s" -- (E) Eye of Gul'dan
|
|
L.gains = "Gul'dan gains %s"
|
|
L.p2_start = "You failed, heroes! The ritual is upon us! But first, I'll indulge myself a bit... and finish you!"
|
|
L.p4_mythic_start_yell = "Time to return the demon hunter's soul to his body... and deny the Legion's master a host!"
|
|
|
|
L.nightorb = "{227283}"
|
|
L.nightorb_desc = "Summons a Nightorb, killing it will spawn a Time Zone."
|
|
L.nightorb_icon = "inv_icon_shadowcouncilorb_purple"
|
|
L.timeStopZone = "Time Stop Zone"
|
|
|
|
L.manifest = "{221149}"
|
|
L.manifest_desc = "Summons a Soul Fragment of Azzinoth, killing it will spawn a Demonic Essence."
|
|
L.manifest_icon = "inv_weapon_glave_01"
|
|
|
|
L.winds = "{218144}" -- Violent Winds
|
|
L.winds_desc = "Gul'dan summons Violent Winds to push the players off the platform."
|
|
L.winds_icon = 218144
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
--[[ General ]]--
|
|
"warmup",
|
|
"stages",
|
|
"berserk",
|
|
|
|
--[[ Essence of Aman'Thul ]]--
|
|
210339, -- Time Dilation
|
|
{217830, "SAY"}, -- Scattering Field
|
|
{210296, "TANK"}, -- Resonant Barrier
|
|
|
|
--[[ Stage One ]]--
|
|
{206219, "SAY", "FLASH"}, -- Liquid Hellfire
|
|
206514, -- Fel Efflux
|
|
212258, -- Hand of Gul'dan
|
|
|
|
--[[ Inquisitor Vethriz ]]--
|
|
207938, -- Shadowblink
|
|
212568, -- Drain
|
|
206840, -- Gaze of Vethriz
|
|
|
|
--[[ Fel Lord Kuraz'mal ]]--
|
|
{206675, "TANK"}, -- Shatter Essence
|
|
229945, -- Fel Obelisk
|
|
|
|
--[[ D'zorykx the Trapper ]]--
|
|
208545, -- Anguished Spirits
|
|
206883, -- Soul Vortex
|
|
{206896, "TANK"}, -- Torn Soul
|
|
|
|
--[[ Stage Two ]]--
|
|
{209011, "SAY", "FLASH"}, -- Bonds of Fel
|
|
{209270, "PROXIMITY"}, -- Eye of Gul'dan
|
|
208672, -- Carrion Wave
|
|
|
|
--[[ Stage Three ]]--
|
|
206939, -- Well of Souls
|
|
221891, -- Soul Siphon
|
|
208802, -- Soul Corrosion
|
|
167935, -- Storm of the Destroyer
|
|
206744, -- Black Harvest
|
|
{221606, "SAY", "FLASH"}, -- Flames of Sargeras
|
|
{211152, "PROXIMITY"}, -- Empowered Eye of Gul'dan
|
|
221781, -- Desolate Ground
|
|
{227556, "TANK"}, -- Fury of the Fel XXX untested
|
|
|
|
--[[ Mythic ]] --
|
|
"winds", -- Violent Winds
|
|
211439, -- Will of the Demon Within
|
|
220957, -- Soulsever
|
|
227071, -- Flame Crash
|
|
{206847, "FLASH", "SAY"}, -- Parasitic Wound
|
|
{206983, "FLASH", "SAY"}, -- Shadowy Gaze
|
|
"manifest", -- Manifest Azzinoth
|
|
221336, -- Chaos Seed
|
|
221408, -- Bulwark of Azzinoth
|
|
221486, -- Purify Essence
|
|
"nightorb", -- Summon Nightorb
|
|
227008, -- Visions of the Dark Titan
|
|
227009, -- Wounded
|
|
{206310, "EMPHASIZE"}, -- Time Stop
|
|
}, {
|
|
["warmup"] = "general",
|
|
[210339] = -14886, -- Essence of Aman'Thul
|
|
[206219] = -14885, -- Stage One
|
|
[207938] = -14897, -- Inquisitor Vethriz
|
|
[206675] = -14894, -- Fel Lord Kuraz'mal
|
|
[208545] = -14902, -- D'zorykx the Trapper
|
|
[209011] = -14062, -- Stage Two
|
|
[206939] = -14090, -- Stage Three
|
|
["winds"] = "mythic",
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2", "boss3", "boss4", "boss5")
|
|
self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
|
|
self:RegisterEvent("RAID_BOSS_EMOTE")
|
|
|
|
--[[ Essence of Aman'Thul ]]--
|
|
self:Log("SPELL_AURA_APPLIED", "TimeDilation", 210339)
|
|
self:Log("SPELL_AURA_APPLIED", "ScatteringField", 217830)
|
|
self:Log("SPELL_AURA_APPLIED", "ResonantBarrier", 210296)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "EyeOfAmanThul", 206516)
|
|
self:Log("SPELL_AURA_REMOVED", "EyeOfAmanThulRemoved", 206516)
|
|
|
|
--[[ Stage One ]]--
|
|
self:Log("SPELL_CAST_START", "LiquidHellfire", 206219, 206220) -- Normal, Empowered
|
|
self:Log("SPELL_CAST_START", "HandOfGuldan", 212258)
|
|
self:Log("SPELL_CAST_START", "FelEfflux", 206514)
|
|
self:Log("SPELL_AURA_APPLIED", "FelEffluxDamage", 206515)
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "FelEffluxDamage", 206515)
|
|
self:Log("SPELL_PERIODIC_MISSED", "FelEffluxDamage", 206515)
|
|
|
|
--[[ Inquisitor Vethriz ]]--
|
|
self:Log("SPELL_CAST_SUCCESS", "Shadowblink", 207938)
|
|
self:Log("SPELL_AURA_APPLIED", "Drain", 212568)
|
|
self:Log("SPELL_CAST_START", "GazeOfVethrizCast", 206840)
|
|
self:Log("SPELL_DAMAGE", "GazeOfVethrizDamage", 217770)
|
|
self:Log("SPELL_MISSED", "GazeOfVethrizDamage", 217770)
|
|
|
|
--[[ Fel Lord Kuraz'mal ]]--
|
|
self:Log("SPELL_CAST_START", "ShatterEssence", 206675)
|
|
|
|
--[[ D'zorykx the Trapper ]]--
|
|
self:Log("SPELL_CAST_START", "AnguishedSpirits", 208545)
|
|
self:Log("SPELL_CAST_START", "SoulVortex", 206883)
|
|
self:Log("SPELL_AURA_APPLIED", "TornSoul", 206896)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "TornSoul", 206896)
|
|
self:Log("SPELL_AURA_REMOVED", "TornSoulRemoved", 206896)
|
|
|
|
--[[ Stage Two ]]--
|
|
self:Log("SPELL_CAST_START", "BondsOfFelCast", 206222, 206221) -- Normal, Empowered
|
|
self:Log("SPELL_AURA_APPLIED", "BondsOfFel", 209011, 206384) -- Normal, Empowered
|
|
self:Log("SPELL_CAST_START", "EyeOfGuldan", 209270, 211152) -- Normal, Empowered
|
|
self:Log("SPELL_AURA_APPLIED", "EyeOfGuldanApplied", 209454, 221728) -- Normal, Empowered
|
|
self:Log("SPELL_AURA_REMOVED", "EyeOfGuldanRemoved", 209454, 221728) -- Normal, Empowered
|
|
self:Log("SPELL_DAMAGE", "EyeofGuldandDamage", 209518, 211132) -- Normal, Empowered
|
|
self:Log("SPELL_MISSED", "EyeofGuldandDamage", 209518, 211132) -- Normal, Empowered
|
|
self:Log("SPELL_CAST_START", "Duplicate", 209291)
|
|
self:Log("SPELL_CAST_START", "CarrionWave", 208672)
|
|
|
|
--[[ Stage Three ]]--
|
|
self:Log("SPELL_CAST_SUCCESS", "Phase3Start", 227427) -- The Eye of Aman'Thul
|
|
self:Log("SPELL_AURA_APPLIED", "FuryOfTheFel", 227556) -- XXX untested
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "FuryOfTheFel", 227556) -- XXX untested
|
|
|
|
self:Log("SPELL_CAST_START", "StormOfTheDestroyer", 167819, 167935, 177380, 152987)
|
|
self:Log("SPELL_AURA_APPLIED", "SoulSiphon", 221891)
|
|
self:Log("SPELL_AURA_APPLIED", "SoulCorrosion", 208802)
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "SoulCorrosion", 208802)
|
|
self:Log("SPELL_CAST_START", "BlackHarvest", 206744)
|
|
self:Log("SPELL_AURA_APPLIED", "FlamesOfSargerasSoon", 221606)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "DesolateGroundDamage", 221781)
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "DesolateGroundDamage", 221781)
|
|
self:Log("SPELL_PERIODIC_MISSED", "DesolateGroundDamage", 221781)
|
|
self:Log("SPELL_DAMAGE", "DesolateGroundDamage", 221781)
|
|
self:Log("SPELL_MISSED", "DesolateGroundDamage", 221781)
|
|
|
|
self:Death("Deaths", 104537, 104534, 111070, 104154) -- Fel Lord Kuraz'mal, D'zorykx the Trapper, Fragment of Azzinoth, Gul'dan
|
|
|
|
-- Mythic
|
|
self:Log("SPELL_CAST_START", "WilloftheDemonWithin", 211439)
|
|
self:Log("SPELL_AURA_APPLIED", "ParasiticWound", 206847)
|
|
self:Log("SPELL_AURA_REMOVED", "ParasiticWoundRemoved", 206847)
|
|
self:Log("SPELL_AURA_APPLIED", "ShadowyGaze", 206983)
|
|
self:Log("SPELL_AURA_APPLIED", "ShearedSoul", 206458)
|
|
self:Log("SPELL_AURA_APPLIED", "Wounded", 227009)
|
|
self:Log("SPELL_CAST_START", "Soulsever", 220957)
|
|
self:Log("SPELL_AURA_APPLIED", "TimeStop", 206310)
|
|
self:Log("SPELL_AURA_REMOVED", "TimeStopRemoved", 206310)
|
|
self:Log("SPELL_CAST_START", "VisionsoftheDarkTitan", 227008)
|
|
self:Log("SPELL_CAST_SUCCESS", "VisionsoftheDarkTitanSuccess", 227008)
|
|
|
|
-- Shard of Azzinoth
|
|
self:Log("SPELL_CAST_SUCCESS", "ChaosSeed", 221336)
|
|
self:Log("SPELL_CAST_START", "BulwarkofAzzinoth", 221408)
|
|
self:Log("SPELL_CAST_START", "PurifiedEssence", 221486)
|
|
self:Log("SPELL_CAST_SUCCESS", "PurifiedEssenceSuccess", 221486)
|
|
|
|
self:Death("NightorbDeath", 111054)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
phase = 1
|
|
bondsCount = 1
|
|
liquidHellfireCount = 1
|
|
handOfGuldanCount = 1
|
|
blackHarvestCount = 1
|
|
stormCount = 1
|
|
flamesCount = 1
|
|
eyeCount = 1
|
|
eyeOnMe = false
|
|
obeliskCounter = 1
|
|
essenceCount = 1
|
|
timeStopCheck = nil
|
|
mobCollector = {}
|
|
effluxCount = 1
|
|
liquidHellfireEmpowered = false
|
|
bondsEmpowered = false
|
|
eyeEmpowered = false
|
|
expectedBonds = self:Mythic() and 4 or 3
|
|
timers = self:Mythic() and mythicTimers or self:Heroic() and heroicTimers or normalTimers
|
|
self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT")
|
|
self:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
|
|
|
|
if self:Mythic() then
|
|
phase = 2 -- Mythic skips the P1 of heroic
|
|
self:Bar(209011, 6.8, CL.count:format(self:SpellName(209011), bondsCount)) -- Bonds of Fel
|
|
self:Bar(212258, timers[212258][handOfGuldanCount], CL.count:format(self:SpellName(212258), handOfGuldanCount)) -- Hand of Gul'dan
|
|
self:Bar(209270, 26.3, CL.count:format(self:SpellName(209270), eyeCount)) -- Eye of Guldan
|
|
self:Bar(206219, 36.6, CL.count:format(self:SpellName(206219), liquidHellfireCount)) -- Liquid Hellfire
|
|
else
|
|
self:Bar("stages", 35, 206516) -- Eye of Aman'Thul
|
|
self:Bar(212258, 7) -- Hand of Gul'dan
|
|
self:Bar(206514, effluxTimers[effluxCount])
|
|
self:Berserk(720)
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:CHAT_MSG_MONSTER_YELL(event, msg)
|
|
if msg:find(L.p2_start) and not self:Mythic() then -- Stage Two: The Ritual of Aman'Thul Start
|
|
self:StopBar(CL.count:format(self:SpellName(206219), liquidHellfireCount)) -- Liquid Hellfire
|
|
self:StopBar(206514) -- Fel Efflux
|
|
|
|
phase = 2
|
|
liquidHellfireCount=1
|
|
handOfGuldanCount=1
|
|
eyeCount = 1
|
|
bondsCount = 1
|
|
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(phase), false)
|
|
|
|
-- Timers Stage 2
|
|
self:CDBar("stages", 14.5, 226141) -- Arcanetic Eruption timer / (spell icon/name: Knockback)
|
|
self:CDBar("stages", 18.1, 206516) -- Eye of Aman'Thul // Boss Attackable
|
|
self:Bar(209011, self:Easy() and 22.8 or 24.8, CL.count:format(self:SpellName(209011), bondsCount)) -- Bonds of Fel
|
|
if not self:Easy() then
|
|
self:Bar(212258, 31.5, CL.count:format(self:SpellName(212258), handOfGuldanCount)) -- Hand of Guldan
|
|
end
|
|
self:Bar(209270, self:Easy() and 50.4 or 47, CL.count:format(self:SpellName(209270), eyeCount)) -- Eye of Gul'dan
|
|
self:Bar(206219, self:Easy() and 79.6 or 58.1, CL.count:format(self:SpellName(206219), liquidHellfireCount)) -- Liquid Hellfire
|
|
elseif msg == L.p4_mythic_start_yell and self:Mythic() then -- Mythic Stage 4
|
|
phase = 4
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(phase), false)
|
|
self:Bar(211439, 39) -- Will of the Demon Within
|
|
elseif msg:find(L.warmup_trigger, nil, true) then
|
|
self:Bar("warmup", UnitFactionGroup("player") == "Alliance" and 62 or 66, CL.active, "achievement_thenighthold_guldan")
|
|
end
|
|
end
|
|
|
|
function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT()
|
|
for i=1, 5 do
|
|
local guid = self:UnitGUID(("boss%d"):format(i))
|
|
if guid and not mobCollector[guid] then
|
|
mobCollector[guid] = true
|
|
if self:MobId(guid) == 104537 then
|
|
self:MessageOld("stages", "cyan", nil, self:SpellName(-14894), false)
|
|
self:CDBar(206675, self:Mythic() and 20 or 18.3)
|
|
self:CDBar(229945, self:Mythic() and 10 or 10) -- Fel Obelisk
|
|
elseif self:MobId(guid) == 104536 then
|
|
self:MessageOld("stages", "cyan", nil, self:SpellName(-14897), false)
|
|
elseif self:MobId(guid) == 104534 then
|
|
self:MessageOld("stages", "cyan", nil, self:SpellName(-14902), false)
|
|
elseif (self:MobId(guid) == 105295 or self:MobId(guid) == 107232 or self:MobId(guid) == 107233 or self:MobId(guid) == 112249) then -- Dreadlords
|
|
self:MessageOld("stages", "cyan", nil, self:SpellName(209142), false) -- Dreadlord
|
|
elseif self:MobId(guid) == 111070 then -- Soul Fragment of Azzinoth
|
|
self:Bar(221336, 3.3) -- Chaos Seed
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
|
|
if spellId == 210273 then -- Fel Obelisk
|
|
obeliskCounter = obeliskCounter+1
|
|
self:MessageOld(229945, "yellow", "alarm")
|
|
self:Bar(229945, self:Mythic() and ((obeliskCounter % 2 == 0) and 5 or 16) or 23) -- Fel Obelisk
|
|
elseif spellId == 227035 then -- Parasitic Wound
|
|
self:Bar(206847, 36.0)
|
|
elseif spellId == 221149 or spellId == 227277 then -- Manifest Azzinoth
|
|
self:MessageOld("manifest", "yellow", "alert", 221149, L.manifest_icon)
|
|
self:CDBar(221408, 15.0) -- Bulwark of Azzinoth
|
|
self:Bar("manifest", 41.0, 221149, L.manifest_icon) -- Glaive Icon
|
|
elseif spellId == 227071 then -- Flame Crash
|
|
crashCounter = crashCounter + 1
|
|
self:Bar(spellId, crashCounter == 5 and 50 or crashCounter == 8 and 50 or 20, CL.count:format(self:SpellName(spellId), crashCounter))
|
|
elseif spellId == 227283 then -- Nightorb
|
|
orbCounter = orbCounter + 1
|
|
self:MessageOld("nightorb", "yellow", "alert", spellId, L.nightorb_icon)
|
|
if orbCounter ~= 5 then
|
|
self:Bar("nightorb", orbCounter == 3 and 60 or orbCounter == 4 and 40 or 45, CL.count:format(self:SpellName(spellId), orbCounter), L.nightorb_icon)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:RAID_BOSS_EMOTE(event, msg)
|
|
if msg:find("206221", nil, true) and not bondsEmpowered then -- Gains Empowered Bonds of Fel
|
|
bondsEmpowered = true
|
|
self:MessageOld(209011, "cyan", nil, L.gains:format(self:SpellName(206221)))
|
|
local oldText = CL.count:format(self:SpellName(209011), bondsCount)
|
|
self:Bar(209011, self:BarTimeLeft(oldText), CL.count:format(L.empowered:format(self:SpellName(209011)), bondsCount)) -- (E) Bonds of Fel
|
|
self:StopBar(oldText) -- Bonds of Fel
|
|
elseif msg:find("206220", nil, true) and not liquidHellfireEmpowered then -- Empowered Liquid Hellfire
|
|
liquidHellfireEmpowered = true -- Fires every cast, not just on gaining empowered
|
|
self:MessageOld(206219, "cyan", nil, L.gains:format(self:SpellName(206220)))
|
|
local oldText = CL.count:format(self:SpellName(206219), liquidHellfireCount)
|
|
self:Bar(206219, self:BarTimeLeft(oldText), CL.count:format(L.empowered:format(self:SpellName(206219)), liquidHellfireCount)) -- (E) Liquid Hellfire
|
|
self:StopBar(oldText) -- Liquid Hellfire
|
|
elseif msg:find("211152", nil, true) and not eyeEmpowered then -- Empowered Eye of Gul'dan
|
|
eyeEmpowered = true
|
|
self:MessageOld(211152, "cyan", nil, L.gains:format(self:SpellName(211152)))
|
|
local oldText = CL.count:format(self:SpellName(209270), eyeCount)
|
|
self:Bar(211152, self:BarTimeLeft(oldText), CL.count:format(L.empowered:format(self:SpellName(209270)), eyeCount)) -- (E) Eye of Guldan
|
|
self:StopBar(oldText) -- Eye of Gul'dan
|
|
end
|
|
end
|
|
|
|
--[[ Essence of Aman'Thul ]]--
|
|
function mod:TimeDilation(args)
|
|
if self:Me(args.destGUID) then
|
|
self:TargetMessageOld(args.spellId, args.destName, "blue")
|
|
end
|
|
end
|
|
|
|
do
|
|
local list = mod:NewTargetList()
|
|
function mod:ScatteringField(args)
|
|
list[#list+1] = args.destName
|
|
if #list == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 0.5, args.spellId, list, "green", "info", nil, nil, true)
|
|
end
|
|
if self:Me(args.sourceGUID) then
|
|
self:Say(args.spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:ResonantBarrier(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "green")
|
|
self:TargetBar(args.spellId, 6, args.destName)
|
|
end
|
|
|
|
function mod:EyeOfAmanThul(args)
|
|
self:MessageOld("stages", "cyan", "long", args.spellName, args.spellId)
|
|
if self:Easy() then
|
|
self:Bar(206514, 9.8) -- Fel Efflux
|
|
end
|
|
end
|
|
|
|
function mod:EyeOfAmanThulRemoved(args) -- Phase 2 start
|
|
if phase ~= 2 then -- Boss say message is faster, don't trigger if we already are in phase 2
|
|
self:StopBar(CL.count:format(self:SpellName(206219), liquidHellfireCount)) -- Liquid Hellfire
|
|
self:StopBar(206514) -- Fel Efflux
|
|
|
|
phase = 2
|
|
handOfGuldanCount = 1
|
|
liquidHellfireCount = 1
|
|
bondsCount = 1
|
|
eyeCount = 1
|
|
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(2), args.spellId)
|
|
self:Bar(209011, self:Easy() and 7.5 or 9.5, CL.count:format(self:SpellName(209011), bondsCount)) -- Bonds of Fel
|
|
if not self:Easy() then
|
|
self:Bar(212258, 13.5, CL.count:format(self:SpellName(212258), handOfGuldanCount)) -- Hand of Gul'dan
|
|
end
|
|
self:Bar(206219, self:Easy() and 45 or 23.5, CL.count:format(self:SpellName(206219), liquidHellfireCount)) -- Liquid Hellfire
|
|
self:Bar(209270, self:Easy() and 32.4 or 29, CL.count:format(self:SpellName(209270), eyeCount)) -- Eye of Gul'dan
|
|
end
|
|
end
|
|
|
|
function mod:Deaths(args)
|
|
if args.mobId == 104537 then -- Fel Lord Kuraz'mal
|
|
self:StopBar(206675) -- Shatter Essence
|
|
self:StopBar(229945) -- Fel Obelisk
|
|
elseif args.mobId == 104534 then -- D'zorykx the Trapper
|
|
self:StopBar(206883) -- Soul Vortex
|
|
self:StopBar(CL.cast:format(self:SpellName(206883))) -- Soul Vortex cast
|
|
elseif args.mobId == 111070 then -- Azzinoth
|
|
self:StopBar(221336) -- Chaos Seed
|
|
elseif args.mobId == 104154 and self:Mythic() then -- Guldan
|
|
self:StopBar(CL.count:format(self:SpellName(221606), flamesCount % 3 == 0 and 3 or flamesCount % 3)) -- Flames Bar
|
|
self:StopBar(206744) -- Black Harvest
|
|
self:StopBar(167935) -- Storm of the Destroyer
|
|
self:StopBar(CL.count:format(L.empowered:format(self:SpellName(209270)), eyeCount)) -- Eye of Guldan
|
|
end
|
|
end
|
|
|
|
--[[ Stage One ]]--
|
|
function mod:LiquidHellfire(args)
|
|
local spellName = self:SpellName(206219)
|
|
self:MessageOld(206219, "orange", "alarm", CL.incoming:format(CL.count:format(args.spellName, liquidHellfireCount)))
|
|
liquidHellfireCount = liquidHellfireCount + 1
|
|
if self:Mythic() and liquidHellfireCount == 3 then -- Empowered spells are set in Mythic
|
|
liquidHellfireEmpowered = true
|
|
end
|
|
if liquidHellfireEmpowered then
|
|
spellName = L.empowered:format(spellName)
|
|
end
|
|
local t = 0
|
|
if phase == 1 then
|
|
t = liquidHellfireCount == 2 and 15 or (self:Easy() and liquidHellfireCount > 3 and 32.5) or 25
|
|
elseif self:Mythic() then
|
|
t = (liquidHellfireCount == 5 or liquidHellfireCount == 7) and 66 or 33
|
|
elseif self:Easy() then
|
|
t = liquidHellfireCount == 5 and 82.5 or 41.2
|
|
else
|
|
t = liquidHellfireCount == 5 and 73.2 or 36.6
|
|
end
|
|
self:Bar(206219, t, CL.count:format(spellName, liquidHellfireCount)) -- gets skipped once
|
|
end
|
|
|
|
function mod:FelEfflux(args)
|
|
effluxCount=effluxCount+1
|
|
self:MessageOld(args.spellId, "red", "alert")
|
|
if self:Easy() then
|
|
self:CDBar(args.spellId, 15.6) -- easy: pull, 11, 14, EyeOfAmanThul, 10, 15.6, 16.8, 15.6,...
|
|
else
|
|
self:Bar(args.spellId, effluxTimers[effluxCount] or 12)
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:FelEffluxDamage(args)
|
|
local t = GetTime()
|
|
if self:Me(args.destGUID) and t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(206514, "blue", "alarm", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:HandOfGuldan(args)
|
|
self:MessageOld(args.spellId, "yellow", "info")
|
|
handOfGuldanCount = handOfGuldanCount + 1
|
|
if phase == 1 and handOfGuldanCount < 4 then
|
|
self:Bar(args.spellId, handOfGuldanCount == 2 and 14 or 10, CL.count:format(args.spellName, handOfGuldanCount))
|
|
elseif phase == 2 then
|
|
local timer = timers[args.spellId][handOfGuldanCount]
|
|
if timer then
|
|
self:Bar(args.spellId, timer, CL.count:format(args.spellName, handOfGuldanCount))
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[ Inquisitor Vethriz ]]--
|
|
function mod:Shadowblink(args)
|
|
self:MessageOld(args.spellId, "yellow", "info")
|
|
end
|
|
|
|
function mod:Drain(args)
|
|
if self:Dispeller("magic") or self:Me(args.destGUID) then
|
|
self:TargetMessageOld(args.spellId, args.destName, "orange", "alarm")
|
|
end
|
|
end
|
|
|
|
function mod:GazeOfVethrizCast(args)
|
|
self:MessageOld(args.spellId, "yellow", "info")
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:GazeOfVethrizDamage(args)
|
|
local t = GetTime()
|
|
if self:Me(args.destGUID) and t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(206840, "blue", "alarm", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[ Fel Lord Kuraz'mal ]]--
|
|
function mod:ShatterEssence(args)
|
|
self:MessageOld(args.spellId, "red", "warning", CL.casting:format(args.spellName))
|
|
self:CastBar(args.spellId, 3)
|
|
self:Bar(args.spellId, self:Mythic() and 21 or 52)
|
|
end
|
|
|
|
--[[ D'zorykx the Trapper ]]--
|
|
function mod:AnguishedSpirits(args)
|
|
self:MessageOld(args.spellId, "yellow", "alert", CL.incoming:format(args.spellName))
|
|
end
|
|
|
|
function mod:SoulVortex(args)
|
|
self:MessageOld(args.spellId, "orange", "long")
|
|
self:CastBar(args.spellId, 9) -- actual cast + pull in
|
|
self:Bar(args.spellId, 21.1)
|
|
end
|
|
|
|
function mod:TornSoul(args)
|
|
if self:Tank(args.destName) then
|
|
local amount = args.amount or 1
|
|
self:StackMessage(args.spellId, args.destName, amount, "orange", amount > 1 and "warning") -- check sound amount
|
|
self:TargetBar(args.spellId, 30, args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:TornSoulRemoved(args)
|
|
self:StopBar(args.spellId, args.destName)
|
|
end
|
|
|
|
--[[ Stage Two ]]--
|
|
function mod:BondsOfFelCast(args)
|
|
local spellName = self:SpellName(209011)
|
|
self:MessageOld(209011, "yellow", "info", CL.casting:format(CL.count:format(args.spellName, bondsCount)))
|
|
bondsCount = bondsCount + 1
|
|
if self:Mythic() then -- Only the first cast is not empowered
|
|
bondsEmpowered = true
|
|
end
|
|
if bondsEmpowered then
|
|
spellName = L.empowered:format(spellName)
|
|
end
|
|
self:Bar(209011, self:Mythic() and 40 or self:Heroic() and 44.5 or 50, CL.count:format(spellName, bondsCount))
|
|
end
|
|
|
|
do
|
|
local list, scheduled = mod:NewTargetList(), nil
|
|
function mod:BondsOfFel(args)
|
|
list[#list+1] = args.destName
|
|
if #list == 1 then
|
|
scheduled = self:ScheduleTimer("TargetMessageOld", 1, 209011, list, "red", "warning", CL.count:format(self:SpellName(209011), bondsCount-1), nil, true) -- Have the bonds number in the list warning also
|
|
end
|
|
if self:Me(args.destGUID) then
|
|
self:Say(209011, CL.count:format(args.spellName, #list))
|
|
self:Flash(209011)
|
|
end
|
|
if #list == expectedBonds then
|
|
self:CancelTimer(scheduled)
|
|
self:TargetMessageOld(209011, list, "red", "warning", CL.count:format(self:SpellName(209011), bondsCount-1), nil, true) -- Have the bonds number in the list warning also
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:EyeOfGuldan(args)
|
|
local spellName = self:SpellName(209270)
|
|
self:MessageOld(args.spellId, "orange", "alert", CL.count:format(args.spellName, eyeCount))
|
|
eyeCount = eyeCount + 1
|
|
if self:Mythic() and eyeCount == 6 then -- Empowered Eye next in Mythic
|
|
eyeEmpowered = true
|
|
end
|
|
if eyeEmpowered then
|
|
spellName = L.empowered:format(spellName)
|
|
end
|
|
local timer = nil
|
|
if phase == 2 then
|
|
timer = self:LFR() and 64 or self:Normal() and 60 or (self:Mythic() and (eyeCount == 7 and 80 or 48)) or 53.3
|
|
else
|
|
timer = timers[211152][eyeCount]
|
|
end
|
|
if timer or self:Easy() then -- message for incomplete easy timers
|
|
self:Bar(args.spellId, timer, CL.count:format(spellName, eyeCount))
|
|
end
|
|
end
|
|
|
|
function mod:EyeOfGuldanApplied(args)
|
|
if self:Me(args.destGUID) then
|
|
eyeOnMe = true
|
|
local spellId = args.spellId == 209454 and 209270 or 211152
|
|
local spellName = args.spellId == 209454 and args.spellName or L.empowered:format(args.spellName)
|
|
self:MessageOld(spellId, "blue", "alert", CL.you:format(spellName))
|
|
self:OpenProximity(spellId, 8)
|
|
end
|
|
end
|
|
|
|
function mod:EyeOfGuldanRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
eyeOnMe = false
|
|
self:CloseProximity(args.spellId == 209454 and 209270 or 211152)
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:EyeofGuldandDamage(args)
|
|
if self:Me(args.destGUID) then
|
|
local spellId = args.spellId == 209518 and 209270 or 211152
|
|
local spellName = args.spellId == 209518 and args.spellName or L.empowered:format(args.spellName)
|
|
local t = GetTime()
|
|
if t-prev < 0.5 then -- Warn if you take more than one tick
|
|
self:MessageOld(spellId, "blue", "alert", CL.underyou:format(spellName))
|
|
elseif eyeOnMe == false then -- Always warn if you arn't fixated
|
|
self:MessageOld(spellId, "blue", "alert", CL.underyou:format(spellName))
|
|
end
|
|
prev = t
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:Duplicate(args)
|
|
local t = GetTime()
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(209270, "cyan", "info", args.spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:CarrionWave(args)
|
|
if self:Interrupter(args.sourceGUID) then
|
|
self:MessageOld(args.spellId, "yellow", "long")
|
|
self:Bar(args.spellId, 6.1)
|
|
end
|
|
end
|
|
|
|
--[[ Stage Three ]]--
|
|
function mod:FuryOfTheFel(args)
|
|
local amount = args.amount or 1
|
|
self:MessageOld(args.spellId, "green", "info", CL.count:format(args.spellName, amount))
|
|
end
|
|
|
|
function mod:Phase3Start(args) -- The Eye of Aman'thul applied (227427)
|
|
self:StopBar(CL.count:format(self:SpellName(212258), handOfGuldanCount)) -- Hand of Gul'dan
|
|
self:StopBar(CL.count:format(L.empowered:format(self:SpellName(209011)), bondsCount)) -- Empowered Bonds of Fel
|
|
self:StopBar(CL.count:format(L.empowered:format(self:SpellName(206219)), liquidHellfireCount)) -- Empowered Liquid Hellfire
|
|
self:StopBar(CL.count:format(L.empowered:format(self:SpellName(209270)), eyeCount)) -- Empowered Eye of Gul'dan
|
|
|
|
eyeCount = 1
|
|
phase = 3
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(3), args.spellId)
|
|
self:Bar("stages", 8, args.spellName, args.spellId) -- Eye of Aman'Thul
|
|
self:CDBar("winds", 11.5, CL.count:format(self:SpellName(218144), blackHarvestCount), 218144) -- Violent Winds, using blackHarvestCount, only once below Mythic.
|
|
self:Bar(206939, 15.2) -- Well of Souls
|
|
self:Bar(221606, self:Mythic() and 24.5 or self:Heroic() and 27.5 or 29.3) -- Flames of Sargeras
|
|
self:Bar(211152, timers[211152][eyeCount], CL.count:format(L.empowered:format(self:SpellName(209270)), eyeCount)) -- Empowered Eye of Gul'dan
|
|
self:Bar(206744, timers[206744][blackHarvestCount], CL.count:format(self:SpellName(206744), blackHarvestCount)) -- Black Harvest
|
|
self:Bar(167935, self:Easy() and 94 or timers[167935][stormCount]) -- Storm of the Destroyer
|
|
end
|
|
|
|
function mod:StormOfTheDestroyer(args)
|
|
self:MessageOld(167935, "red", "long")
|
|
if args.spellId == 167819 then -- First Storm
|
|
stormCount = stormCount + 1
|
|
if self:Easy() then
|
|
self:Bar(167935, stormCount == 2 and 78.5 or 70)
|
|
else
|
|
local timer = timers[167935][stormCount]
|
|
if timer then
|
|
self:Bar(167935, timer) -- timers should be complete
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local list = mod:NewTargetList()
|
|
function mod:SoulSiphon(args)
|
|
list[#list+1] = args.destName
|
|
if #list == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 1, args.spellId, list, "red")
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SoulCorrosion(args)
|
|
if self:Me(args.destGUID) then
|
|
local amount = args.amount or 1
|
|
self:StackMessage(args.spellId, args.destName, amount, "blue", amount > 2 and "info") -- check sound amount
|
|
end
|
|
end
|
|
|
|
function mod:BlackHarvest(args)
|
|
self:MessageOld(args.spellId, "orange", "alert", CL.count:format(args.spellName, blackHarvestCount))
|
|
blackHarvestCount = blackHarvestCount + 1
|
|
local timer = timers[args.spellId][blackHarvestCount]
|
|
if timer or self:Easy() then -- message for incomplete easy timers
|
|
self:CDBar(args.spellId, timer, CL.count:format(args.spellName, blackHarvestCount))
|
|
end
|
|
-- Violet Winds timers
|
|
if self:Mythic() then
|
|
local windsTimer = timers[218144][blackHarvestCount]
|
|
if windsTimer then
|
|
self:Bar("winds", windsTimer, CL.count:format(self:SpellName(218144), blackHarvestCount), 218144)
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:DesolateGroundDamage(args)
|
|
local t = GetTime()
|
|
if self:Me(args.destGUID) and t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(args.spellId, "blue", "alarm", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:FlamesOfSargerasSoon(args)
|
|
if self:Me(args.destGUID) then
|
|
self:TargetMessageOld(args.spellId, args.destName, "blue", "warning")
|
|
self:Say(args.spellId)
|
|
self:Flash(args.spellId)
|
|
self:TargetBar(args.spellId, 6, args.destName)
|
|
elseif self:Tank(args.destName) and self:Tank() then -- Tank taunt mechanic in P3
|
|
self:TargetMessageOld(args.spellId, args.destName, "blue", "warning")
|
|
end
|
|
local t = GetTime()
|
|
if t-prev > 5 then
|
|
prev = t
|
|
flamesCount = flamesCount + 1
|
|
if self:Easy() then
|
|
self:Bar(args.spellId, flamesCount == 9 and 41 or flamesCount % 2 == 0 and 19 or 39.6)
|
|
else
|
|
local timer = timers[args.spellId][flamesCount]
|
|
if timer then
|
|
self:Bar(args.spellId, timer, CL.count:format(args.spellName, flamesCount % 3 == 0 and 3 or flamesCount % 3))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Mythic Only
|
|
function mod:WilloftheDemonWithin(args)
|
|
if phase ~= 4 then -- Fallback for missing the p4 yell
|
|
phase = 4
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(phase), false)
|
|
end
|
|
|
|
self:MessageOld(args.spellId, "yellow", "warning")
|
|
self:CastBar(args.spellId, 4)
|
|
|
|
severCount = 1
|
|
crashCounter = 1
|
|
orbCounter = 1
|
|
visionCounter = 1
|
|
self:Bar(206847, 8.6) -- Parasitic Wound
|
|
self:Bar(220957, 19.6, CL.count:format(self:SpellName(220957), severCount)) -- Soulsever
|
|
self:Bar("manifest", 26.6, 221149, L.manifest_icon) -- Manifest Azzinoth
|
|
self:Bar(227071, 29.6, CL.count:format(self:SpellName(227071), crashCounter)) -- Flame Crash
|
|
self:Bar("nightorb", 39.6, CL.count:format(self:SpellName(227283), orbCounter), L.nightorb_icon) -- Summon Nightorb
|
|
self:Bar(227008, 96.2, CL.count:format(self:SpellName(227008), visionCounter)) -- Visions of the Dark Titan
|
|
end
|
|
|
|
do
|
|
local playerList = mod:NewTargetList()
|
|
function mod:ParasiticWound(args)
|
|
local _, _, _, expires = self:UnitDebuff(args.destName, args.spellName, args.spellId)
|
|
local remaining = expires-GetTime()
|
|
if self:Me(args.destGUID) then
|
|
self:Flash(args.spellId)
|
|
self:Say(args.spellId)
|
|
for i = 1, 3 do
|
|
if remaining-i > 0 then
|
|
parasiteSayTimers[#parasiteSayTimers+1] = self:ScheduleTimer("Say", remaining-i, 206847, i, true)
|
|
end
|
|
end
|
|
end
|
|
|
|
playerList[#playerList+1] = args.destName
|
|
|
|
if #playerList == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 0.1, args.spellId, playerList, "orange", "alarm", nil, nil, true)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:ParasiticWoundRemoved(args) -- Stop Parasite Say Messages
|
|
if self:Me(args.destGUID) then
|
|
for _,timer in pairs(parasiteSayTimers) do
|
|
self:CancelTimer(timer)
|
|
end
|
|
parasiteSayTimers = {}
|
|
end
|
|
end
|
|
|
|
function mod:TimeStop(args) -- Stop Parasite Say Messages
|
|
if self:Me(args.destGUID) then
|
|
for _,timer in pairs(parasiteSayTimers) do
|
|
self:CancelTimer(timer)
|
|
end
|
|
parasiteSayTimers = {}
|
|
end
|
|
end
|
|
|
|
function mod:TimeStopRemoved(args) -- Resume Parasite Say Messages
|
|
if self:Me(args.destGUID) then
|
|
local debuff, _, _, expires = self:UnitDebuff("player", self:SpellName(206847))
|
|
if not debuff then return end
|
|
local remaining = floor(expires - GetTime())
|
|
|
|
for i = 1, 3 do
|
|
if remaining-i > 0 then
|
|
parasiteSayTimers[#parasiteSayTimers+1] = self:ScheduleTimer("Say", remaining-i, 206847, i, true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
-- 4 Fixates, 2 players, avoid double names in list.
|
|
local playerList, first = mod:NewTargetList(), ""
|
|
function mod:ShadowyGaze(args)
|
|
if #playerList == 0 then -- First fixate
|
|
first = args.destName
|
|
playerList[#playerList+1] = args.destName
|
|
self:ScheduleTimer("TargetMessageOld", 0.1, args.spellId, playerList, "red", "info")
|
|
end
|
|
if args.destName ~= first and #playerList < 2 then -- Second Fixate
|
|
playerList[#playerList+1] = args.destName
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:Soulsever(args)
|
|
severCount = severCount + 1
|
|
self:MessageOld(args.spellId, "orange", self:Tank() and "warning", args.spellName)
|
|
self:Bar(args.spellId, severCount == 5 and 50 or severCount == 8 and 50 or 20, CL.count:format(args.spellName, severCount))
|
|
end
|
|
|
|
function mod:ShearedSoul(args)
|
|
if self:Me(args.destGUID) then
|
|
self:TargetMessageOld(220957, args.destName, "blue", "alert")
|
|
end
|
|
end
|
|
|
|
do
|
|
local timeStop = mod:SpellName(206310)
|
|
|
|
local function checkForTimeStop(self)
|
|
if UnitIsDead("player") then
|
|
-- Nothing
|
|
elseif not self:UnitDebuff("player", timeStop) then
|
|
self:MessageOld(206310, "blue", "warning", CL.no:format(timeStop))
|
|
timeStopCheck = self:ScheduleTimer(checkForTimeStop, 1.5, self)
|
|
else
|
|
self:MessageOld(206310, "green", nil, CL.you:format(timeStop))
|
|
end
|
|
end
|
|
|
|
function mod:PurifiedEssence(args)
|
|
self:MessageOld(args.spellId, "red", "alarm", CL.cast:format(CL.count:format(args.spellName, essenceCount)))
|
|
essenceCount = essenceCount + 1
|
|
self:CastBar(args.spellId, 4, CL.count:format(args.spellName, essenceCount))
|
|
if not timeStopCheck then
|
|
checkForTimeStop(self)
|
|
end
|
|
end
|
|
|
|
function mod:PurifiedEssenceSuccess()
|
|
if timeStopCheck then
|
|
self:CancelTimer(timeStopCheck)
|
|
timeStopCheck = nil
|
|
end
|
|
end
|
|
|
|
function mod:VisionsoftheDarkTitan(args)
|
|
visionCounter = visionCounter+1
|
|
self:MessageOld(args.spellId, "red", "alarm", CL.casting:format(args.spellName))
|
|
self:CastBar(args.spellId, 9)
|
|
if visionCounter ~= 4 then
|
|
self:Bar(args.spellId, visionCounter == 3 and 150 or 90, CL.count:format(args.spellName, visionCounter))
|
|
end
|
|
if not timeStopCheck then
|
|
checkForTimeStop(self)
|
|
end
|
|
end
|
|
|
|
function mod:VisionsoftheDarkTitanSuccess()
|
|
if timeStopCheck then
|
|
self:CancelTimer(timeStopCheck)
|
|
timeStopCheck = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:Wounded(args)
|
|
self:MessageOld(args.spellId, "cyan", "long")
|
|
self:Bar(args.spellId, 15)
|
|
self:StopBar(CL.cast:format(self:SpellName(227008))) -- Visions of the Dark Titan
|
|
end
|
|
|
|
-- Shard of Azzinoth
|
|
function mod:ChaosSeed(args)
|
|
self:Bar(args.spellId, 10.9)
|
|
end
|
|
|
|
function mod:BulwarkofAzzinoth(args)
|
|
self:MessageOld(args.spellId, "orange", "alert")
|
|
end
|
|
|
|
function mod:NightorbDeath()
|
|
self:Bar(206310, 10, CL.count:format(L.timeStopZone, orbCounter-1))
|
|
end
|
|
|