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.
196 lines
5.9 KiB
196 lines
5.9 KiB
|
|
--------------------------------------------------------------------------------
|
|
-- Module Declaration
|
|
--
|
|
|
|
local mod, CL = BigWigs:NewBoss("Kanrethad Ebonlocke", 1112)
|
|
if not mod then return end
|
|
mod:RegisterEnableMob(69964, 70052) -- Kanrethad Ebonlocke, Demonic Soulwell
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Localization
|
|
--
|
|
|
|
local L = mod:GetLocale()
|
|
if L then
|
|
L.name = "Kanrethad Ebonlocke"
|
|
|
|
L.summons = "Summons"
|
|
L.debuffs = "Debuffs"
|
|
|
|
L.start_say = "BEHOLD" -- BEHOLD! I have truly mastered the fel energies of this world! The demonic power I now command... It is indescribable, unlimited, OMNIPOTENT!
|
|
L.win_say = "Jubeka" -- Jubeka?! What are you...?!
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Initialization
|
|
--
|
|
|
|
function mod:GetOptions()
|
|
return {
|
|
138789, 138685, 138751, 138755,
|
|
138561, 138560, 138558,
|
|
138559, 138564, {139060, "FLASH"}, 1098, "stages"
|
|
},{
|
|
[138789] = L.summons,
|
|
[138561] = L.debuffs,
|
|
[138559] = "general",
|
|
}
|
|
end
|
|
|
|
function mod:OnRegister()
|
|
self.displayName = L.name
|
|
end
|
|
|
|
function mod:VerifyEnable(unit, mobId)
|
|
if mobId == 70052 then -- Always enable on Soulwell
|
|
return true
|
|
else
|
|
local hp = UnitHealth(unit) / UnitHealthMax(unit) * 100
|
|
if hp > 8 and UnitCanAttack("player", unit) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:OnBossEnable()
|
|
self:Log("SPELL_AURA_APPLIED", "Curse", 138558)
|
|
|
|
self:Log("SPELL_CAST_SUCCESS", "PitLord", 138789)
|
|
self:Log("SPELL_CAST_SUCCESS", "Imps", 138685)
|
|
self:Log("SPELL_CAST_SUCCESS", "Felhunters", 138751)
|
|
self:Log("SPELL_CAST_SUCCESS", "DoomLord", 138755)
|
|
self:Log("SPELL_CAST_SUCCESS", "DevourEnslavement", 139060)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "EnslaveDemon", 1098)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "Cataclysm", 138564)
|
|
self:Log("SPELL_AURA_REMOVED", "CataclysmInterrupted", 138564)
|
|
|
|
self:Log("SPELL_CAST_START", "ChaosBolt", 138559)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "Agony", 138560)
|
|
self:Log("SPELL_AURA_REMOVED", "AgonyRemoved", 138560)
|
|
|
|
self:Log("SPELL_AURA_APPLIED", "RainOfFire", 138561)
|
|
self:Log("SPELL_PERIODIC_DAMAGE", "RainOfFire", 138561)
|
|
|
|
self:RegisterEvent("CHAT_MSG_MONSTER_SAY", "WinCheck")
|
|
self:RegisterEvent("PLAYER_REGEN_ENABLED", "WipeTimer")
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Event Handlers
|
|
--
|
|
|
|
function mod:Curse(args)
|
|
self:Berserk(720, true, nil, args.spellId, args.spellName)
|
|
end
|
|
|
|
function mod:PitLord(args)
|
|
self:MessageOld(args.spellId, "yellow")
|
|
self:Bar(args.spellId, 10, "<"..args.spellName..">")
|
|
self:CDBar(138685, 66) -- Imps
|
|
self:CDBar(138559, 30) -- Chaos Bolt
|
|
end
|
|
|
|
function mod:Imps(args)
|
|
self:MessageOld(args.spellId, "yellow")
|
|
self:StopBar(args.spellId)
|
|
self:Bar(args.spellId, 10, "<"..args.spellName..">")
|
|
self:CDBar(138751, 57) -- Felhunters
|
|
end
|
|
|
|
function mod:Felhunters(args)
|
|
self:MessageOld(args.spellId, "yellow")
|
|
self:StopBar(args.spellId)
|
|
self:Bar(args.spellId, 9, "<"..args.spellName..">")
|
|
self:CDBar(138755, 59) -- Doom Lord
|
|
end
|
|
|
|
function mod:DoomLord(args)
|
|
self:MessageOld(args.spellId, "yellow")
|
|
self:StopBar(args.spellId)
|
|
self:Bar(args.spellId, 10, "<"..args.spellName..">")
|
|
self:CDBar(138685, 60) -- Imps
|
|
end
|
|
|
|
function mod:DevourEnslavement(args)
|
|
self:MessageOld(args.spellId, "orange", "warning", CL["removed"]:format(self:SpellName(1098))) -- Enslave Demon
|
|
self:Flash(args.spellId)
|
|
self:StopBar(1098)
|
|
self:CancelDelayedMessage(CL["custom_sec"]:format(CL["over"]:format(args.spellName), 60))
|
|
self:CancelDelayedMessage(CL["custom_sec"]:format(CL["over"]:format(args.spellName), 30))
|
|
self:CancelDelayedMessage(CL["custom_sec"]:format(CL["over"]:format(args.spellName), 10))
|
|
self:CancelDelayedMessage(CL["custom_sec"]:format(CL["over"]:format(args.spellName), 5))
|
|
end
|
|
|
|
function mod:EnslaveDemon(args)
|
|
if self:Me(args.sourceGUID) and self:MobId(args.destGUID) == 70075 then
|
|
self:Bar(args.spellId, 300)
|
|
self:DelayedMessage(args.spellId, 240, "cyan", CL["custom_sec"]:format(CL["over"]:format(args.spellName), 60))
|
|
self:DelayedMessage(args.spellId, 270, "cyan", CL["custom_sec"]:format(CL["over"]:format(args.spellName), 30))
|
|
self:DelayedMessage(args.spellId, 290, "cyan", CL["custom_sec"]:format(CL["over"]:format(args.spellName), 10))
|
|
self:DelayedMessage(args.spellId, 295, "cyan", CL["custom_sec"]:format(CL["over"]:format(args.spellName), 5))
|
|
end
|
|
end
|
|
|
|
do
|
|
local t = 0
|
|
function mod:Cataclysm(args)
|
|
self:MessageOld(args.spellId, "red", "warning")
|
|
self:Bar(args.spellId, 6, "<"..args.spellName..">")
|
|
self:CDBar(args.spellId, 60)
|
|
t = GetTime()
|
|
end
|
|
function mod:CataclysmInterrupted(args)
|
|
if (GetTime() - t) < 5.5 then
|
|
self:StopBar("<"..args.spellName..">")
|
|
self:MessageOld(args.spellId, "green", nil, CL["interrupted"]:format(args.spellName))
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:Agony(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "blue", "alarm", CL["you"]:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
function mod:AgonyRemoved(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "green", nil, CL["removed"]:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
function mod:RainOfFire(args)
|
|
if self:Me(args.destGUID) then
|
|
self:MessageOld(args.spellId, "blue", "alert", CL["you"]:format(args.spellName))
|
|
end
|
|
end
|
|
|
|
function mod:ChaosBolt(args)
|
|
self:MessageOld(args.spellId, "orange", "long")
|
|
self:Bar(args.spellId, 6, "<"..args.spellName..">")
|
|
self:Bar(args.spellId, 60)
|
|
end
|
|
|
|
function mod:WinCheck(_, msg)
|
|
if msg:find(L["win_say"], nil, true) then
|
|
self:Win()
|
|
elseif msg:find(L["start_say"], nil, true) then
|
|
self:Bar("stages", 15, COMBAT) -- Global "Combat" string
|
|
self:CDBar(138789, 29) -- Pit Lord
|
|
end
|
|
end
|
|
|
|
do
|
|
local function wipeCheck()
|
|
if not InCombatLockdown() and not UnitAffectingCombat("player") then
|
|
mod:Reboot()
|
|
end
|
|
end
|
|
function mod:WipeTimer()
|
|
self:ScheduleTimer(wipeCheck, 4)
|
|
end
|
|
end
|
|
|