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
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
|
|
|