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.

459 lines
14 KiB

4 years ago
--------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Tomb of Sargeras Trash", 1676)
if not mod then return end
mod.displayName = CL.trash
mod:RegisterEnableMob(
--[[ Pre Goroth ]]--
118022, -- Infernal Chaosbringer
--[[ Goroth -> Demonic Inquisition ]]--
121003, -- Rez the Tombwatcher
--[[ Goroth -> Harjatan ]]--
--[[ Goroth -> Sisters of the Moon ]]--
120020, --Erdu'val
120851, -- Hippogryph Lord Varah
--[[ Harjatan -> Mistress Sassz'ine ]]--
120482, -- Tidescale Seacaller
120463, -- Undersea Custodian
120012, -- Dresanoth
120013, -- The Dread Stalker
120003, --Warlord Darjah
--[[ Sisters of the Moon -> The Desolate Host ]]--
120777, -- Guardian Sentry
120194, -- Ghostly Acolyte
120019, -- Ryul the Fading
--[[ Pre Maiden of Vigilance ]]--
--[[ Maiden of Vigilance -> Fallen Avatar ]]--
120449 -- Defensive Countermeasure
--[[ Fallen Avatar -> Kil'jaeden ]]--
)
--------------------------------------------------------------------------------
-- Locals
--
--------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.rune = "Orcish Rune"
--[[ Pre Goroth ]]--
L.chaosbringer = "Infernal Chaosbringer"
--[[ Goroth -> Demonic Inquisition ]]--
L.rez = "Rez the Tombwatcher"
--[[ Goroth -> Harjatan ]]--
--[[ Goroth -> Sisters of the Moon ]]--
L.erduval = "Erdu'val"
L.varah = "Hippogryph Lord Varah"
--[[ Harjatan -> Mistress Sassz'ine ]]--
L.seacaller = "Tidescale Seacaller"
L.custodian = "Undersea Custodian"
L.dresanoth = "Dresanoth"
L.stalker = "The Dread Stalker"
L.darjah = "Warlord Darjah"
--[[ Sisters of the Moon -> The Desolate Host ]]--
L.sentry = "Guardian Sentry"
L.acolyte = "Ghostly Acolyte"
L.ryul = "Ryul the Fading"
--[[ Pre Maiden of Vigilance ]]--
--[[ Maiden of Vigilance -> Fallen Avatar ]]--
L.countermeasure = "Defensive Countermeasure"
--[[ Fallen Avatar -> Kil'jaeden ]]--
end
--------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
{241742, "FLASH"}, -- Curse of Gul'dan (Orcish Rune)
--[[ Pre Goroth ]]--
242909, -- Massive Eruption (Infernal Chaosbringer)
--[[ Goroth -> Demonic Inquisition ]]--
241262, -- Felburn (Rez the Tombwatcher)
--[[ Goroth -> Harjatan ]]--
--[[ Goroth -> Sisters of the Moon ]]--
241301, -- Wall of Doom (Erdu'val)
{241171, "SAY", "PROXIMITY"}, -- Lunar Bomb (Hippogryph Lord Varah)
241169, -- Umbra Destruction (Hippogryph Lord Varah)
--[[ Harjatan -> Mistress Sassz'ine ]]--
{240599, "SAY", "PROXIMITY"}, -- Embrace of the Tides (Tidescale Seacaller)
240169, -- Electric Shock (Undersea Custodian)
240176, -- Lightning Stork (Undersea Custodian)
241254, -- Frost-Fingered Fear (Dresanoth)
{241289, "FLASH"}, -- Mist Filled Pools (Dresanoth)
{241267, "TANK"}, -- Icy Talons (Dresanoth)
241703, -- Blood Siphon (The Dread Stalker)
{241716, "FLASH"}, -- Blood Drain (The Dread Stalker)
{241465, "TANK"}, -- Coral Cut (Warlord Darjah)
241446, -- Sonic Scream (Warlord Darjah)
{241480, "FLASH"}, -- Summon Steam Elemental (Warlord Darjah)
--[[ Sisters of the Moon -> The Desolate Host ]]--
{240735, "SAY", "SAY_COUNTDOWN"}, -- Polymorph Bomb (Guardian Sentry)
{239741, "SAY", "SAY_COUNTDOWN"}, -- Anguish (Ghostly Acolyte)
{241367, "FLASH"}, -- Anguishing Strike (Ryul the Fading)
{241675, "SAY", "PROXIMITY"}, -- Void Rift (Ryul the Fading)
241646, -- Soul Portal (Ryul the Fading)
--[[ Pre Maiden of Vigilance ]]--
--[[ Maiden of Vigilance -> Fallen Avatar ]]--
241374, -- Luminescent Barrier
--[[ Fallen Avatar -> Kil'jaeden ]]--
}, {
[241742] = L.rune,
[242909] = L.chaosbringer,
[241262] = L.rez,
[241301] = L.erduval,
[241171] = L.varah,
[240599] = L.seacaller,
[240169] = L.custodian,
[241254] = L.dresanoth,
[241703] = L.stalker,
[241465] = L.darjah,
[240735] = L.sentry,
[239741] = L.acolyte,
[241367] = L.ryul,
[241374] = L.countermeasure,
}
end
function mod:OnBossEnable()
--[[ General ]]--
self:RegisterMessage("BigWigs_OnBossEngage", "Disable")
self:Log("SPELL_AURA_APPLIED", "GroundEffectDamage", 241262, 241169, 240176, 241703) -- Felburn, Umbra Destruction, Lightning Storm, Blood Siphon
self:Log("SPELL_PERIODIC_DAMAGE", "GroundEffectDamage", 241262, 241169, 240176, 241703)
self:Log("SPELL_PERIODIC_MISSED", "GroundEffectDamage", 241262, 241169, 240176, 241703)
self:Log("SPELL_AURA_APPLIED", "CurseOfGuldan", 241742)
self:Log("SPELL_AURA_REMOVED", "CurseOfGuldanRemoved", 241742)
--[[ Pre Goroth ]]--
self:Log("SPELL_CAST_START", "MassiveEruption", 242909)
--[[ Goroth -> Demonic Inquisition ]]--
--[[ Goroth -> Harjatan ]]--
--[[ Goroth -> Sisters of the Moon ]]--
self:Log("SPELL_CAST_START", "WallOfDoom", 241301)
self:Log("SPELL_AURA_APPLIED", "LunarBomb", 241171)
self:Log("SPELL_AURA_REMOVED", "LunarBombRemoved", 241171)
--[[ Harjatan -> Mistress Sassz'ine ]]--
self:Log("SPELL_AURA_APPLIED", "EmbraceOfTheTides", 240599)
self:Log("SPELL_AURA_REMOVED", "EmbraceOfTheTidesRemoved", 240599)
self:Log("SPELL_CAST_START", "ElectricShock", 240169)
self:Log("SPELL_CAST_START", "FrostFingeredFear", 241254)
self:Log("SPELL_CAST_START", "MistFilledPools", 241289)
self:Log("SPELL_AURA_APPLIED", "IcyTalons", 241267)
self:Log("SPELL_AURA_APPLIED_DOSE", "IcyTalons", 241267)
self:Log("SPELL_CAST_SUCCESS", "BloodDrain", 241716)
self:Log("SPELL_AURA_APPLIED", "BloodDrainApplied", 241716)
self:Log("SPELL_AURA_REMOVED", "BloodDrainRemoved", 241716)
self:Log("SPELL_DISPEL", "BloodDrainDispelled", "*")
self:Log("SPELL_AURA_APPLIED", "CoralCut", 241465)
self:Log("SPELL_AURA_APPLIED_DOSE", "CoralCut", 241465)
self:Log("SPELL_AURA_REMOVED", "CoralCutRemoved", 241465)
self:Log("SPELL_CAST_START", "SonicScream", 241446)
self:Log("SPELL_CAST_SUCCESS", "SummonSteamElemental", 241480)
--[[ Sisters of the Moon -> The Desolate Host ]]--
self:Log("SPELL_AURA_APPLIED", "PolymorphBomb", 240735)
self:Log("SPELL_AURA_REMOVED", "PolymorphBombRemoved", 240735)
self:Log("SPELL_AURA_APPLIED", "Anguish", 239741)
self:Log("SPELL_AURA_REMOVED", "AnguishRemoved", 239741)
self:Log("SPELL_CAST_SUCCESS", "AnguishingStrike", 241367)
self:Log("SPELL_AURA_APPLIED", "AnguishingStrikeApplied", 241367)
self:Log("SPELL_AURA_APPLIED", "VoidRift", 241675)
self:Log("SPELL_AURA_REMOVED", "VoidRiftRemoved", 241675)
self:Log("SPELL_CAST_SUCCESS", "SoulPortal", 241646)
--[[ Pre Maiden of Vigilance ]]--
--[[ Maiden of Vigilance -> Fallen Avatar ]]--
self:Log("SPELL_CAST_SUCCESS", "LuminescentBarrier", 241374)
--[[ Fallen Avatar -> Kil'jaeden ]]--
end
--------------------------------------------------------------------------------
-- Event Handlers
--
--[[ General ]]--
do
local prev = 0
function mod:GroundEffectDamage(args)
local t = GetTime()
if self:Me(args.destGUID) and t-prev > 1.5 then
prev = t
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
end
end
end
function mod:CurseOfGuldan(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "warning", nil, nil, true)
self:TargetBar(args.spellId, 180, args.destName)
self:Flash(args.spellId)
end
function mod:CurseOfGuldanRemoved(args)
self:StopBar(args.spellName, args.destName)
end
--[[ Pre Goroth ]]--
do
local prev = 0
function mod:MassiveEruption(args)
local t = GetTime()
if t-prev > 3 then
self:MessageOld(args.spellId, "orange", "long")
end
end
end
--[[ Goroth -> Demonic Inquisition ]]--
--[[ Goroth -> Harjatan ]]--
--[[ Goroth -> Sisters of the Moon ]]--
function mod:WallOfDoom(args)
self:MessageOld(args.spellId, "yellow", "info")
self:CDBar(args.spellId, 6.1)
end
function mod:LunarBomb(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "warning")
self:TargetBar(args.spellId, 10, args.destName)
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:OpenProximity(args.spellId, 10)
end
end
function mod:LunarBombRemoved(args)
self:StopBar(args.spellName, args.destName)
if self:Me(args.destGUID) then
self:CloseProximity(args.spellId)
end
end
--[[ Harjatan -> Mistress Sassz'ine ]]--
function mod:EmbraceOfTheTides(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "alert")
self:TargetBar(args.spellId, 20, args.destName)
if self:Me(args.destGUID) then
self:OpenProximity(args.spellId, 8)
self:Say(args.spellId)
end
end
function mod:EmbraceOfTheTidesRemoved(args)
self:StopBar(args.spellName, args.destName)
if self:Me(args.destGUID) then
self:CloseProximity(args.spellId)
end
end
function mod:ElectricShock(args)
self:MessageOld(args.spellId, "red", "alarm")
self:CastBar(args.spellId, 4)
end
function mod:FrostFingeredFear(args)
local fear = self:SpellName(5782) -- "Fear"
self:MessageOld(args.spellId, "yellow", "long", CL.casting:format(fear))
self:CDBar(args.spellId, 31, fear)
end
function mod:MistFilledPools(args)
self:Flash(args.spellId)
self:MessageOld(args.spellId, "red", "warning", CL.incoming:format(args.spellName))
self:CDBar(args.spellId, 23)
end
function mod:IcyTalons(args)
if self:Tank(args.destName) then
local amount = args.amount or 1
self:StackMessage(args.spellId, args.destName, amount, "orange", amount > 3 and "alarm")
self:StopBar(CL.count:format(args.spellName, amount-1), args.destName)
self:TargetBar(args.spellId, 20, args.destName, CL.count:format(args.spellName, amount))
end
end
function mod:BloodDrain(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "warning", nil, nil, self:Dispeller("magic"))
self:Bar(args.spellId, 13.3)
end
function mod:BloodDrainApplied(args)
if self:Me(args.destGUID) or self:Dispeller("magic") then
self:Flash(args.spellId)
end
self:TargetBar(args.spellId, 3, args.destName)
end
function mod:BloodDrainRemoved(args)
self:StopBar(args.spellName, args.destName)
end
function mod:BloodDrainDispelled(args)
if args.extraSpellId == 241716 then
self:MessageOld(241716, "green", "info", CL.removed_by:format(args.extraSpellName, self:ColorName(args.sourceName)))
end
end
function mod:CoralCut(args)
if self:Tank(args.destName) then
local amount = args.amount or 1
self:StackMessage(args.spellId, args.destName, amount, "yellow")
if not self:Me(args.destGUID) and amount > 1 and self:Tank() and not self:UnitDebuff("player", args.spellName) then
self:PlaySound(args.spellId, "warning")
end
self:StopBar(CL.count:format(args.spellName, amount-1), args.destName)
self:TargetBar(args.spellId, 15, args.destName, CL.count:format(args.spellName, amount))
end
end
function mod:CoralCutRemoved(args)
if self:Me(args.destGUID) then
self:MessageOld(args.spellId, "green", self:Tank() and "warning", CL.removed:format(args.spellName))
else
self:MessageOld(args.spellId, "green", nil, CL.removed_from:format(args.spellName, self:ColorName(args.destName)))
end
end
function mod:SonicScream(args)
self:MessageOld(args.spellId, "red", "long", CL.casting:format(args.spellName))
self:CastBar(args.spellId, 2)
end
function mod:SummonSteamElemental(args)
self:MessageOld(args.spellId, "orange")
if self:Damager() then
self:Flash(args.spellId)
self:PlaySound(args.spellId, "warning")
end
self:CDBar(args.spellId, 32)
end
--[[ Sisters of the Moon -> The Desolate Host ]]--
function mod:PolymorphBomb(args)
self:TargetMessageOld(args.spellId, args.destName, "orange", "alarm")
self:TargetBar(args.spellId, 10, args.destName)
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 10)
end
end
function mod:PolymorphBombRemoved(args)
self:StopBar(args.spellName, args.destName)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
function mod:Anguish(args)
self:TargetMessageOld(args.spellId, args.destName, "orange", "alarm")
self:TargetBar(args.spellId, 6, args.destName)
if self:Me(args.destGUID) then
self:Say(args.spellId)
self:SayCountdown(args.spellId, 6)
end
end
function mod:AnguishRemoved(args)
self:StopBar(args.spellName, args.destName)
if self:Me(args.destGUID) then
self:CancelSayCountdown(args.spellId)
end
end
function mod:AnguishingStrike(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "warning", nil, nil, self:Tank())
self:Bar(args.spellId, 15.8)
if not self:Me(args.destGUID) and self:Tank() then
self:Flash(args.spellId)
end
end
function mod:AnguishingStrikeApplied(args)
self:TargetBar(args.spellId, 10, args.destName)
end
function mod:VoidRift(args)
self:TargetMessageOld(args.spellId, args.destName, "orange", "alert")
if self:Me(args.destGUID) then
self:OpenProximity(args.spellId, 10)
self:Say(args.spellId)
end
end
function mod:VoidRiftRemoved(args)
if self:Me(args.destGUID) then
self:CloseProximity(args.spellId)
end
end
function mod:SoulPortal(args)
self:MessageOld(args.spellId, "green", nil, CL.spawned:format(args.spellName))
self:Bar(args.spellId, 15.8)
end
--[[ Pre Maiden of Vigilance ]]--
--[[ Maiden of Vigilance -> Fallen Avatar ]]--
function mod:LuminescentBarrier(args)
self:MessageOld(args.spellId, "yellow", self:Dispeller("magic", true) and "warning", CL.on:format(args.spellName, args.sourceName))
end
--[[ Fallen Avatar -> Kil'jaeden ]]--