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.

115 lines
5.2 KiB

local mod = DBM:NewMod("DeOtherSideTrash", "DBM-Party-Shadowlands", 7)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240808043723")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod.isTrashModBossFightAllowed = true
mod:RegisterEvents(
"SPELL_CAST_START 334051 342869 333787 332671 332666 332706 332612 331927 332156 332084 340026",
"SPELL_CAST_SUCCESS 328740",
"SPELL_AURA_APPLIED 333227 332666 334493 333250"
-- "SPELL_AURA_REMOVED 333227"
)
--All warnings/recommendations drycoded from https://www.wowhead.com/guides/de-other-side-shadowlands-dungeon-strategy-guide
--Notable Ring Trash
local warnUndyingRage = mod:NewTargetNoFilterAnnounce(333227, 4, nil, "Tank|Healer")
local warnEnragedMask = mod:NewSpellAnnounce(342869, 2)
--General
--local specWarnGTFO = mod:NewSpecialWarningGTFO(257274, nil, nil, nil, 1, 8)
--Notable Ring Trash
local specWarnEruptingDarkness = mod:NewSpecialWarningDodge(334051, nil, nil, nil, 2, 2)
local specWarnRage = mod:NewSpecialWarningSpell(333787, "Healer", nil, nil, 2, 2)
local specWarnUndyingRage = mod:NewSpecialWarningDispel(333227, "RemoveEnrage", nil, nil, 1, 2)
--Notable Hakkar Trash
local specWarnBladestorm = mod:NewSpecialWarningRun(332671, "Melee", nil, nil, 2, 2)
local specWarnRenew = mod:NewSpecialWarningInterrupt(332666, "HasInterrupt", nil, nil, 1, 2)
local specWarnRenewDispel = mod:NewSpecialWarningDispel(332666, "MagicDispeller", nil, nil, 1, 2)
local specWarnHeal = mod:NewSpecialWarningInterrupt(332706, "HasInterrupt", nil, nil, 1, 2)
local specWarnHealingwave = mod:NewSpecialWarningInterrupt(332612, "HasInterrupt", nil, nil, 1, 2)
--Notable The Manastorms Trash
local specWarnHaywire = mod:NewSpecialWarningMoveTo(331927, nil, nil, nil, 2, 2)
local specWarnSpinningUp = mod:NewSpecialWarningRun(332156, "Melee", nil, nil, 2, 2)
local specWarnSelfCleaningCycle = mod:NewSpecialWarningInterrupt(332084, "HasInterrupt", nil, nil, 1, 2)
--Notable Dealer Xy'exa Trash
local specWarnSporificShimmerdust = mod:NewSpecialWarningJump(334493, nil, nil, nil, 1, 6)
local specWarnWailingGrief = mod:NewSpecialWarningSpell(340026, nil, nil, nil, 2, 2)
--Unknown
local specWarnDarkLotus = mod:NewSpecialWarningDodge(328740, nil, nil, nil, 2, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(333250, nil, nil, nil, 1, 8)
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 generalized, 7 GTFO
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 334051 and self:AntiSpam(3, 2) then
specWarnEruptingDarkness:Show()
specWarnEruptingDarkness:Play("shockwave")
elseif spellId == 342869 and self:AntiSpam(3, 6) then
warnEnragedMask:Show()
elseif spellId == 333787 and self:AntiSpam(5, 5) then
specWarnRage:Show()
specWarnRage:Play("aesoon")
elseif spellId == 332671 and self:AntiSpam(5, 1) then
specWarnBladestorm:Show()
specWarnBladestorm:Play("justrun")
elseif spellId == 332666 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnRenew:Show(args.sourceName)
specWarnRenew:Play("kickcast")
elseif spellId == 332706 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHeal:Show(args.sourceName)
specWarnHeal:Play("kickcast")
elseif spellId == 332612 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHealingwave:Show(args.sourceName)
specWarnHealingwave:Play("kickcast")
elseif spellId == 332084 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnSelfCleaningCycle:Show(args.sourceName)
specWarnSelfCleaningCycle:Play("kickcast")
elseif spellId == 331927 and self:AntiSpam(4, 2) then
specWarnHaywire:Show(DBM_COMMON_L.BREAK_LOS)
specWarnHaywire:Play("findshelter")
elseif spellId == 332156 and self:AntiSpam(5, 1) then
specWarnSpinningUp:Show()
specWarnSpinningUp:Play("justrun")
elseif spellId == 340026 then
specWarnWailingGrief:Show()
specWarnWailingGrief:Play("fearsoon")
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 328740 and self:AntiSpam(3, 2) then
--Using success because it can be interrupted, so we don't want to warn to dodge it unless it's NOT interupted
specWarnDarkLotus:Show()
specWarnDarkLotus:Play("watchstep")
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 333227 and self:AntiSpam(3, 5) then
if self.Options.SpecWarn333227dispel then
specWarnUndyingRage:Show(args.destName)
specWarnUndyingRage:Play("enrage")
else
warnUndyingRage:Show(args.destName)
end
elseif spellId == 332666 and args:IsDestTypeHostile() and self:AntiSpam(3, 5) then
specWarnRenewDispel:Show(args.destName)
specWarnRenewDispel:Play("helpdispel")
elseif spellId == 334493 and args:IsPlayer() then
specWarnSporificShimmerdust:Show()
specWarnSporificShimmerdust:Play("keepjump")
elseif spellId == 333250 and args:IsPlayer() and self:AntiSpam(3, 7) then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
end
end