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

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