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.

157 lines
4.6 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Overseer Korgus", 1771, 2096)
if not mod then return end
mod:RegisterEnableMob(127503)
mod.engageId = 2104
--------------------------------------------------------------------------------
-- Locals
--
local crossIgnitionCount = 0 -- XXX If we track which Azerite Rounds are used we can better timers if a player disconnects
local explosiveBurstCount = 0
local deadeyes = {}
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
256198, -- Azerite Rounds: Incendiary
256199, -- Azerite Rounds: Blast
256083, -- Cross Ignition
{256105, "SAY", "SAY_COUNTDOWN", "PROXIMITY"}, -- Explosive Burst
{256038, "INFOBOX"}, -- Deadeye
263345, -- Massive Blast
}
end
function mod:OnBossEnable()
self:Log("SPELL_CAST_START", "AzeriteRoundsIncendiary", 256198)
self:Log("SPELL_CAST_START", "AzeriteRoundsBlast", 256199)
self:Log("SPELL_CAST_START", "CrossIgnition", 256083)
self:Log("SPELL_CAST_SUCCESS", "ExplosiveBurst", 256101)
self:Log("SPELL_AURA_APPLIED", "ExplosiveBurstApplied", 256105)
self:Log("SPELL_AURA_REMOVED", "ExplosiveBurstRemoved", 256105)
self:Log("SPELL_CAST_SUCCESS", "Deadeye", 256038)
self:Log("SPELL_AURA_APPLIED", "DeadeyeApplied", 256044)
self:Log("SPELL_AURA_APPLIED_DOSE", "DeadeyeApplied", 256044)
self:Log("SPELL_AURA_REMOVED", "DeadeyeRemoved", 256044)
self:Log("SPELL_CAST_START", "MassiveBlast", 263345)
end
function mod:OnEngage()
crossIgnitionCount = 1
explosiveBurstCount = 1
deadeyes = {}
self:CDBar(256198, 6) -- Azerite Rounds: Incendiary
self:CDBar(256105, 13) -- Explosive Burst
self:CDBar(256083, 18) -- Cross Ignition
self:CDBar(256038, 28) -- Deadeye
self:OpenInfo(256038, self:SpellName(256038)) -- Deadeye
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:AzeriteRoundsIncendiary(args)
self:Message(args.spellId, "cyan")
self:PlaySound(args.spellId, "info")
self:CDBar(256199, 27.5) -- Azerite Rounds: Blast
end
function mod:AzeriteRoundsBlast(args)
self:Message(args.spellId, "cyan")
self:PlaySound(args.spellId, "info")
self:Bar(256198, 27.5) -- Azerite Rounds: Incendiary
end
function mod:CrossIgnition(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
crossIgnitionCount = crossIgnitionCount + 1
self:Bar(args.spellId, crossIgnitionCount % 2 == 0 and 21 or 34)
self:CastBar(args.spellId, 5.5)
end
function mod:ExplosiveBurst()
explosiveBurstCount = explosiveBurstCount + 1
self:Bar(256105, explosiveBurstCount % 2 == 0 and 38 or 17)
end
do
local playerList, isOnMe = {}, nil
local function warn(self)
if isOnMe then
self:PersonalMessage(256105)
self:PlaySound(256105, "warning", "moveout")
self:OpenProximity(256105, 5)
else
self:Message(256105, "orange")
self:PlaySound(256105, "alarm")
self:OpenProximity(256105, 5, playerList)
end
playerList = {}
isOnMe = nil
end
function mod:ExplosiveBurstApplied(args)
playerList[#playerList + 1] = args.destName
if self:Me(args.destGUID) then
isOnMe = true
self:Say(args.spellId)
self:SayCountdown(args.spellId, 4)
end
if #playerList == 1 then
self:ScheduleTimer(warn, 0.1, self)
end
end
end
function mod:ExplosiveBurstRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
self:CloseProximity(args.spellId)
end
function mod:Deadeye(args)
local deadeyeInfo = deadeyes[args.destName] -- [1] is stacks
if deadeyeInfo then
self:StackMessage(args.spellId, args.destName, deadeyeInfo[1]+1, "red")
self:PlaySound(args.spellId, "warning", nil, args.destName)
else
self:TargetMessage(args.spellId, "orange", args.destName)
self:PlaySound(args.spellId, "info", nil, args.destName)
end
self:Bar(args.spellId, 27.5)
self:CastBar(args.spellId, 5)
end
function mod:DeadeyeApplied(args)
deadeyes[args.destName] = {args.amount or 1, GetTime()+80, 80}
self:SetInfoBarsByTable(256038, deadeyes)
end
function mod:DeadeyeRemoved(args)
deadeyes[args.destName] = nil
self:SetInfoBarsByTable(256038, deadeyes)
if self:Me(args.destGUID) then
self:Message(256038, "green", CL.removed:format(args.spellName))
end
end
function mod:MassiveBlast(args)
self:Message(args.spellId, "yellow")
self:PlaySound(args.spellId, "alert")
self:Bar(args.spellId, 27.5)
self:CastBar(args.spellId, 4)
end