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.
183 lines
5.4 KiB
183 lines
5.4 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Calamir", -630, 1774)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(109331)
|
|
mod.otherMenu = -619
|
|
mod.worldBoss = 109331
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local burningBombCount = 1
|
|
local arcaneDesolationCount = 1
|
|
local howlingGaleCount = 1
|
|
local arcanopulseCount = 1
|
|
local castCollector = {} -- for all UNIT casts
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
--[[ General ]]--
|
|
"stages",
|
|
--[[ Ancient Rage: Fire ]]--
|
|
{217877, "SAY", "PROXIMITY"}, -- Burning Bomb
|
|
217893, -- Wrathful Flames
|
|
--[[ Ancient Rage: Frost ]]--
|
|
217966, -- Howling Gale
|
|
217925, -- Icy Comet
|
|
--[[ Ancient Rage: Arcane ]]--
|
|
217986, -- Arcane Desolation
|
|
218012, -- Arcanopulse
|
|
},{
|
|
["stages"] = "general",
|
|
[217877] = 217563, -- Ancient Rage: Fire
|
|
[217966] = 217831, -- Ancient Rage: Frost
|
|
[217986] = 217834, -- Ancient Rage: Arcane
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
--[[ General ]] --
|
|
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
|
|
self:ScheduleTimer("CheckForEngage", 1)
|
|
self:RegisterEvent("BOSS_KILL")
|
|
|
|
--[[ Ancient Rage: Fire ]]--
|
|
self:Log("SPELL_AURA_APPLIED", "BurningBomb", 217877)
|
|
self:Log("SPELL_AURA_REMOVED", "BurningBombRemoved", 217877)
|
|
self:Log("SPELL_CAST_SUCCESS", "BurningBombSuccess", 217874)
|
|
self:Log("SPELL_CAST_SUCCESS", "WrathfulFlames", 217893)
|
|
|
|
--[[ Ancient Rage: Frost ]]--
|
|
self:Log("SPELL_CAST_SUCCESS", "HowlingGale", 217966)
|
|
self:Log("SPELL_AURA_APPLIED", "IcyCometApplied", 217925)
|
|
|
|
--[[ Ancient Rage: Arcane ]]--
|
|
self:Log("SPELL_CAST_SUCCESS", "ArcaneDesolation", 217986)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
self:CheckForWipe()
|
|
burningBombCount = 1
|
|
howlingGaleCount = 1
|
|
arcaneDesolationCount = 1
|
|
arcanopulseCount = 1
|
|
castCollector = {}
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
--[[ General ]] --
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, castGUID, spellId)
|
|
if castCollector[castGUID] then return end -- don't fire twice for the same cast
|
|
|
|
if spellId == 217563 then --[[ Ancient Rage: Fire ]]--
|
|
castCollector[castGUID] = true
|
|
self:MessageOld("stages", "cyan", "info", spellId)
|
|
self:Bar("stages", 25.6, self:SpellName(217831), 217831) -- next: Frost
|
|
burningBombCount = 1
|
|
self:CDBar(217877, 2) -- Burning Bomb
|
|
self:CDBar(217893, 8.2) -- Wrathful Flames
|
|
elseif spellId == 217831 then --[[ Ancient Rage: Frost ]]--
|
|
castCollector[castGUID] = true
|
|
self:MessageOld("stages", "cyan", "info", spellId)
|
|
self:Bar("stages", 25.6, self:SpellName(217834), 217834) -- next: Arcane
|
|
howlingGaleCount = 1
|
|
self:CDBar(217966, 2) -- Howling Gale
|
|
self:CDBar(217925, 8.5) -- Icy Comet
|
|
elseif spellId == 217834 then --[[ Ancient Rage: Arcane ]]--
|
|
castCollector[castGUID] = true
|
|
self:MessageOld("stages", "cyan", "info", spellId)
|
|
self:Bar("stages", 25.6, self:SpellName(217563), 217563) -- next: Fire
|
|
arcanopulseCount = 1
|
|
arcaneDesolationCount = 1
|
|
self:CDBar(217986, 2) -- Arcane Desolation
|
|
-- First Arcanopulse happens directly in the phase, so we start the bar after it
|
|
elseif spellId == 217919 then -- Icy Comet
|
|
castCollector[castGUID] = true
|
|
self:MessageOld(217925, "yellow", "long")
|
|
elseif spellId == 218005 then -- Arcanopulse
|
|
castCollector[castGUID] = true
|
|
self:MessageOld(218012, "yellow", "long")
|
|
if arcanopulseCount == 1 then -- first one is happening directly after Ancient Rage: Arance
|
|
self:CDBar(218012, 10.5)
|
|
end
|
|
arcanopulseCount = arcanopulseCount + 1
|
|
end
|
|
end
|
|
|
|
function mod:BOSS_KILL(_, id)
|
|
if id == 1952 then
|
|
castCollector = {}
|
|
self:Win()
|
|
end
|
|
end
|
|
|
|
--[[ Ancient Rage: Fire ]]--
|
|
do
|
|
local list = mod:NewTargetList()
|
|
function mod:BurningBomb(args)
|
|
list[#list+1] = args.destName
|
|
if #list == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 0.3, args.spellId, list, "yellow", "alert", nil, nil, self:Dispeller("magic"))
|
|
end
|
|
if self:Me(args.destGUID) then
|
|
self:OpenProximity(args.spellId, 10)
|
|
self:Say(args.spellId)
|
|
self:TargetBar(args.spellId, 8, args.destName)
|
|
end
|
|
end
|
|
|
|
function mod:BurningBombRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "blue", nil, CL.removed:format(args.spellName))
|
|
self:CloseProximity(args.spellId)
|
|
self:StopBar(args.spellId, args.destName)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:BurningBombSuccess()
|
|
if burningBombCount == 1 then
|
|
self:CDBar(217877, 13.4)
|
|
end
|
|
burningBombCount = burningBombCount + 1
|
|
end
|
|
|
|
function mod:WrathfulFlames(args)
|
|
self:MessageOld(args.spellId, "red", "alarm")
|
|
end
|
|
|
|
--[[ Ancient Rage: Frost ]]--
|
|
function mod:HowlingGale(args)
|
|
self:MessageOld(args.spellId, "red", "warning")
|
|
if howlingGaleCount == 1 then
|
|
self:CDBar(args.spellId, 12.5)
|
|
end
|
|
howlingGaleCount = howlingGaleCount + 1
|
|
end
|
|
|
|
function mod:IcyCometApplied(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "blue", "alarm", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
--[[ Ancient Rage: Arcane ]]--
|
|
function mod:ArcaneDesolation(args)
|
|
self:MessageOld(args.spellId, "red", "alert")
|
|
if arcaneDesolationCount == 1 then
|
|
self:CDBar(args.spellId, 12)
|
|
end
|
|
arcaneDesolationCount = arcaneDesolationCount + 1
|
|
end
|
|
|