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.
376 lines
10 KiB
376 lines
10 KiB
|
4 years ago
|
--------------------------------------------------------------------------------
|
||
|
|
-- Module Declaration
|
||
|
|
--
|
||
|
|
|
||
|
|
local mod, CL = BigWigs:NewBoss("De Other Side Trash", 2291)
|
||
|
|
if not mod then return end
|
||
|
|
mod.displayName = CL.trash
|
||
|
|
mod:RegisterEnableMob(
|
||
|
|
-- [[ The ring ]] --
|
||
|
|
168992, -- Risen Cultist
|
||
|
|
169905, -- Risen Warlord
|
||
|
|
168934, -- Enraged Spirit
|
||
|
|
168942, -- Death Speaker
|
||
|
|
|
||
|
|
-- [[ Path to Hakkar ]] --
|
||
|
|
170480, -- Atal'ai Deathwalker
|
||
|
|
170490, -- Atal'ai High Priest
|
||
|
|
170572, -- Atal'ai Hoodoo Hexxer
|
||
|
|
|
||
|
|
-- [[ Path to the Manastorms ]] --
|
||
|
|
167962, -- Defunct Dental Drill
|
||
|
|
167964, -- 4.RF-4.RF
|
||
|
|
167965, -- Lubricator
|
||
|
|
167963, -- Headless Client
|
||
|
|
|
||
|
|
-- [[ Path to Xyexa ]] --
|
||
|
|
164862, -- Weald Shimmermoth
|
||
|
|
171184 -- Mythresh, Sky's Talons
|
||
|
|
)
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Localization
|
||
|
|
--
|
||
|
|
|
||
|
|
local L = mod:GetLocale()
|
||
|
|
if L then
|
||
|
|
-- [[ The ring ]] --
|
||
|
|
L.cultist = "Risen Cultist"
|
||
|
|
L.warlord = "Risen Warlord"
|
||
|
|
L.enraged = "Enraged Spirit"
|
||
|
|
L.speaker = "Death Speaker"
|
||
|
|
|
||
|
|
-- [[ Path to Hakkar ]] --
|
||
|
|
L.deathwalker = "Atal'ai Deathwalker"
|
||
|
|
L.priest = "Atal'ai High Priest"
|
||
|
|
L.hexxer = "Atal'ai Hoodoo Hexxer"
|
||
|
|
|
||
|
|
-- [[ Path to the Manastorms ]] --
|
||
|
|
L.drill = "Defunct Dental Drill"
|
||
|
|
L.arf_arf = "4.RF-4.RF"
|
||
|
|
L.lubricator = "Lubricator"
|
||
|
|
L.headless = "Headless Client"
|
||
|
|
|
||
|
|
-- [[ Path to Xyexa ]] --
|
||
|
|
L.shimmermoth = "Weald Shimmermoth"
|
||
|
|
L.mythresh = "Mythresh, Sky's Talons"
|
||
|
|
|
||
|
|
L.soporific_shimmerdust = 334496
|
||
|
|
L.soporific_shimmerdust_desc = "Curse that makes your character fall asleep at 10 stacks. Jumping resets stacks."
|
||
|
|
L.soporific_shimmerdust_icon = "spell_nature_drowsy"
|
||
|
|
end
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Initialization
|
||
|
|
--
|
||
|
|
|
||
|
|
function mod:GetOptions()
|
||
|
|
return {
|
||
|
|
-- [[ The ring ]] --
|
||
|
|
-- Risen Cultist
|
||
|
|
328740, -- Dark Lotus
|
||
|
|
-- Risen Warlord
|
||
|
|
{333227, "NAMEPLATEBAR"}, -- Undying Rage
|
||
|
|
-- Enraged Spirit
|
||
|
|
333787, -- Rage
|
||
|
|
-- Death Speaker
|
||
|
|
334051, -- Erupting Darkness
|
||
|
|
|
||
|
|
-- [[ Path to Hakkar ]] --
|
||
|
|
-- Atal'ai Deathwalker
|
||
|
|
{332678, "TANK_HEALER"}, -- Gushing Wound
|
||
|
|
332672, -- Bladestorm
|
||
|
|
-- Atal'ai High Priest
|
||
|
|
332706, -- Heal
|
||
|
|
-- Atal'ai Hoodoo Hexxer
|
||
|
|
332612, -- Healing Wave
|
||
|
|
332605, -- Hex
|
||
|
|
{332608, "SAY"}, -- Lightning Discharge
|
||
|
|
|
||
|
|
-- [[ Path to the Manastorms ]] --
|
||
|
|
-- Defunct Dental Drill
|
||
|
|
{331927, "NAMEPLATEBAR"}, -- Haywire
|
||
|
|
-- 4.RF-4.RF
|
||
|
|
{331548, "TANK_HEALER"}, -- Metallic Jaws
|
||
|
|
{331846, "SAY", "SAY_COUNTDOWN"}, -- W-00F
|
||
|
|
-- Lubricator
|
||
|
|
332084, -- Self-Cleaning Cycle
|
||
|
|
-- Headless Client
|
||
|
|
332157, -- Spinning Up
|
||
|
|
|
||
|
|
-- [[ Path to Xyexa ]] --
|
||
|
|
-- Weald Shimmermoth
|
||
|
|
"soporific_shimmerdust",
|
||
|
|
-- Mythresh, Sky's Talons
|
||
|
|
340026, -- Wailing Grief
|
||
|
|
}, {
|
||
|
|
[328740] = L.cultist,
|
||
|
|
[333227] = L.warlord,
|
||
|
|
[333787] = L.enraged,
|
||
|
|
[334051] = L.speaker,
|
||
|
|
|
||
|
|
[332678] = L.deathwalker,
|
||
|
|
[332706] = L.priest,
|
||
|
|
[332612] = L.hexxer,
|
||
|
|
|
||
|
|
[331927] = L.drill,
|
||
|
|
[331548] = L.arf_arf,
|
||
|
|
[332084] = L.lubricator,
|
||
|
|
[332157] = L.headless,
|
||
|
|
|
||
|
|
["soporific_shimmerdust"] = L.shimmermoth,
|
||
|
|
[340026] = L.mythresh,
|
||
|
|
}
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:OnBossEnable()
|
||
|
|
-- [[ The ring ]] --
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "DarkLotus", 328740)
|
||
|
|
self:Log("SPELL_AURA_APPLIED", "UndyingRageApplied", 333227)
|
||
|
|
self:Log("SPELL_AURA_REMOVED", "UndyingRageRemoved", 333227)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "Rage", 333787)
|
||
|
|
self:Log("SPELL_CAST_START", "EruptingDarkness", 334051)
|
||
|
|
|
||
|
|
-- [[ Path to Hakkar ]] --
|
||
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "GushingWound", 332678)
|
||
|
|
self:Log("SPELL_CAST_START", "Bladestorm", 332671)
|
||
|
|
self:Log("SPELL_CAST_START", "Heal", 332706)
|
||
|
|
self:Log("SPELL_CAST_START", "HealingWave", 332612)
|
||
|
|
self:Log("SPELL_CAST_START", "Hex", 332605)
|
||
|
|
self:Log("SPELL_CAST_START", "LightningDischarge", 332608)
|
||
|
|
|
||
|
|
-- [[ Path to the Manastorms ]] --
|
||
|
|
self:Log("SPELL_CAST_START", "HaywirePreCast", 331927)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "Haywire", 331927)
|
||
|
|
self:Log("SPELL_AURA_REMOVED", "HaywireOver", 331927)
|
||
|
|
self:Log("SPELL_CAST_START", "MetallicJaws", 331548)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "MetallicJawsSuccess", 331548)
|
||
|
|
self:Log("SPELL_CAST_START", "Woof", 331846)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "WoofSuccess", 331846)
|
||
|
|
self:Log("SPELL_CAST_START", "SelfCleaningCycle", 332084)
|
||
|
|
self:Death("ArfArfDeath", 167964)
|
||
|
|
|
||
|
|
-- [[ Path to Xyexa ]] --
|
||
|
|
self:Log("SPELL_AURA_APPLIED_DOSE", "SoporificShimmerdust", 334496)
|
||
|
|
self:Log("SPELL_CAST_START", "WailingGrief", 340026)
|
||
|
|
self:Log("SPELL_CAST_SUCCESS", "WailingGriefSuccess", 340026)
|
||
|
|
self:Death("MythreshDeath", 171184)
|
||
|
|
|
||
|
|
-- [[ Common ]] --
|
||
|
|
self:Log("SPELL_DAMAGE", "PeriodicDamage", 332672, 332157) -- Bladestorm, Spinning Up
|
||
|
|
self:Log("SPELL_MISSED", "PeriodicDamage", 332672, 332157)
|
||
|
|
end
|
||
|
|
|
||
|
|
--------------------------------------------------------------------------------
|
||
|
|
-- Event Handlers
|
||
|
|
--
|
||
|
|
|
||
|
|
-- [[ The ring ]] --
|
||
|
|
-- Risen Cultist
|
||
|
|
do
|
||
|
|
local prev = 0
|
||
|
|
function mod:DarkLotus(args)
|
||
|
|
if self:Friendly(args.sourceFlags) then return end
|
||
|
|
|
||
|
|
local t = args.time
|
||
|
|
if t - prev > 1 then
|
||
|
|
prev = t
|
||
|
|
self:Message(args.spellId, "yellow")
|
||
|
|
self:PlaySound(args.spellId, "alarm")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Risen Warlord
|
||
|
|
function mod:UndyingRageApplied(args)
|
||
|
|
self:Message(args.spellId, "red", CL.buff_other:format(args.destName, args.spellName))
|
||
|
|
self:PlaySound(args.spellId, (self:Tank() or self:Dispeller("enrage", true)) and "warning" or "alert")
|
||
|
|
self:NameplateCDBar(args.spellId, 33, args.sourceGUID)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:UndyingRageRemoved(args)
|
||
|
|
self:Message(args.spellId, "green", CL.removed_from:format(args.spellName, args.destName))
|
||
|
|
self:PlaySound(args.spellId, "info")
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Death Speaker
|
||
|
|
function mod:EruptingDarkness(args)
|
||
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
self:CastBar(args.spellId, 4)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Enraged Spirit
|
||
|
|
function mod:Rage(args)
|
||
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
self:CastBar(args.spellId, 6)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- [[ Path to Hakkar ]] --
|
||
|
|
-- Atal'ai Deathwalker
|
||
|
|
function mod:GushingWound(args)
|
||
|
|
local stacks = args.amount
|
||
|
|
if stacks % 3 == 0 then
|
||
|
|
self:StackMessage(args.spellId, args.destName, stacks, "purple")
|
||
|
|
self:PlaySound(args.spellId, "alert", nil, args.destName)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
do
|
||
|
|
local prev = 0
|
||
|
|
function mod:Bladestorm(args)
|
||
|
|
local t = args.time
|
||
|
|
if t - prev > 1 then
|
||
|
|
prev = t
|
||
|
|
self:Message(332672, "yellow", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(332672, "info")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Atal'ai High Priest
|
||
|
|
function mod:Heal(args)
|
||
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Atal'ai Hoodoo Hexxer
|
||
|
|
function mod:HealingWave(args)
|
||
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:Hex(args)
|
||
|
|
self:Message(args.spellId, "yellow", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
end
|
||
|
|
|
||
|
|
do
|
||
|
|
local function printTarget(self, name, guid)
|
||
|
|
self:TargetMessage(332608, "orange", name)
|
||
|
|
self:PlaySound(332608, "alarm", nil, name)
|
||
|
|
|
||
|
|
if self:Me(guid) then
|
||
|
|
self:Say(332608)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:LightningDischarge(args)
|
||
|
|
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
-- [[ Path to the Manastorms ]] --
|
||
|
|
-- Defunct Dental Drill
|
||
|
|
function mod:HaywirePreCast(args)
|
||
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:Haywire(args)
|
||
|
|
self:CastBar(args.spellId, 4)
|
||
|
|
self:NameplateCDBar(args.spellId, 19, args.sourceGUID)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:HaywireOver(args)
|
||
|
|
self:StopBar(CL.cast:format(args.spellName))
|
||
|
|
end
|
||
|
|
|
||
|
|
-- 4.RF-4.RF
|
||
|
|
function mod:MetallicJaws(args)
|
||
|
|
self:Message(args.spellId, "purple", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:MetallicJawsSuccess(args)
|
||
|
|
self:CDBar(args.spellId, 9.9)
|
||
|
|
end
|
||
|
|
|
||
|
|
do
|
||
|
|
local startedAt = 0
|
||
|
|
local function printTarget(self, name, guid)
|
||
|
|
local left = startedAt + 3 - GetTime()
|
||
|
|
local isOnMe = self:Me(guid)
|
||
|
|
|
||
|
|
self:TargetMessage(331846, "orange", name)
|
||
|
|
self:PlaySound(331846, isOnMe and "warning" or "alert", nil, name)
|
||
|
|
self:CastBar(331846, left)
|
||
|
|
|
||
|
|
if isOnMe then
|
||
|
|
self:Say(331846)
|
||
|
|
self:SayCountdown(331846, left, nil, 2)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:Woof(args)
|
||
|
|
startedAt = GetTime()
|
||
|
|
self:GetUnitTarget(printTarget, 0.4, args.sourceGUID)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:WoofSuccess(args)
|
||
|
|
self:CDBar(args.spellId, 6.7)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:ArfArfDeath()
|
||
|
|
self:StopBar(331548) -- Metallic Jaws
|
||
|
|
|
||
|
|
-- W-00F
|
||
|
|
self:StopBar(331846)
|
||
|
|
self:StopBar(CL.cast:format(self:SpellName(331846)))
|
||
|
|
self:CancelSayCountdown(331846)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Lubricator
|
||
|
|
function mod:SelfCleaningCycle(args)
|
||
|
|
self:Message(args.spellId, "red", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "warning")
|
||
|
|
end
|
||
|
|
|
||
|
|
-- [[ Path to Xyexa ]] --
|
||
|
|
-- Weald Shimmermoth
|
||
|
|
function mod:SoporificShimmerdust(args)
|
||
|
|
if self:Me(args.destGUID) then
|
||
|
|
local stacks = args.amount
|
||
|
|
if stacks % 2 == 0 or stacks >= 8 then
|
||
|
|
self:StackMessage("soporific_shimmerdust", args.destName, stacks, "blue", nil, self:SpellName(L.soporific_shimmerdust), L.soporific_shimmerdust_icon)
|
||
|
|
self:PlaySound("soporific_shimmerdust", stacks >= 8 and "warning" or "alarm")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-- Mythresh, Sky's Talons
|
||
|
|
function mod:WailingGrief(args)
|
||
|
|
self:Message(args.spellId, "orange", CL.casting:format(args.spellName))
|
||
|
|
self:PlaySound(args.spellId, "alert")
|
||
|
|
self:CastBar(args.spellId, 3)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:WailingGriefSuccess(args)
|
||
|
|
self:Bar(args.spellId, 15.2)
|
||
|
|
end
|
||
|
|
|
||
|
|
function mod:MythreshDeath()
|
||
|
|
-- Wailing Grief
|
||
|
|
self:StopBar(340026)
|
||
|
|
self:StopBar(CL.cast:format(self:SpellName(340026)))
|
||
|
|
end
|
||
|
|
|
||
|
|
-- [[ Common ]] --
|
||
|
|
do
|
||
|
|
local prev = 0
|
||
|
|
function mod:PeriodicDamage(args)
|
||
|
|
if self:Me(args.destGUID) then
|
||
|
|
local t = args.time
|
||
|
|
if t - prev > (self:Melee() and 6 or 1.5) then
|
||
|
|
prev = t
|
||
|
|
|
||
|
|
self:PersonalMessage(args.spellId, "near")
|
||
|
|
self:PlaySound(args.spellId, "alarm")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|