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.
153 lines
4.7 KiB
153 lines
4.7 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Mephistroth", 1677, 1878)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(116944)
|
|
mod.engageId = 2039
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local phase = 1
|
|
local timeLost = 0
|
|
local upheavalWarned = {}
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale("enUS", true)
|
|
if L then
|
|
L.custom_on_time_lost = "Time lost during Shadow Fade"
|
|
L.custom_on_time_lost_desc = "Show the time lost during Shadow Fade on the bar in |cffff0000red|r."
|
|
L.custom_on_time_lost_icon = "ability_racial_timeismoney"
|
|
L.time_lost = "%s |cffff0000(+%ds)|r"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
233155, -- Carrion Swarm
|
|
{233196, "SAY", "FLASH"}, -- Demonic Upheaval
|
|
{234817, "PROXIMITY"}, -- Dark Solitude
|
|
233206, -- Shadow Fade
|
|
"custom_on_time_lost",
|
|
},{
|
|
[233155] = -14949,
|
|
[233206] = -14950,
|
|
}
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2")
|
|
self:Log("SPELL_CAST_START", "CarrionSwarm", 233155)
|
|
self:Log("SPELL_CAST_START", "DemonicUpheaval", 233196)
|
|
self:RegisterEvent("UNIT_AURA") -- Demonic Upheaval debuff tracking
|
|
self:Log("SPELL_CAST_START", "DarkSolitude", 234817)
|
|
self:Log("SPELL_AURA_APPLIED", "ShadowFade", 233206)
|
|
self:Log("SPELL_AURA_REMOVED", "ShadowFadeRemoved", 233206)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
phase = 1
|
|
timeLost = 0
|
|
upheavalWarned = {}
|
|
self:OpenProximity(234817, 8) -- Dark Solitude
|
|
|
|
self:Bar(233196, 3.5) -- Demonic Upheaval
|
|
self:Bar(234817, 7.1) -- Dark Solitude
|
|
self:Bar(233155, 18.1) -- Carrion Swarm
|
|
self:Bar(233206, 44.2) -- Shadow Fade
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
|
|
if spellId == 234283 and phase == 2 then -- Expel Shadows
|
|
self:MessageOld(233206, "yellow", "warning", 234283)
|
|
local timeLeft = 0
|
|
if timeLost == 0 or not self:GetOption("custom_on_time_lost") then
|
|
timeLeft = self:BarTimeLeft(233206) -- Shadow Fade
|
|
else
|
|
timeLeft = self:BarTimeLeft(L.time_lost:format(self:SpellName(233206), timeLost)) -- Shadow Fade
|
|
end
|
|
self:StopBar(233206) -- Shadow Fade
|
|
self:StopBar(L.time_lost:format(self:SpellName(233206), timeLost)) -- Shadow Fade (-xs)
|
|
local newTime = timeLeft + 7.5
|
|
timeLost = timeLost + 7.5
|
|
if self:GetOption("custom_on_time_lost") then
|
|
self:Bar(233206, newTime <= 30 and newTime or 30, L.time_lost:format(self:SpellName(233206), timeLost)) -- Takes 30s to go from 0-300 UNIT_POWER, max 30s bar.
|
|
else
|
|
self:Bar(233206, newTime <= 30 and newTime or 30, self:SpellName(233206))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:CarrionSwarm(args)
|
|
self:MessageOld(args.spellId, "yellow", "alarm")
|
|
if self:BarTimeLeft(233206) > 18.2 then -- Shadow Fade
|
|
self:Bar(args.spellId, 19.8)
|
|
end
|
|
end
|
|
|
|
function mod:DemonicUpheaval(args)
|
|
self:MessageOld(args.spellId, "yellow", "alert", CL.incoming:format(args.spellName))
|
|
if self:BarTimeLeft(233206) > 31.9 then -- Shadow Fade
|
|
self:Bar(args.spellId, 31.9)
|
|
end
|
|
end
|
|
|
|
do
|
|
local list, guid = mod:NewTargetList(), nil
|
|
function mod:UNIT_AURA(_, unit)
|
|
local name = self:UnitDebuff(unit, 233963) -- Demonic Upheaval Debuff Id
|
|
local n = self:UnitName(unit)
|
|
if upheavalWarned[n] and not name then
|
|
upheavalWarned[n] = nil
|
|
elseif name and not upheavalWarned[n] then
|
|
guid = self:UnitGUID(n)
|
|
list[#list+1] = n
|
|
if #list == 1 then
|
|
self:ScheduleTimer("TargetMessageOld", 1, 233196, list, "red", "warning", 233963) -- Travel time
|
|
end
|
|
if self:Me(guid) then
|
|
self:Say(233196)
|
|
self:Flash(233196)
|
|
end
|
|
upheavalWarned[n] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:DarkSolitude(args)
|
|
self:MessageOld(args.spellId, "yellow", "alarm")
|
|
if self:BarTimeLeft(233206) > 8.5 then -- Shadow Fade
|
|
self:CDBar(args.spellId, 8.5)
|
|
end
|
|
end
|
|
|
|
function mod:ShadowFade(args)
|
|
phase = 2
|
|
timeLost = 0
|
|
self:CloseProximity(234817) -- Dark Solitude
|
|
self:MessageOld(args.spellId, "green", "long")
|
|
self:Bar(args.spellId, 34)
|
|
end
|
|
|
|
function mod:ShadowFadeRemoved(args)
|
|
phase = 1
|
|
self:OpenProximity(234817, 8) -- Dark Solitude
|
|
self:MessageOld(args.spellId, "green", "long", CL.removed:format(args.spellName))
|
|
self:Bar(args.spellId, 79.3)
|
|
self:Bar(233196, 3.5) -- Demonic Upheaval
|
|
self:Bar(234817, 7.1) -- Dark Solitude
|
|
self:Bar(233155, 18.1) -- Carrion Swarm
|
|
end
|
|
|