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.
220 lines
6.9 KiB
220 lines
6.9 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Nightbane", 1651)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(114895)
|
|
mod.engageId = 2031
|
|
--mod.respawnTime = 0
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Locals
|
|
--
|
|
|
|
local igniteSoulOnMe = nil
|
|
local shardCount = 1
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.name = "Nightbane"
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
function mod:GetOptions()
|
|
return {
|
|
"stages",
|
|
{228790, "TANK_HEALER"}, -- Concentrated Power
|
|
{228792, "HEALER"}, -- Infernal Power
|
|
228785, -- Cinder Breath
|
|
228808, -- Charred Earth
|
|
229307, -- Reverberating Shadows
|
|
228829, -- Burning Bones
|
|
{228796, "SAY", "SAY_COUNTDOWN", "FLASH"}, -- Ignite Soul
|
|
228834, -- Jagged Shards
|
|
228835, -- Absorb Vitality
|
|
228837, -- Bellowing Roar
|
|
},{
|
|
["stages"] = "general",
|
|
[228834] = CL.stage:format(2),
|
|
[228837] = CL.stage:format(3),
|
|
}
|
|
end
|
|
|
|
function mod:OnRegister()
|
|
self.displayName = L.name
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1")
|
|
self:Death("BonecurseDeath", 114903)
|
|
self:Log("SPELL_CAST_START", "Stage2", 228839) -- Rain of Bones
|
|
self:Log("SPELL_CAST_START", "CinderBreath", 228785)
|
|
self:Log("SPELL_CAST_START", "ReverberatingShadows", 229307)
|
|
self:Log("SPELL_AURA_APPLIED", "BurningBones", 228829)
|
|
self:Log("SPELL_AURA_APPLIED", "InfernalPower", 228792)
|
|
self:Log("SPELL_AURA_REMOVED", "InfernalPowerRemoved", 228792)
|
|
self:Log("SPELL_AURA_APPLIED", "IgniteSoul", 228796)
|
|
self:Log("SPELL_AURA_REMOVED", "IgniteSoulRemoved", 228796)
|
|
self:Log("SPELL_AURA_APPLIED", "ConcentratedPower", 228790)
|
|
self:Log("SPELL_AURA_REMOVED", "ConcentratedPowerRemoved", 228790)
|
|
self:Log("SPELL_CAST_SUCCESS", "JaggedShards", 228834)
|
|
self:Log("SPELL_AURA_APPLIED", "AbsorbVitality", 228835)
|
|
self:Log("SPELL_AURA_REMOVED", "AbsorbVitalityRemoved", 228835)
|
|
self:Log("SPELL_CAST_START", "BellowingRoar", 228837)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "CharredEarthDamage", 228808)
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "CharredEarthDamage", 228808)
|
|
self:Log("SPELL_PERIODIC_MISSED", "CharredEarthDamage", 228808)
|
|
end
|
|
|
|
function mod:OnEngage()
|
|
igniteSoulOnMe = nil
|
|
shardCount = 1
|
|
|
|
self:Bar(228785, 8) -- Cinder Breath
|
|
self:Bar(228808, 15.5) -- Charred Earth
|
|
self:Bar(229307, 16.5) -- Reverberating Shadows
|
|
self:Bar(228792, 20) -- Infernal Power
|
|
self:Bar(228796, 20) -- Ignite Soul
|
|
self:Bar(228790, 40) -- Concentrated Power
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
|
|
if spellId == 228806 then -- Charred Earth
|
|
self:MessageOld(228808, "orange", self:Ranged() and "alert")
|
|
self:CDBar(228808, 20)
|
|
elseif spellId == 228789 then -- Flowing Power (Stage 3)
|
|
self:Bar(228785, 8.5) -- Cinder Breath
|
|
self:Bar(228837, 15.5) -- Bellowing Roar
|
|
self:Bar(228829, 19.5) -- Burning Bones
|
|
self:Bar(228790, 20) -- Concentrated Power
|
|
self:Bar(228796, 20.5) -- Ignite Soul
|
|
self:Bar(228808, 22) -- Charred Earth
|
|
self:Bar(229307, 25.5) -- Reverberating Shadows
|
|
self:Bar(228792, 40) -- Infernal Power
|
|
end
|
|
end
|
|
|
|
function mod:BonecurseDeath()
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(3), false)
|
|
self:StopBar(CL.count:format(self:SpellName(228834), shardCount)) -- Jagged Shards
|
|
self:StopBar(228835) -- Absorb Vitality
|
|
end
|
|
|
|
function mod:Stage2(args)
|
|
self:MessageOld("stages", "cyan", "long", CL.stage:format(2), false)
|
|
self:StopBar(228785) -- Cinder Breath
|
|
self:StopBar(228808) -- Charred Earth
|
|
self:StopBar(228829) -- Burning Bones
|
|
self:StopBar(229307) -- Reverberating Shadows
|
|
self:StopBar(228792) -- Infernal Power
|
|
self:StopBar(CL.onboss:format(self:SpellName(228792))) -- Infernal Power
|
|
self:StopBar(228796) -- Ignite Soul
|
|
self:StopBar(228790) -- Concentrated Power
|
|
self:StopBar(CL.onboss:format(self:SpellName(228790))) -- Concentrated Power
|
|
|
|
self:Bar("stages", 3, CL.add, args.spellId)
|
|
self:Bar(228834, 12, CL.count:format(self:SpellName(228834), shardCount)) -- Jagged Shards
|
|
end
|
|
|
|
function mod:CinderBreath(args)
|
|
self:MessageOld(args.spellId, "red", self:Tank() and "alert")
|
|
self:CDBar(args.spellId, 22.5)
|
|
end
|
|
|
|
function mod:ReverberatingShadows(args)
|
|
self:MessageOld(args.spellId, "yellow", self:Interrupter() and "alarm", CL.casting:format(args.spellName))
|
|
self:CDBar(args.spellId, 11)
|
|
end
|
|
|
|
function mod:BurningBones(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "orange", "info")
|
|
self:CDBar(args.spellId, 18)
|
|
end
|
|
|
|
function mod:InfernalPower(args)
|
|
self:MessageOld(args.spellId, "red", "info")
|
|
self:Bar(args.spellId, 10, CL.onboss:format(args.spellName))
|
|
end
|
|
|
|
function mod:InfernalPowerRemoved(args)
|
|
self:MessageOld(args.spellId, "green", nil, CL.over:format(args.spellName))
|
|
self:Bar(args.spellId, 30)
|
|
end
|
|
|
|
function mod:IgniteSoul(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "red", "warning")
|
|
self:TargetBar(args.spellId, 9, args.destName)
|
|
if self:Me(args.destGUID) then
|
|
igniteSoulOnMe = true
|
|
self:Say(args.spellId)
|
|
self:Flash(args.spellId)
|
|
self:SayCountdown(args.spellId, 9)
|
|
end
|
|
self:Bar(args.spellId, 25.5)
|
|
end
|
|
|
|
function mod:IgniteSoulRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
igniteSoulOnMe = nil
|
|
self:CancelSayCountdown(args.spellId)
|
|
end
|
|
self:StopBar(args.spellName, args.destName)
|
|
end
|
|
|
|
function mod:ConcentratedPower(args)
|
|
self:MessageOld(args.spellId, "red", "info")
|
|
self:Bar(args.spellId, 10, CL.onboss:format(args.spellName))
|
|
end
|
|
|
|
function mod:ConcentratedPowerRemoved(args)
|
|
self:MessageOld(args.spellId, "green", nil, CL.over:format(args.spellName))
|
|
self:Bar(args.spellId, 30)
|
|
end
|
|
|
|
function mod:JaggedShards(args)
|
|
self:MessageOld(args.spellId, "red", nil, CL.count:format(args.spellName, shardCount))
|
|
shardCount = shardCount + 1
|
|
self:CDBar(args.spellId, 8, CL.count:format(args.spellName, shardCount))
|
|
end
|
|
|
|
function mod:AbsorbVitality(args)
|
|
self:TargetMessageOld(args.spellId, args.destName, "orange", "alarm", nil, nil, self:Healer())
|
|
self:TargetBar(args.spellId, 18, args.destName)
|
|
self:Bar(args.spellId, 20)
|
|
end
|
|
|
|
function mod:AbsorbVitalityRemoved(args)
|
|
self:StopBar(args.spellName, args.destName)
|
|
end
|
|
|
|
function mod:BellowingRoar(args)
|
|
self:MessageOld(args.spellId, "yellow", "warning")
|
|
self:Bar(args.spellId, 3, CL.cast:format(args.spellName))
|
|
self:CDBar(args.spellId, 45)
|
|
end
|
|
|
|
do
|
|
local prev = 0
|
|
function mod:CharredEarthDamage(args)
|
|
if self:Me(args.destGUID) then
|
|
local t = GetTime()
|
|
if t-prev > 2 then
|
|
prev = t
|
|
self:MessageOld(args.spellId, "blue", not igniteSoulOnMe and "alarm", CL.underyou:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|