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.
187 lines
5.3 KiB
187 lines
5.3 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Viceroy Nezhar", 1753, 1981)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(122056) -- Viceroy Nezhar
|
|
mod.engageId = 2067
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local tentaclesUp = 0
|
|
local guardsUp = 0
|
|
local eternalTwilightExplo = 0
|
|
local nextDarkBulwark = 0
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.tentacles = "Tentacles"
|
|
L.guards = "Guards"
|
|
L.interrupted = "%s interrupted %s (%.1fs left)!"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
"infobox",
|
|
-15926, -- Umbral Tentacles
|
|
244751, -- Howling Dark
|
|
246324, -- Entropic Force
|
|
244906, -- Collapsing Void
|
|
248804, -- Dark Bulwark
|
|
248736, -- Eternal Twilight
|
|
}, {
|
|
["infobox"] = "general",
|
|
[248804] = "mythic",
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1")
|
|
self:Log("SPELL_CAST_SUCCESS", "TentacleSpawn", 249082)
|
|
self:Death("TentacleDeath", 122827)
|
|
self:Log("SPELL_CAST_START", "HowlingDark", 244751)
|
|
self:Log("SPELL_CAST_START", "EntropicForce", 246324)
|
|
self:Log("SPELL_AURA_REMOVED", "EntropicForceRemoved", 246324)
|
|
self:Log("SPELL_AURA_APPLIED", "DarkBulwark", 248804)
|
|
self:Log("SPELL_AURA_REMOVED", "DarkBulwarkRemoved", 248804)
|
|
self:Log("SPELL_CAST_START", "EternalTwilight", 248736)
|
|
self:Log("SPELL_INTERRUPT", "Interrupt", "*")
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "GroundEffectDamage", 244906) -- Collapsing Void
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "GroundEffectDamage", 244906)
|
|
self:Log("SPELL_PERIODIC_MISSED", "GroundEffectDamage", 244906)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
tentaclesUp = 0
|
|
guardsUp = 0
|
|
eternalTwilightExplo = 0
|
|
self:Bar(-15926, 12, L.tentacles) -- Tentacles
|
|
self:Bar(244751, 16) -- Howling Dark
|
|
self:Bar(246324, 32) -- Entropic Force
|
|
if self:Mythic() then
|
|
self:Bar(248804, 53.5, L.guards) -- Guards
|
|
nextDarkBulwark = GetTime() + 53.5
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
|
|
if spellId == 249336 then -- Summon Ethereal Guards
|
|
self:MessageOld(248804, "yellow", "info", CL.spawned:format(L.guards))
|
|
end
|
|
end
|
|
|
|
function mod:UpdateInfoBox()
|
|
if tentaclesUp > 0 or guardsUp > 0 then
|
|
self:OpenInfo("infobox", self.displayName)
|
|
if tentaclesUp > 0 then
|
|
self:SetInfo("infobox", 1, L.tentacles)
|
|
self:SetInfo("infobox", 2, tentaclesUp)
|
|
end
|
|
if guardsUp > 0 then
|
|
self:SetInfo("infobox", tentaclesUp > 0 and 3 or 1, L.guards)
|
|
self:SetInfo("infobox", tentaclesUp > 0 and 4 or 2, guardsUp)
|
|
end
|
|
else
|
|
self:CloseInfo("infobox")
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:TentacleSpawn()
|
|
tentaclesUp = tentaclesUp + 1
|
|
local t = GetTime()
|
|
if t-prev > 3 then
|
|
prev = t
|
|
self:MessageOld(-15926, "yellow", "info", CL.spawned:format(L.tentacles))
|
|
if not self:Mythic() or nextDarkBulwark - GetTime() > 30.5 then
|
|
self:CDBar(-15926, 30.5, L.tentacles)
|
|
end
|
|
end
|
|
self:UpdateInfoBox()
|
|
end
|
|
end
|
|
|
|
function mod:TentacleDeath()
|
|
tentaclesUp = tentaclesUp - 1
|
|
self:UpdateInfoBox()
|
|
end
|
|
|
|
function mod:HowlingDark(args)
|
|
self:MessageOld(args.spellId, "orange", "alarm")
|
|
if not self:Mythic() or nextDarkBulwark - GetTime() > 31.6 then
|
|
self:CDBar(args.spellId, 31.6)
|
|
end
|
|
end
|
|
|
|
function mod:EntropicForce(args)
|
|
self:MessageOld(args.spellId, "red", "long")
|
|
self:Bar(args.spellId, 62)
|
|
self:CastBar(args.spellId, 10)
|
|
end
|
|
|
|
function mod:EntropicForceRemoved(args)
|
|
self:StopBar(CL.cast:format(args.spellId))
|
|
self:MessageOld(args.spellId, "green", nil, CL.over:format(args.spellName))
|
|
end
|
|
|
|
function mod:DarkBulwark()
|
|
guardsUp = guardsUp + 1
|
|
self:UpdateInfoBox()
|
|
end
|
|
|
|
function mod:DarkBulwarkRemoved(args)
|
|
guardsUp = guardsUp - 1
|
|
if guardsUp > 0 then
|
|
self:MessageOld(args.spellId, "cyan", nil, CL.mob_remaining:format(args.sourceName, guardsUp))
|
|
else
|
|
self:MessageOld(args.spellId, "cyan", "info", CL.removed:format(args.spellName))
|
|
end
|
|
self:UpdateInfoBox()
|
|
end
|
|
|
|
function mod:EternalTwilight(args)
|
|
self:MessageOld(args.spellId, "cyan", nil, CL.casting:format(args.spellName))
|
|
self:CastBar(args.spellId, 10)
|
|
eternalTwilightExplo = GetTime() + 10
|
|
self:CDBar(248804, 57, L.guards) -- Guards
|
|
nextDarkBulwark = GetTime() + 57
|
|
end
|
|
|
|
function mod:Interrupt(args)
|
|
if args.extraSpellId == 248736 then -- Eternal Twilight
|
|
self:StopBar(CL.cast:format(args.extraSpellName))
|
|
self:MessageOld(248736, "green", "long", L.interrupted:format(self:ColorName(args.sourceName), args.extraSpellName, eternalTwilightExplo-GetTime()))
|
|
self:CDBar(-15926, 11, L.tentacles) -- Tentacles
|
|
self:CDBar(244751, 16) -- Howling Dark
|
|
end
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:GroundEffectDamage(args)
|
|
if self:Me(args.destGUID) then
|
|
local t = GetTime()
|
|
if t-prev > 1.5 then
|
|
prev = t
|
|
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|