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
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
|
|
|