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.

267 lines
7.9 KiB

--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Felhounds of Sargeras", 1712, 1987)
if not mod then return end
mod:RegisterEnableMob(122477, 122135) -- F'harg, Shatug
mod.engageId = 2074
mod.respawnTime = 29
--------------------------------------------------------------------------------
-- Locals
--
local moltenTouchCount = 0
local enflameCorruptionCount = 0
local siphonCorruptionCount = 0
local weightofDarknessCount = 0
local consumingSphereCount = 0
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
--[[ F'harg ]]--
251445, -- Burning Maw
244072, -- Molten Touch
{244768, "SAY", "SAY_COUNTDOWN"}, -- Desolate Gaze
244057, -- Enflame Corruption
{248815, "SAY", "SAY_COUNTDOWN"}, -- Enflamed
--[[ Shatug ]]--
245098, -- Corrupting Maw
244131, -- Consuming Sphere
{254429, "SAY", "SAY_COUNTDOWN", "FLASH"}, -- Weight of Darkness
244056, -- Siphon Corruption
{248819, "SAY", "SAY_COUNTDOWN"}, -- Siphoned
--[[ General ]]--
244050, -- Destroyer's Boon
251356, -- Focusing Power
--[[ Mythic ]]--
244054, -- Flametouched
244055, -- Shadowtouched
245022, -- Burning Remnant
},{
[251445] = -15842, -- F'harg
[245098] = -15836, -- Shatug
[244050] = "general",
[244054] = "mythic",
}
end
function mod:OnBossEnable()
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2")
--[[ F'harg ]]--
self:Log("SPELL_CAST_SUCCESS", "BurningMaw", 251445)
self:Log("SPELL_CAST_SUCCESS", "MoltenTouch", 244072)
self:Log("SPELL_AURA_APPLIED", "MoltenTouchApplied", 244072)
self:Log("SPELL_AURA_APPLIED", "DesolateGazeApplied", 244768)
self:Log("SPELL_AURA_REMOVED", "DesolateGazeRemoved", 244768)
self:Log("SPELL_CAST_SUCCESS", "EnflameCorruption", 244057)
--[[ Shatug ]]--
self:Log("SPELL_CAST_SUCCESS", "CorruptingMaw", 245098)
self:Log("SPELL_AURA_APPLIED", "WeightofDarknessApplied", 254429)
self:Log("SPELL_AURA_REMOVED", "WeightofDarknessRemoved", 254429)
self:Log("SPELL_CAST_SUCCESS", "SiphonCorruption", 244056)
--[[ General ]]--
self:Log("SPELL_AURA_APPLIED", "EnflamedOrSiphoned", 248815, 248819) -- Enflamed, Siphoned
self:Log("SPELL_AURA_REMOVED", "EnflamedOrSiphonedRemoved", 248815, 248819) -- Enflamed, Siphoned
self:Log("SPELL_AURA_APPLIED", "SargerasBlessing", 246057) -- Destroyer's Boon buff
self:Log("SPELL_AURA_APPLIED", "FocusingPower", 251356)
--[[ Mythic ]]--
self:Log("SPELL_AURA_APPLIED", "Touched", 244054, 244055)
self:Log("SPELL_AURA_APPLIED", "BurningRemnant", 245022)
self:Log("SPELL_PERIODIC_DAMAGE", "BurningRemnant", 245022)
self:Log("SPELL_PERIODIC_MISSED", "BurningRemnant", 245022)
end
function mod:OnEngage()
moltenTouchCount = 1
enflameCorruptionCount = 1
siphonCorruptionCount = 1
weightofDarknessCount = 1
consumingSphereCount = 1
local mythic, easy = self:Mythic(), self:Easy()
self:CDBar(251445, mythic and 10.9 or 10.5) -- Burning Maw
self:CDBar(245098, mythic and 10.9 or 10.5) -- Corrupting Maw
self:Bar(244056, mythic and 26.5 or easy and 29 or 28) -- Siphon Corruption
self:Bar(244057, mythic and 49.6 or easy and 56 or 52) -- Enflame Corruption
self:Bar(244131, mythic and 49 or easy and 54.5 or 52.5) -- Consuming Sphere
self:Bar(244768, mythic and 77.5 or easy and 89 or 84.5) -- Desolate Gaze
if not easy then
self:Bar(244072, mythic and 18 or 20) -- Molten Touch
self:Bar(254429, mythic and 73 or 78) -- Weight of Darkness
end
end
--------------------------------------------------------------------------------
-- Event Handlers
--
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
if spellId == 244159 then -- Consuming Sphere
self:MessageOld(244131, "yellow", "alert")
consumingSphereCount = consumingSphereCount + 1
self:Bar(244131, self:Mythic() and (consumingSphereCount % 2 == 1 and 86 or 72.5) or self:Easy() and 85 or 78.5)
elseif spellId == 244069 then -- Weight of Darkness
weightofDarknessCount = weightofDarknessCount + 1
self:Flash(254429)
self:MessageOld(254429, "orange", "warning")
self:Bar(254429, self:Mythic() and (weightofDarknessCount % 2 == 1 and 72.5 or 86) or 78.5)
elseif spellId == 244064 then -- Desolate Gaze
self:Bar(244768, self:Mythic() and 103 or self:Easy() and 104 or 96.5)
end
end
function mod:BurningMaw(args)
self:MessageOld(args.spellId, "red", "alarm")
self:CDBar(args.spellId, self:Mythic() and 10.9 or 11)
end
function mod:MoltenTouch(args)
moltenTouchCount = moltenTouchCount + 1
if self:Mythic() then
self:Bar(args.spellId, moltenTouchCount % 2 == 1 and 103.3 or 88.8)
else
self:Bar(args.spellId, 96.5)
end
end
do
local playerList = mod:NewTargetList()
function mod:MoltenTouchApplied(args)
playerList[#playerList+1] = args.destName
if self:Me(args.destGUID) then
self:PlaySound(args.spellId, "warning")
end
self:TargetsMessage(args.spellId, "yellow", playerList, 3)
end
end
do
local playerList = mod:NewTargetList()
function mod:DesolateGazeApplied(args)
playerList[#playerList+1] = args.destName
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 8)
end
self:PlaySound(args.spellId, "warning", nil, playerList)
self:TargetsMessage(args.spellId, "orange", playerList, 5)
end
end
function mod:DesolateGazeRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
function mod:EnflameCorruption(args)
self:MessageOld(args.spellId, "yellow", "alert")
enflameCorruptionCount = enflameCorruptionCount + 1
self:Bar(args.spellId, self:Mythic() and (enflameCorruptionCount % 2 == 1 and 88.8 or 104.6) or self:Easy() and 104 or 95.5)
self:CastBar(args.spellId, 9)
end
function mod:CorruptingMaw(args)
self:MessageOld(args.spellId, "red", "alarm")
self:CDBar(args.spellId, self:Mythic() and 10.9 or 11)
end
function mod:WeightofDarknessApplied(args)
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 5)
end
end
function mod:WeightofDarknessRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
function mod:SiphonCorruption(args)
self:MessageOld(args.spellId, "yellow", "alert")
siphonCorruptionCount = siphonCorruptionCount + 1
self:Bar(args.spellId, self:Mythic() and (siphonCorruptionCount % 2 == 1 and 86.3 or 73) or self:Easy() and 85 or 78.5)
self:CastBar(args.spellId, 9)
end
function mod:EnflamedOrSiphoned(args)
if self:Me(args.destGUID) then
self:PlaySound(args.spellId, "warning")
self:PersonalMessage(args.spellId)
self:Say(args.spellId)
if self:Mythic() then
self:SayCountdown(args.spellId, 3, nil, 2)
else
self:SayCountdown(args.spellId, 4)
end
end
end
function mod:EnflamedOrSiphonedRemoved(args)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
do
local prev = 0
function mod:SargerasBlessing(args)
local t = GetTime()
if t-prev > 0.5 then
prev = t
self:MessageOld(244050, "orange", "warning", args.spellName, args.spellId)
end
end
end
do
local prev = 0
function mod:FocusingPower(args)
local t = GetTime()
if t-prev > 1.5 then
prev = t
self:MessageOld(args.spellId, "cyan", "info")
self:Bar(args.spellId, 15)
end
end
end
--[[ Mythic ]]--
function mod:Touched(args)
if self:Me(args.destGUID) then
self:MessageOld(args.spellId, args.spellId == 244054 and "red" or "blue", "warning", CL.you:format(args.spellName)) -- Red for Flame, Blue for Shadow
end
end
do
local prev = 0
function mod:BurningRemnant(args)
if self:Me(args.destGUID) then
local t = GetTime()
if t-prev > 2 then
prev = t
self:PlaySound(args.spellId, "alert")
self:PersonalMessage(args.spellId, "underyou")
end
end
end
end