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.

664 lines
23 KiB

--------------------------------------------------------------------------------
-- TODO List:
-- Fix/Remove untested mythic funcs:
-- MistInfusion
-- (Mythic) Update Lantarn of Darkness initial timer.
-- (Mythic) Update Fetid Rot timers
-- (Mythic) If marking Orb targets, in p3 there is double dps
--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Helya-TrialOfValor", 1648, 1829)
if not mod then return end
mod:RegisterEnableMob(114537)
mod.engageId = 2008
mod.respawnTime = 30
--------------------------------------------------------------------------------
-- Locals
--
local taintMarkerCount = 4
local tentaclesUp = 9
local phase = 1
local orbCount = 1
local tentacleCount = 1
local tentacleMsgCount = 1
local taintCount = 1
local breathCount = 1
local timers = {
["Tentacle Strike"] = {35.4, 4.0, 32.0, 0.0, 35.6, 4.0, 31.3, 4.0, 4.0, 27.2, 4.0}, -- furthest data we have
["Orb of Corrosion"] = {6, 13.0, 13.0, 27.3, 10.7, 13.0, 25.0, 13.0, 13.0, 25.0, 13.0, 18.5, 19.5, 13.0, 13.0, 12.0, 12.0, 16.8, 8.2}, -- furthest data we have
}
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.nearTrigger = "near" -- |TInterface\\Icons\\inv_misc_monsterhorn_03.blp:20|t A %s emerges near Helya!
L.farTrigger = "far" -- |TInterface\\Icons\\inv_misc_monsterhorn_03.blp:20|t A %s emerges far from Helya!
L.tentacle_near = "Tentacle NEAR Helya"
L.tentacle_near_desc = "This option can be used to emphasize or hide the messages when a Striking Tentacle spawns near Helya."
L.tentacle_near_icon = 228730
L.tentacle_far = "Tentacle FAR from Helya"
L.tentacle_far_desc = "This option can be used to emphasize or hide the messages when a Striking Tentacle spawns far from Helya."
L.tentacle_far_icon = 228730
L.orb_melee = "Orb: Melee timer"
L.orb_melee_desc = "Show the timer for the Orbs that spawn on Melee."
L.orb_melee_icon = 229119
L.orb_melee_bar = "Melee Orb"
L.orb_ranged = "Orb: Ranged timer"
L.orb_ranged_desc = "Show the timer for the Orbs that spawn on Ranged."
L.orb_ranged_icon = 229119
L.orb_ranged_bar = "Ranged Orb"
L.gripping_tentacle = -14309
L.grimelord = -14263
L.mariner = -14278
L.orb_say = "Orb"
L.taint_say = "Taint"
end
--------------------------------------------------------------------------------
-- Initialization
--
local orbMarker = mod:AddMarkerOption(false, "player", 1, 229119, 1, 2, 3) -- Orb of Corruption
local taintMarker = mod:AddMarkerOption(false, "player", 4, 228054, 4, 5, 6, 7, 8) -- Taint of the Sea
function mod:GetOptions()
return {
--[[ Helya ]]--
"stages",
"berserk",
{229119, "SAY", "FLASH"}, -- Orb of Corruption
"orb_melee",
"orb_ranged",
orbMarker,
227967, -- Bilewater Breath
227992, -- Bilewater Liquefaction
{227982, "TANK"}, -- Bilewater Redox
228730, -- Tentacle Strike
"tentacle_near",
"tentacle_far",
{228054, "SAY"}, -- Taint of the Sea
taintMarker,
228872, -- Corrossive Nova
230197, -- Dark Waters
--[[ Stage Two: From the Mists ]]--
228300, -- Fury of the Maw
167910, -- Kvaldir Longboat
--[[ Grimelord ]]--
228390, -- Sludge Nova
{193367, "SAY", "SAY_COUNTDOWN", "FLASH", "PROXIMITY"}, -- Fetid Rot
228519, -- Anchor Slam
--[[ Night Watch Mariner ]]--
228619, -- Lantern of Darkness
228633, -- Give No Quarter
{228611, "TANK"}, -- Ghostly Rage
--[[ Decaying Minion ]]--
228127, -- Decay
--[[ Helarjer Mistcaller ]]--
228854, -- Mist Infusion
--[[ Stage Three: Helheim's Last Stand ]]--
{230267, "SAY", "FLASH"}, -- Orb of Corrosion
228565, -- Corrupted Breath
{232488, "TANK"}, -- Dark Hatred
{232450, "HEALER"}, -- Corrupted Axiom
},{
["stages"] = -14213, -- Helya
[228300] = -14222, -- Stage Two: From the Mists
[228390] = -14263, -- Grimelord
[228619] = -14278, -- Night Watch Mariner
[228127] = -14223, -- Decaying Minion
[228854] = -14544, -- Helarjer Mistcaller
[230267] = -14224, -- Stage Three: Helheim's Last Stand
}
end
function mod:OnBossEnable()
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2", "boss3", "boss4", "boss5")
self:RegisterEvent("RAID_BOSS_EMOTE")
self:RegisterEvent("RAID_BOSS_WHISPER")
--[[ Helya ]]--
self:Log("SPELL_CAST_START", "OrbOfCorruption", 227903)
self:Log("SPELL_AURA_APPLIED", "OrbApplied", 229119)
self:Log("SPELL_AURA_REMOVED", "OrbRemoved", 229119)
self:Log("SPELL_DAMAGE", "OrbDamage", 227930)
self:Log("SPELL_MISSED", "OrbDamage", 227930)
self:Log("SPELL_AURA_APPLIED", "TaintOfTheSea", 228054)
self:Log("SPELL_AURA_REMOVED", "TaintOfTheSeaRemoved", 228054)
self:Log("SPELL_CAST_START", "BilewaterBreath", 227967)
self:Log("SPELL_AURA_APPLIED", "BilewaterRedox", 227982)
self:Log("SPELL_CAST_START", "TentacleStrike", 228730)
self:Log("SPELL_CAST_START", "CorrossiveNova", 228872)
self:Log("SPELL_AURA_APPLIED", "DarkWatersDamage", 230197)
self:Log("SPELL_PERIODIC_DAMAGE", "DarkWatersDamage", 230197)
self:Log("SPELL_PERIODIC_MISSED", "DarkWatersDamage", 230197)
--[[ Stage Two: From the Mists ]]--
self:Log("SPELL_AURA_APPLIED", "FuryOfTheMaw", 228300)
self:Log("SPELL_AURA_REMOVED", "FuryOfTheMawRemoved", 228300)
self:Log("SPELL_AURA_REMOVED", "KvaldirLongboat", 167910) -- Add Spawn
--[[ Grimelord ]]--
self:Log("SPELL_CAST_START", "SludgeNova", 228390)
self:Log("SPELL_AURA_APPLIED", "FetidRot", 193367)
self:Log("SPELL_AURA_REMOVED", "FetidRotRemoved", 193367)
self:Log("SPELL_CAST_START", "AnchorSlam", 228519)
self:Death("GrimelordDeath", 114709)
--[[ Night Watch Mariner ]]--
self:Log("SPELL_CAST_START", "LanternOfDarkness", 228619)
self:Log("SPELL_CAST_SUCCESS", "GiveNoQuarter", 228633)
self:Log("SPELL_CAST_SUCCESS", "GhostlyRage", 228611)
self:Death("MarinerDeath", 114809)
--[[ Decaying Minion ]]--
self:Log("SPELL_AURA_APPLIED", "DecayDamage", 228127)
self:Log("SPELL_PERIODIC_DAMAGE", "DecayDamage", 228127)
self:Log("SPELL_PERIODIC_MISSED", "DecayDamage", 228127)
--[[ Helarjer Mistcaller ]]--
self:Log("SPELL_CAST_START", "MistInfusion", 228854)
--[[ Stage Three: Helheim's Last Stand ]]--
self:Log("SPELL_CAST_START", "OrbOfCorrosion", 228056)
self:Log("SPELL_AURA_APPLIED", "OrbApplied", 230267)
self:Log("SPELL_AURA_REMOVED", "OrbRemoved", 230267)
self:Log("SPELL_DAMAGE", "OrbDamage", 228063)
self:Log("SPELL_MISSED", "OrbDamage", 228063)
self:Log("SPELL_CAST_START", "CorruptedBreath", 228565)
self:Log("SPELL_AURA_APPLIED", "DarkHatred", 232488)
self:Log("SPELL_AURA_APPLIED", "CorruptedAxiom", 232450)
end
function mod:OnEngage()
taintMarkerCount = 4
tentaclesUp = self:Mythic() and 8 or 9
phase = 1
orbCount = 1
tentacleCount = 1
tentacleMsgCount = 1
taintCount = 1
breathCount = 1
self:CDBar(227967, self:Mythic() and 10.5 or self:Heroic() and 12 or 13.3, CL.count:format(self:SpellName(227967), breathCount)) -- Bilewater Breath
self:CDBar(228054, self:Mythic() and 15.5 or self:Heroic() and 19.5 or self:Normal() and 12 or 21.8, CL.count:format(self:SpellName(228054), taintCount)) -- Taint of the Sea
self:CDBar("orb_ranged", self:Mythic() and 14 or self:Heroic() and 31 or self:Normal() and 18 or 34, CL.count:format(L.orb_ranged_bar, orbCount), 229119) -- Orb of Corruption
if not self:LFR() then
self:CDBar(228730, self:Mythic() and 35.3 or self:Heroic() and 36.7 or 53.3, CL.count:format(self:SpellName(228730), tentacleCount)) -- Tentacle Strike
end
if self:Mythic() then
self:Berserk(660)
end
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
if spellId == 34098 then -- ClearAllDebuffs
phase = 2
self:MessageOld("stages", "cyan", "long", CL.stage:format(2), false)
self:StopBar(CL.count:format(L.orb_ranged_bar, orbCount))
self:StopBar(CL.count:format(L.orb_melee_bar, orbCount))
self:StopBar(CL.count:format(self:SpellName(228054), taintCount)) -- Taint of the Sea
self:StopBar(CL.count:format(self:SpellName(227967), breathCount)) -- Bilewater Breath
if not self:LFR() then
self:StopBar(CL.count:format(self:SpellName(228730), tentacleCount)) -- Tentacle Strike
end
self:Bar(167910, 14, CL.adds) -- Kvaldir Longboat
self:Bar(228300, self:Mythic() and 11 or 50) -- Fury of the Maw
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
elseif spellId == 228546 then -- Helya
self:UnregisterUnitEvent("UNIT_HEALTH", "boss1")
phase = 3
orbCount = 1
breathCount = 1
self:MessageOld("stages", "cyan", "long", CL.stage:format(3), false)
self:StopBar(228300) -- Fury of the Maw
self:StopBar(CL.cast:format(self:SpellName(228300))) -- Cast: Fury of the Maw
self:StopBar(CL.adds)
self:Bar("orb_ranged", self:Mythic() and 6 or 15.5, CL.count:format(L.orb_ranged_bar, orbCount), 230267) -- Orb of Corrosion
self:Bar(228565, self:Mythic() and 10 or 19.5) -- Corrupted Breath
if not self:Mythic() then -- Taint comes instant in mythic, no need for timer.
self:Bar(228054, 24.5) -- Taint of the Sea
end
self:Bar(167910, self:Mythic() and 44 or 38, self:SpellName(L.mariner)) -- Kvaldir Longboat
elseif spellId == 228838 then -- Fetid Rot (Grimelord)
self:Bar(193367, self:Easy() and 15.8 or 12.2) -- Fetid Rot
end
end
function mod:RAID_BOSS_EMOTE(event, msg, npcname)
if msg:find(L.nearTrigger) then
self:MessageOld("tentacle_near", "orange", "long", CL.count:format(L.tentacle_near, tentacleMsgCount), 228730)
tentacleMsgCount = tentacleMsgCount + 1
elseif msg:find(L.farTrigger) then
self:MessageOld("tentacle_far", "orange", "long", CL.count:format(L.tentacle_far, tentacleMsgCount), 228730)
tentacleMsgCount = tentacleMsgCount + 1
elseif msg:find("inv_misc_monsterhorn_03", nil, true) then -- Fallback for no locale
msg = msg:gsub("|T[^|]+|t", "")
self:MessageOld(228730, "orange", "long", CL.count:format(msg:format(npcname), tentacleMsgCount), 228730)
tentacleMsgCount = tentacleMsgCount + 1
BigWigs:Print("Missing translation for tentacle strike. Please report it on Discord/Curse/GitHub.") -- XXX temp
BigWigs:Error(("TELL THE AUTHORS: %s"):format(msg))
end
end
function mod:RAID_BOSS_WHISPER(event, msg)
if msg:find("227920") then -- P1 Orb of Corruption
self:MessageOld(229119, "blue", "warning", CL.you:format(self:SpellName(229119))) -- Orb of Corruption
self:Say(229119, L.orb_say)
self:Flash(229119)
elseif msg:find("228058") then -- P2 Orb of Corrosion
self:MessageOld(230267, "blue", "warning", CL.you:format(self:SpellName(230267))) -- Orb of Corrosion
self:Say(230267, L.orb_say)
self:Flash(230267)
end
end
function mod:UNIT_HEALTH(event, unit)
local hp = UnitHealth(unit) / UnitHealthMax(unit)*100
if phase == 2 then
local tentaclesLeft = self:Mythic() and floor((hp-45)/2.5) or floor((hp-40)/2.77)
if tentaclesLeft < tentaclesUp then
tentaclesUp = tentaclesLeft
if tentaclesLeft >= 0 then
self:MessageOld("stages", "cyan", nil, CL.mob_remaining:format(self:SpellName(L.gripping_tentacle), tentaclesLeft), false)
else
self:UnregisterUnitEvent(event, unit)
end
end
else
self:UnregisterUnitEvent(event, unit)
end
end
do
local list, orbMarked, isOnMe, timer = mod:NewTargetList(), false, false, nil
local function warn(self, spellId, spellName)
if not isOnMe then
self:TargetMessageOld(spellId, list, "orange", "warning", CL.count:format(spellName, orbCount - 1)) -- gets incremented on the cast
else
list = self:NewTargetList()
end
end
function mod:OrbApplied(args)
list[#list+1] = args.destName
if #list == 1 then
orbMarked, isOnMe = false, false
timer = self:ScheduleTimer(warn, 0.4, self, args.spellId, args.spellName)
elseif #list == 3 or (#list == 2 and self:Easy()) then -- Max
self:CancelTimer(timer)
timer = nil
warn(self, args.spellId, args.spellName)
end
if self:GetOption(orbMarker) then
if self:Healer(args.destName) then
self:CustomIcon(false, args.destName, 1)
elseif self:Tank(args.destName) or (phase == 3 and orbMarked) then
self:CustomIcon(false, args.destName, 2)
else -- Damager
orbMarked = true
self:CustomIcon(false, args.destName, 3)
end
end
if self:Me(args.destGUID) then -- Warning and Say are in RAID_BOSS_WHISPER
isOnMe = true
end
end
function mod:OrbRemoved(args)
if self:GetOption(orbMarker) then
self:CustomIcon(false, args.destName)
end
end
end
function mod:OrbOfCorruption()
orbCount = orbCount + 1
local timer = self:Mythic() and 24.3 or self:Heroic() and 28 or self:Normal() and 31.5 or 32.8
if orbCount % 2 == 0 then
self:Bar("orb_melee", timer, CL.count:format(L.orb_melee_bar, orbCount), 229119) -- Orb of Corruption
else
self:Bar("orb_ranged", timer, CL.count:format(L.orb_ranged_bar, orbCount), 229119) -- Orb of Corruption
end
end
do
local prev = 0
function mod:OrbDamage(args)
local t = GetTime()
if self:Me(args.destGUID) and t-prev > 2 then
prev = t
self:MessageOld(args.spellId == 228063 and 230267 or 229119, "blue", "alarm", CL.underyou:format(args.spellName))
end
end
end
function mod:BilewaterBreath(args)
self:MessageOld(args.spellId, "red", "alarm", CL.count:format(args.spellName, breathCount))
self:CastBar(args.spellId, 3, CL.count:format(args.spellName, breathCount))
self:CastBar(227992, self:Easy() and 25.5 or 20.5) -- Bilewater Liquefaction
breathCount = breathCount + 1
self:CDBar(args.spellId, self:Mythic() and 42.5 or self:Heroic() and 52 or self:Normal() and 55.9 or 60.8, CL.count:format(args.spellName, breathCount))
end
function mod:BilewaterRedox(args)
if self:Tank(args.destName) then -- others might get hit, only tank is relevant
self:TargetMessageOld(args.spellId, args.destName, "orange", not self:Me(args.destGUID) and "alarm", nil, nil, true)
self:TargetBar(args.spellId, 30, args.destName)
end
end
do
local list, timer = mod:NewTargetList(), nil
function mod:TaintOfTheSea(args)
list[#list+1] = args.destName
if #list == 1 then
taintMarkerCount = 4
timer = self:ScheduleTimer("TargetMessageOld", 0.4, args.spellId, list, "yellow", "alert", CL.count:format(args.spellName, taintCount), nil, self:Dispeller("magic"))
taintCount = taintCount + 1
self:CDBar(args.spellId, phase == 1 and (self:LFR() and 17 or 12.1) or (self:Mythic() and 20 or 28), CL.count:format(args.spellName, taintCount))
elseif #list == 5 or (#list == 3 and not self:Mythic()) then
self:CancelTimer(timer)
timer = nil
self:TargetMessageOld(args.spellId, list, "yellow", "alert", CL.count:format(args.spellName, taintCount-1), nil, self:Dispeller("magic"))
end
if self:GetOption(taintMarker) then
self:CustomIcon(false, args.destName, taintMarkerCount)
taintMarkerCount = taintMarkerCount + 1
if taintMarkerCount > 8 then taintMarkerCount = 4 end
end
end
local prev, wasOnMe, scheduled = 0, nil, nil
local function warn(self, spellId, spellName)
self:MessageOld(spellId, "green", "warning", wasOnMe and CL.underyou:format(spellName) or CL.near:format(spellName))
wasOnMe = nil
scheduled = nil
end
function mod:TaintOfTheSeaRemoved(args)
local t = GetTime()
if self:Me(args.destGUID) then -- warn always if it got dispelled from us
prev = t
wasOnMe = true
self:Say(args.spellId, L.taint_say)
if not scheduled then
scheduled = self:ScheduleTimer(warn, 0.1, self, args.spellId, args.spellName)
end
elseif IsItemInRange(33278, args.destName) and t-prev > 2 then -- warn if dispelled in ~8yd range
prev = t
if not scheduled then
scheduled = self:ScheduleTimer(warn, 0.1, self, args.spellId, args.spellName)
end
end
if self:GetOption(taintMarker) then
self:CustomIcon(false, args.destName)
end
end
end
function mod:TentacleStrike(args)
-- Message is in RAID_BOSS_EMOTE
self:CastBar(args.spellId, 6,CL.count:format(args.spellName, tentacleCount))
tentacleCount = tentacleCount + 1
self:Bar(args.spellId, self:Mythic() and timers["Tentacle Strike"][tentacleCount] or 40, CL.count:format(self:SpellName(228730), tentacleCount))
end
do
local prev = 0
function mod:CorrossiveNova(args)
local t = GetTime()
if t-prev > 3 then
prev = t
self:MessageOld(args.spellId, "red", self:Tank() and "long")
end
end
end
do
local prev = 0
function mod:DarkWatersDamage(args)
local t = GetTime()
if self:Me(args.destGUID) and t-prev > 2 then
prev = t
self:MessageOld(args.spellId, "blue", "alarm", CL.underyou:format(args.spellName))
end
end
end
function mod:FuryOfTheMaw(args)
self:MessageOld(args.spellId, "red", "info")
self:CastBar(args.spellId, self:Mythic() and 24 or 32)
end
function mod:FuryOfTheMawRemoved(args)
self:MessageOld(args.spellId, "red", nil, CL.over:format(args.spellName))
self:Bar(args.spellId, 44.5)
end
do
local prev = 0
function mod:KvaldirLongboat(args)
local t = GetTime()
if t-prev > 1 then
prev = t
self:MessageOld(args.spellId, "cyan", "long", phase == 2 and CL.adds or args.destName) -- destName = name of the spawning add
end
if phase == 2 then
self:Bar(args.spellId, 75, CL.adds)
else
self:Bar(args.spellId, 71.5, self:SpellName(L.mariner))
end
if self:MobId(args.destGUID) == 114809 then -- Mariner
self:Bar(228633, 7) -- Give No Quarter
self:Bar(228611, 10) -- Ghostly Rage
if not self:Easy() then
self:Bar(228619, phase == 2 and 30 or 35) -- Lantern of Darkness
end
elseif self:MobId(args.destGUID) == 114709 then -- Grimelord
self:Bar(193367, 7) -- Fetid Rot
if not self:LFR() then
self:Bar(228519, 12) -- Anchor Slam
end
self:Bar(228390, self:Easy() and 17 or 14) -- Sludge Nova
end
end
end
--[[ Grimelord ]]--
function mod:SludgeNova(args)
self:MessageOld(args.spellId, "yellow", "alert", CL.casting:format(args.spellName))
self:CastBar(args.spellId, 3)
self:Bar(args.spellId, 24.3)
end
do
local proxList, isOnMe = {}, nil
function mod:FetidRot(args)
if self:Me(args.destGUID) then
isOnMe = true
self:TargetMessageOld(args.spellId, args.destName, "blue", "warning")
self:Flash(args.spellId)
self:Say(args.spellId)
local _, _, _, expires = self:UnitDebuff("player", args.spellName, 193367) -- 193367 on LFR
local t = expires - GetTime()
self:TargetBar(args.spellId, t, args.destName)
self:SayCountdown(args.spellId, t)
self:OpenProximity(args.spellId, 5)
end
proxList[#proxList+1] = args.destName
if not isOnMe then
self:OpenProximity(args.spellId, 5, proxList)
end
end
function mod:FetidRotRemoved(args)
if self:Me(args.destGUID) then
isOnMe = nil
self:StopBar(args.spellName, args.destName)
self:CloseProximity(args.spellId)
self:CancelSayCountdown(args.spellId)
end
tDeleteItem(proxList, args.destName)
if not isOnMe then -- Don't change proximity if it's on you and expired on someone else
if #proxList == 0 then
self:CloseProximity(args.spellId)
else
self:OpenProximity(args.spellId, 5, proxList)
end
end
end
end
function mod:AnchorSlam(args)
self:MessageOld(args.spellId, "orange", "alarm", CL.casting:format(args.spellName))
self:Bar(args.spellId, self:Normal() and 14.6 or 12)
end
function mod:GrimelordDeath()
if not self:LFR() then
self:StopBar(228519) -- Anchor Slam
end
self:StopBar(228390) -- Sludge Nova
self:StopBar(CL.cast:format(self:SpellName(228390))) -- Sludge Nova
self:StopBar(193367) -- Fetid Rot
end
--[[ Night Watch Mariner ]]--
function mod:LanternOfDarkness(args)
self:MessageOld(args.spellId, "red", "long")
self:CastBar(args.spellId, 7)
end
function mod:GiveNoQuarter(args)
self:MessageOld(args.spellId, "yellow", self:Ranged() and "alert")
self:Bar(args.spellId, self:Easy() and 9.3 or 6.1)
end
function mod:GhostlyRage(args)
local unit = self:GetUnitIdByGUID(args.sourceGUID)
if unit and self:Tanking(unit) then
self:MessageOld(args.spellId, "orange", "long", CL.on:format(args.spellName, args.sourceName))
end
self:Bar(args.spellId, 9.7)
end
function mod:MarinerDeath()
self:StopBar(228633) -- Give No Quarter
if not self:Easy() then
self:StopBar(228619) -- Lantern of Darkness
self:StopBar(CL.cast:format(self:SpellName(228619))) -- Lantern of Darkness
end
self:StopBar(228611) -- Ghostly Rage
end
--[[ Decaying Minion ]]--
do
local prev = 0
function mod:DecayDamage(args)
local t = GetTime()
if self:Me(args.destGUID) and t-prev > 3 then
prev = t
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
end
end
end
--[[ Helarjer Mistcaller ]]--
do
local prev = 0
function mod:MistInfusion(args)
local t = GetTime()
if t-prev > 1 then
prev = t
self:MessageOld(args.spellId, "green", self:Interrupter(args.sourceGUID) and "info")
end
end
end
--[[ Stage Three: Helheim's Last Stand ]]--
function mod:OrbOfCorrosion()
orbCount = orbCount + 1
if orbCount % 2 == 0 then
self:Bar("orb_melee", self:Mythic() and timers["Orb of Corrosion"][orbCount] or 18, CL.count:format(L.orb_melee_bar, orbCount), 230267) -- Orb of Corruption
else
self:Bar("orb_ranged", self:Mythic() and timers["Orb of Corrosion"][orbCount] or 18, CL.count:format(L.orb_ranged_bar, orbCount), 230267) -- Orb of Corruption
end
end
function mod:CorruptedBreath(args)
self:MessageOld(args.spellId, "red", "alarm", CL.count:format(args.spellName, breathCount))
self:CastBar(args.spellId, 4.5, CL.count:format(args.spellName, breathCount))
breathCount = breathCount + 1
self:Bar(args.spellId, self:Mythic() and 43 or self:Heroic() and 47 or 51, CL.count:format(args.spellName, breathCount))
end
function mod:DarkHatred(args)
if self:Tank(args.destName) then -- others might get hit, only tank is relevant
self:TargetMessageOld(args.spellId, args.destName, "orange", not self:Me(args.destGUID) and "alarm", nil, nil, true)
self:TargetBar(args.spellId, 12, args.destName)
end
end
do
local list, isOnMe = mod:NewTargetList(), nil
local function warn(self, spellId)
if not isOnMe then
if #list < 6 then -- If the pools don't get soaked, everyone gets a debuff
self:TargetMessageOld(spellId, list, "yellow", "long", nil, nil, true)
else
self:MessageOld(spellId, "yellow", "long")
end
end
isOnMe = nil
end
function mod:CorruptedAxiom(args)
list[#list+1] = args.destName
if #list == 1 then
self:ScheduleTimer(warn, 0.1, self, args.spellId)
end
if self:Me(args.destGUID) then
self:TargetMessageOld(args.spellId, args.destName, "blue", "long")
isOnMe = true
end
end
end