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.

155 lines
4.6 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Raest", 1684) -- Thwarting the Twins
if not mod then return end
mod:RegisterEnableMob(116409, 116410) -- Raest Magespear, Karam Magespear
mod.otherMenu = 1716 -- Broken Shore Mage Tower
--------------------------------------------------------------------------------
-- Locals
--
local phase = 1
local handGUID = ""
----------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.name = "Raest Magespear"
L.handFromBeyond = "Hand from Beyond"
L.handFromBeyond_icon = 229022 -- Grasping Hand
L.rune = 236468
L.rune_desc = "Places a Rune of Summoning on the ground. If left unsoaked a Thing of Nightmare will spawn."
L.rune_icon = 236468
L.thing = 236470
L.thing_desc = "{236461}"
L.thing_icon = 236470
L.killed = "%s killed"
L.warmup_text = "Karam Magespear Active"
L.warmup_trigger = "You were a fool to follow me, brother. The Twisting Nether feeds my strength. I have become more powerful than you could ever imagine!"
L.warmup_trigger2 = "Kill this interloper, brother!"
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
"warmup",
202081, -- Fixate
235308, -- Purgatory
--[[ Stage 2 ]]--
"handFromBeyond",
{235578, "FLASH"}, -- Grasp from Beyond
--[[ Stage 3 ]]--
{"rune", "FLASH"},
"thing",
}, {
["warmup"] = "general",
["handFromBeyond"] = CL.stage:format(2),
["rune"] = CL.stage:format(3),
}
end
function mod:OnRegister()
self.displayName = L.name
end
function mod:OnBossEnable()
self:RegisterEvent("INSTANCE_ENCOUNTER_ENGAGE_UNIT", "CheckBossStatus")
self:RegisterEvent("CHAT_MSG_MONSTER_YELL", "Warmup")
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2", "boss3", "boss4", "boss5")
self:Log("SPELL_CAST_START", "Purgatory", 235308)
self:Log("SPELL_AURA_REMOVED", "PurgatoryRemoved", 235308)
self:Log("SPELL_CAST_START", "GraspFromBeyond", 235578)
self:Log("SPELL_INTERRUPT", "Interrupts", "*")
self:Death("HandFromBeyondDeath", 118698)
self:Death("Win", 116409)
end
function mod:OnEngage()
phase = 1
handGUID = ""
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:Warmup(_, msg)
if msg == L.warmup_trigger then
self:Bar("warmup", 45.7, L.warmup_text, 202081)
elseif msg == L.warmup_trigger2 then
self:Bar("warmup", 7.7, L.warmup_text, 202081)
end
end
function mod:UNIT_SPELLCAST_SUCCEEDED(unit, spellName, _, _, spellId)
if spellId == 202081 then -- Fixate
self:MessageOld(spellId, "red", "long", spellName .. " - " .. CL.stage:format(phase))
if phase == 2 then
self:Bar("handFromBeyond", 9, L.handFromBeyond, L.handFromBeyond_icon) -- Grasp from Beyond
end
elseif spellId == 236468 then -- Rune of Summoning
self:MessageOld("rune", "yellow", "warning", spellName, spellId)
self:Flash("rune", 236468)
self:CDBar("rune", 37, spellName, spellId)
self:Bar("thing", 11, self:SpellName(L.thing), L.thing_icon)
elseif spellId == 236470 then -- Thing of Nightmares
self:MessageOld("thing", "yellow", "alarm", spellName, spellId)
end
end
function mod:Purgatory(args)
self:MessageOld(args.spellId, "green", "info")
phase = phase + 1
self:CastBar(args.spellId, 38.3)
if phase == 3 then
self:Bar("rune", 24, self:SpellName(L.rune), L.rune_icon)
end
end
function mod:PurgatoryRemoved(args)
self:MessageOld(args.spellId, "green", "info", CL.over:format(args.spellName))
self:StopBar(CL.cast:format(args.spellName))
end
function mod:GraspFromBeyond(args)
self:MessageOld(args.spellId, "orange", "alert")
self:CastBar(args.spellId, 10)
self:Bar(args.spellId, 15)
if handGUID ~= args.sourceGUID then
handGUID = args.sourceGUID
self:Bar("handFromBeyond", 28, L.handFromBeyond, L.handFromBeyond_icon)
end
self:Flash(args.spellId)
end
function mod:Interrupts(args)
if args.extraSpellId == 235578 then -- Grasp from Beyond
self:MessageOld(235578, "blue", nil, CL.interrupted:format(args.extraSpellName))
self:StopBar(CL.cast:format(args.extraSpellName))
end
end
function mod:HandFromBeyondDeath(args)
self:MessageOld("handFromBeyond", "cyan", nil, L.killed:format(L.handFromBeyond), false)
self:StopBar(CL.cast:format(self:SpellName(235578))) -- Grasp from Beyond
self:StopBar(235578) -- Grasp from Beyond
end