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.
151 lines
4.3 KiB
151 lines
4.3 KiB
|
4 years ago
|
--------------------------------------------------------------------------------
|
||
|
|
-- TODO:
|
||
|
|
-- - Mythic Abilties
|
||
|
|
-- - Improve timers
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Module Declaration
|
||
|
|
--
|
||
|
|
|
||
|
|
local mod, CL = BigWigs:NewBoss("Oryphrion", 2285, 2414)
|
||
|
|
if not mod then return end
|
||
|
|
mod:RegisterEnableMob(162060) -- Oryphrion
|
||
|
|
mod.engageId = 2358
|
||
|
|
mod.respawnTime = 30
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Locals
|
||
|
|
--
|
||
|
|
|
||
|
|
local prevEnergy = 100
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Localization
|
||
|
|
--
|
||
|
|
|
||
|
|
local L = mod:GetLocale()
|
||
|
|
if L then
|
||
|
|
L.early_intermission_over = "Intermission Over (%d |4orb:orbs; reached)"
|
||
|
|
end
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Initialization
|
||
|
|
--
|
||
|
|
|
||
|
|
function mod:GetOptions()
|
||
|
|
return {
|
||
|
|
"stages",
|
||
|
|
324046, -- Recharge Anima
|
||
|
|
324427, -- Empyreal Ordnance
|
||
|
|
{334053, "SAY"}, -- Purifying Blast
|
||
|
|
324608, -- Charged Stomp
|
||
|
|
}
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnBossEnable()
|
||
|
|
self:Log("SPELL_AURA_APPLIED", "DrainedApplied", 323878)
|
||
|
|
self:Log("SPELL_AURA_REMOVED", "DrainedApplied", 323878)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "OverchargeAnima", 324307) -- an orb reached the boss during the intermission
|
||
|
|
self:Log("SPELL_AURA_APPLIED", "RechargeAnima", 324046)
|
||
|
|
self:Log("SPELL_CAST_START", "EmpyrealOrdnance", 324427)
|
||
|
|
self:Log("SPELL_CAST_START", "PurifyingBlast", 334053)
|
||
|
|
self:Log("SPELL_CAST_START", "ChargedStomp", 324608)
|
||
|
|
|
||
|
|
self:RegisterUnitEvent("UNIT_POWER_FREQUENT", nil, "boss1")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnEngage()
|
||
|
|
prevEnergy = 100
|
||
|
|
|
||
|
|
self:Bar(334053, 8.5) -- Purifying Blast
|
||
|
|
self:Bar(324427, 17) -- Empyreal Ordnance
|
||
|
|
end
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Event Handlers
|
||
|
|
--
|
||
|
|
|
||
|
|
do
|
||
|
|
local orbsReached, intermissionEnds = 0, 0
|
||
|
|
function mod:DrainedApplied(args)
|
||
|
|
orbsReached = 0
|
||
|
|
intermissionEnds = args.time + 23.2
|
||
|
|
|
||
|
|
self:Message("stages", "green", CL.intermission, false)
|
||
|
|
self:PlaySound("stages", "long")
|
||
|
|
|
||
|
|
self:Bar("stages", 23.2, CL.over:format(CL.intermission), args.spellId)
|
||
|
|
self:StopBar(324427) -- Empyreal Ordnance
|
||
|
|
self:StopBar(334053) -- Purifying Blast
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:DrainedRemoved()
|
||
|
|
if orbsReached > 0 then
|
||
|
|
self:Message("stages", "orange", L.early_intermission_over:format(orbsReached), false)
|
||
|
|
else
|
||
|
|
self:Message("stages", "orange", CL.over:format(CL.intermission), false)
|
||
|
|
end
|
||
|
|
self:PlaySound("stages", "long")
|
||
|
|
|
||
|
|
self:StopBar(CL.over:format(CL.intermission))
|
||
|
|
self:Bar(334053, 9) -- Purifying Blast
|
||
|
|
self:Bar(324427, 17.1) -- Empyreal Ordnance
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OverchargeAnima(args)
|
||
|
|
orbsReached = orbsReached + 1
|
||
|
|
intermissionEnds = intermissionEnds - 1
|
||
|
|
|
||
|
|
local timeLeft = intermissionEnds - args.time
|
||
|
|
if timeLeft > 0 then
|
||
|
|
self:Bar("stages", timeLeft, CL.over:format(CL.intermission), 323878) -- Drained
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:RechargeAnima(args)
|
||
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:EmpyrealOrdnance(args)
|
||
|
|
self:Message(args.spellId, "red")
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
self:CDBar(args.spellId, 26)
|
||
|
|
end
|
||
|
|
|
||
|
|
do
|
||
|
|
local function printTarget(self, name, guid)
|
||
|
|
if self:Me(guid) then
|
||
|
|
self:Say(334053)
|
||
|
|
self:PlaySound(334053, "warning")
|
||
|
|
end
|
||
|
|
self:TargetMessage(334053, "red", name)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:PurifyingBlast(args)
|
||
|
|
self:GetBossTarget(printTarget, 0.4, args.sourceGUID)
|
||
|
|
self:CDBar(args.spellId, 13)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:ChargedStomp(args)
|
||
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:UNIT_POWER_FREQUENT(_, unit, powerType)
|
||
|
|
if powerType ~= "ENERGY" then return end
|
||
|
|
|
||
|
|
local current = UnitPower(unit, 3) -- ENERGY = 3
|
||
|
|
if current < prevEnergy and current == 10 then
|
||
|
|
self:Message("stages", "cyan", CL.soon:format(self:SpellName(323878)), false) -- Drained Soon
|
||
|
|
self:PlaySound("stages", "info")
|
||
|
|
elseif current > prevEnergy and current == 80 then
|
||
|
|
self:Message("stages", "cyan", CL.soon:format(self:SpellName(232880)), false) -- Fully Charged Soon
|
||
|
|
self:PlaySound("stages", "info")
|
||
|
|
end
|
||
|
|
|
||
|
|
prevEnergy = current
|
||
|
|
end
|