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.
165 lines
5.0 KiB
165 lines
5.0 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- TODO List:
|
|
-- - We shouldn't start timers which would end in Submerged Phase
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Helya", 1492, 1663)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(96759)
|
|
mod.engageId = 1824
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.destructor_tentacle = -12364
|
|
L.destructor_tentacle_desc = -12366
|
|
L.destructor_tentacle_icon = "inv_misc_monsterhorn_03"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local firstTorrent = nil
|
|
local afterCorrupted = nil
|
|
local tentacleDeaths = 0
|
|
local seen = {}
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
{197262, "SAY"}, -- Taint of the Sea
|
|
202088, -- Brackwater Barrage
|
|
"destructor_tentacle", -- Destructor Tentacle
|
|
185539, -- Rapid Rupture
|
|
"stages",
|
|
196947, -- Submerged
|
|
198495, -- Torrent
|
|
227233, -- Corrupted Below
|
|
}, {
|
|
[197262] = -12358, -- Phase 1
|
|
[196947] = -12367, -- Phase 2
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_AURA_APPLIED", "TaintOfTheSea", 197262)
|
|
self:Log("SPELL_AURA_APPLIED", "RapidRupture", 185539)
|
|
self:Log("SPELL_AURA_APPLIED", "Submerged", 196947)
|
|
self:Log("SPELL_AURA_REMOVED", "SubmergedRemoved", 196947)
|
|
self:Log("SPELL_CAST_START", "Torrent", 198495)
|
|
self:Log("SPELL_CAST_START", "CorruptedBellow", 227233)
|
|
self:Log("SPELL_CAST_START", "BrackwaterBarrage", 202088)
|
|
|
|
self:RegisterEvent("CHAT_MSG_RAID_BOSS_EMOTE")
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
firstTorrent = nil
|
|
afterCorrupted = nil
|
|
tentacleDeaths = 0
|
|
|
|
self:CDBar("destructor_tentacle", 26, L.destructor_tentacle, L.destructor_tentacle_icon)
|
|
if not self:Normal() then
|
|
self:CDBar(202088, 15.6) -- Brackwater Barrage
|
|
end
|
|
|
|
-- check on IEEU for changes since IEEU fires before tentacle death events, so they don't have a boss token anymore :\
|
|
seen = {}
|
|
self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT", "CheckTentacles")
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
do
|
|
function mod:CheckTentacles()
|
|
local bosses = {}
|
|
for i = 1, 5 do
|
|
local guid = self:UnitGUID(("boss%d"):format(i))
|
|
if guid then
|
|
bosses[guid] = true
|
|
end
|
|
end
|
|
for guid in next, seen do
|
|
if not bosses[guid] and self:MobId(guid) ~= 96759 then
|
|
tentacleDeaths = tentacleDeaths + 1
|
|
if tentacleDeaths < 7 then
|
|
self:MessageOld("stages", "cyan", "info", CL.mob_remaining:format(self:SpellName(201178), 6 - tentacleDeaths), false) -- 201178 = Tentacle
|
|
end
|
|
end
|
|
seen[guid] = nil
|
|
end
|
|
seen = bosses
|
|
end
|
|
end
|
|
|
|
function mod:CHAT_MSG_RAID_BOSS_EMOTE(_, msg) -- Destructor Tentacle
|
|
if msg:find("inv_misc_monsterhorn_03", nil, true) then -- |TInterface\\Icons\\inv_misc_monsterhorn_03.blp:20|t A %s emerges!#Destructor Tentacle###Destructor Tentacle
|
|
self:MessageOld("destructor_tentacle", "yellow", self:Tank() and "warning", CL.spawned:format(self:SpellName(L.destructor_tentacle)), L.destructor_tentacle_icon)
|
|
self:CDBar("destructor_tentacle", 26, L.destructor_tentacle, L.destructor_tentacle_icon) -- 25-27, but can be delayed upto 10s by Piercing Tentacle (I think)
|
|
end
|
|
end
|
|
|
|
function mod:TaintOfTheSea(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "yellow", "alert", nil, nil, self:Dispeller("magic"))
|
|
if self:Me(args.destGUID) then
|
|
self:Say(args.spellId)
|
|
end
|
|
end
|
|
|
|
function mod:RapidRupture(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "blue", "warning", CL.you:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
function mod:Submerged(args)
|
|
self:StopBar(L.destructor_tentacle) -- Destructor Tentacle
|
|
self:StopBar(198495) -- Torrent
|
|
self:StopBar(227233) -- Corrupted Bellow
|
|
self:UnregisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT")
|
|
|
|
self:MessageOld(args.spellId, "cyan", "info")
|
|
self:Bar(args.spellId, 15)
|
|
firstTorrent = true
|
|
end
|
|
|
|
function mod:SubmergedRemoved(args)
|
|
self:MessageOld(args.spellId, "cyan", "info", CL.over:format(args.spellName))
|
|
self:CDBar(198495, 10) -- Torrent
|
|
end
|
|
|
|
function mod:Torrent(args)
|
|
self:CDBar(args.spellId, not afterCorrupted and 11 or 13.5)
|
|
|
|
if firstTorrent then
|
|
self:CDBar(196947, 59, nil, "spell_nature_wispsplode") -- Submerged / Intermission phase
|
|
end
|
|
|
|
firstTorrent = nil
|
|
afterCorrupted = nil
|
|
self:MessageOld(args.spellId, "red", "warning", CL.casting:format(args.spellName))
|
|
end
|
|
|
|
function mod:CorruptedBellow(args)
|
|
self:MessageOld(args.spellId, "orange", "alarm")
|
|
self:Bar(args.spellId, 22)
|
|
afterCorrupted = true
|
|
end
|
|
|
|
function mod:BrackwaterBarrage(args)
|
|
self:MessageOld(args.spellId, "orange", "alarm")
|
|
self:CDBar(args.spellId, 22.2)
|
|
end
|
|
|