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.
146 lines
6.2 KiB
146 lines
6.2 KiB
local mod = DBM:NewMod("PlaguefallTrash", "DBM-Party-Shadowlands", 2)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20231020041658")
|
|
--mod:SetModelID(47785)
|
|
|
|
mod.isTrashMod = true
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START 328016 328177 327584 327581 330403 327233 328986 318949 319070 328338 328475",
|
|
"SPELL_CAST_SUCCESS 320517",
|
|
"SPELL_AURA_APPLIED 328015 320072 320103 336451",
|
|
"SPELL_AURA_REMOVED 320103"
|
|
)
|
|
|
|
--TODO, maybe auto icon marking/tracking of slimes summoned via 327598
|
|
--Notable Globgrog Trash
|
|
local warnFungistorm = mod:NewSpellAnnounce(328177, 3, nil, "Healer")
|
|
local warnBeckonSlime = mod:NewCastAnnounce(327581, 2, 6)--Cast 3 seconds, plus 3 seconds til slime appears
|
|
--Notable Doctor Ickus Trash
|
|
local warnViolentDetonation = mod:NewCastAnnounce(328986, 3)
|
|
--Notable Domina Venomblade
|
|
--Unknown
|
|
local warnEnvelopingWebbing = mod:NewCastAnnounce(328475, 3)
|
|
|
|
--General
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(320072, nil, nil, nil, 1, 8)
|
|
--Notable Globgrog Trash
|
|
local specWarnWingBuffet = mod:NewSpecialWarningDodge(330403, "Tank", nil, nil, 1, 8)
|
|
local specWarnBelchPlague = mod:NewSpecialWarningDodge(327233, nil, nil, nil, 1, 2)
|
|
--Notable Doctor Ickus Trash
|
|
local specWarnFesteringBelch = mod:NewSpecialWarningDodge(318949, "Tank", nil, nil, 1, 2)
|
|
local specWarCorrosiveGunk = mod:NewSpecialWarningInterrupt(319070, false, nil, nil, 1, 2)--Spam cast. Even with Cd filter this may annoy users, off by default
|
|
--Notable Domina Venomblade
|
|
local specWarnBulwarkofMaldraxxus = mod:NewSpecialWarningMove(336451, "Tank", nil, nil, 1, 10)
|
|
--Notable Margrave Stradama Trash
|
|
local specWarnCallVenomfang = mod:NewSpecialWarningInterrupt(328338, "HasInterrupt", nil, nil, 1, 2)
|
|
--Unknown
|
|
local specWarnWonderGrow = mod:NewSpecialWarningInterrupt(328016, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnWonderGrowDispel = mod:NewSpecialWarningDispel(328015, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnJaggedSpines = mod:NewSpecialWarningDodge(320517, nil, nil, nil, 2, 2)
|
|
|
|
local timerMetamorphosis = mod:NewCastTimer(10, 322232, nil, nil, nil, 1)
|
|
|
|
--mod:GroupSpells(328016, 328015)--Group two wonder grows (they use diff spell Ids because they have diff icons, so it's clearer which is interrupt and which is dispel
|
|
|
|
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc
|
|
|
|
mod.vb.metaCast = 0--Disconnects or reloads or leaving/entering the zone when it's at a non 0 count will break timer accuracy
|
|
|
|
--function mod:RicochetingTarget(targetname, uId)
|
|
-- if not targetname then return end
|
|
-- warnRicochetingThrow:Show(targetname)
|
|
-- if targetname == UnitName("player") then
|
|
-- yellRicochetingThrow:Yell()
|
|
-- end
|
|
--end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if not self.Options.Enabled then return end
|
|
if not self:IsValidWarning(args.sourceGUID) then return end--Filter all casts done by mobs in combat with npcs/other mobs.
|
|
local spellId = args.spellId
|
|
if spellId == 328016 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnWonderGrow:Show(args.sourceName)
|
|
specWarnWonderGrow:Play("kickcast")
|
|
elseif spellId == 319070 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarCorrosiveGunk:Show(args.sourceName)
|
|
specWarCorrosiveGunk:Play("kickcast")
|
|
elseif spellId == 328338 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnCallVenomfang:Show(args.sourceName)
|
|
specWarnCallVenomfang:Play("kickcast")
|
|
elseif spellId == 328177 and self:AntiSpam(3, 4) then
|
|
warnFungistorm:Show()
|
|
elseif (spellId == 327584 or spellId == 327581) and self:AntiSpam(3, 6) then
|
|
warnBeckonSlime:Show()
|
|
elseif spellId == 330403 and self:AntiSpam(3, 2) then
|
|
specWarnWingBuffet:Show()
|
|
specWarnWingBuffet:Play("shockwave")
|
|
elseif spellId == 327233 and self:AntiSpam(3, 2) then
|
|
specWarnBelchPlague:Show()
|
|
specWarnBelchPlague:Play("shockwave")
|
|
elseif spellId == 318949 and self:AntiSpam(3, 2) then
|
|
specWarnFesteringBelch:Show()
|
|
specWarnFesteringBelch:Play("shockwave")
|
|
elseif spellId == 328986 and self:AntiSpam(3, 6) then
|
|
warnViolentDetonation:Show()
|
|
elseif spellId == 328475 and self:AntiSpam(3, 6) then
|
|
warnEnvelopingWebbing:Show()
|
|
-- elseif spellId == 272402 then
|
|
-- self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "RicochetingTarget", 0.1, 4)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 320517 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
|
|
specWarnJaggedSpines:Show()
|
|
specWarnJaggedSpines:Play("watchstep")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 328015 and self:IsValidWarning(args.destGUID) then
|
|
specWarnWonderGrowDispel:CombinedShow(1, args.destName)
|
|
specWarnWonderGrowDispel:ScheduleVoice(1, "dispelboss")
|
|
elseif spellId == 320072 and args:IsPlayer() and self:AntiSpam(3, 1) then
|
|
specWarnGTFO:Show(args.spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
-- elseif spellId == 328015 and args:IsDestTypePlayer() and self:CheckDispelFilter() and self:AntiSpam(3, 5) then
|
|
-- specWarnBestialWrath:Show(args.destName)
|
|
-- specWarnBestialWrath:Play("helpdispel")
|
|
elseif spellId == 320103 then--This may need valid warning filter too not sure yet
|
|
self.vb.metaCast = self.vb.metaCast + 1
|
|
if self.vb.metaCast == 1 then
|
|
timerMetamorphosis:Start()
|
|
end
|
|
elseif spellId == 336451 and self:IsValidWarning(args.destGUID) and args:IsDestTypeHostile() and self:AntiSpam(3, 5) then
|
|
specWarnBulwarkofMaldraxxus:Show()
|
|
specWarnBulwarkofMaldraxxus:Play("mobout")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 320103 then
|
|
self.vb.metaCast = self.vb.metaCast - 1
|
|
if self.vb.metaCast == 0 then
|
|
timerMetamorphosis:Stop()
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 200343 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|