local mod = DBM:NewMod("BrackenhideHollowTrash", "DBM-Party-Dragonflight", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20230320030319") --mod:SetModelID(47785) mod.isTrashMod = true mod:RegisterEvents( "SPELL_CAST_START 382555 367500 388060 388046 382474 382787 374544 385029 383062 367503", "SPELL_CAST_SUCCESS 368287 383385 382435 384930", "SPELL_AURA_APPLIED 382555 383087 383399 385058 385827 384974 367484", -- "SPELL_AURA_APPLIED_DOSE 339528", -- "SPELL_AURA_REMOVED 339525", "SPELL_PERIODIC_DAMAGE 383399", "SPELL_PERIODIC_MISSED 383399" ) --TODO: can https://www.wowhead.com/ptr/spell=383385/rotting-surge can be stunned (but not interrupted) --TODO, can burst of decay be interrupted/stunned or target scanned? --TODO, Add https://www.wowhead.com/spell=382593/crushing-smash? --TODO, add https://www.wowhead.com/spell=382410/witherbolt interrupt warning? local warnBurstofDecay = mod:NewCastAnnounce(374544, 4)--Change to target scan? local warnHidiousCackle = mod:NewCastAnnounce(367500, 4) local warnScreech = mod:NewCastAnnounce(385029, 4) local warnDecayClaws = mod:NewCastAnnounce(382787, 4, nil, nil, "Tank|Healer") local warnSummonLashers = mod:NewCastAnnounce(383062, 2, nil, nil, "Tank") local warnWitheringContagion = mod:NewTargetAnnounce(383087, 3) local warnWitheringBurst = mod:NewTargetAnnounce(367503, 3) local warnStealth = mod:NewSpellAnnounce(384930, 3) local specWarnViolentWhirlwind = mod:NewSpecialWarningRun(388046, "Melee", nil, nil, 4, 2) local specWarnScentedMeat = mod:NewSpecialWarningRun(384974, nil, nil, nil, 4, 2) local specWarnViciousClawmangle = mod:NewSpecialWarningRun(367484, nil, nil, nil, 4, 2) local specWarnRagestorm = mod:NewSpecialWarningRun(382555, "Melee", nil, nil, 4, 2) local specWarnRagestormDispel = mod:NewSpecialWarningDispel(382555, "RemoveEnrage", nil, nil, 1, 2) local specWarnBloodyRage = mod:NewSpecialWarningDispel(385827, "RemoveEnrage", nil, nil, 1, 2) local specWarnWitheringPoison = mod:NewSpecialWarningDispel(385058, "RemovePoison", nil, nil, 1, 2) local specWarnWitheringContagion = mod:NewSpecialWarningMoveAway(383087, nil, nil, nil, 1, 2) local specWarnStinkBreath = mod:NewSpecialWarningDodge(388060, nil, nil, nil, 2, 2) local specWarnToxicTrap = mod:NewSpecialWarningDodge(368287, nil, nil, nil, 2, 2) local specWarnRottingSurge = mod:NewSpecialWarningDodge(383385, nil, nil, nil, 2, 2) local specWarnRotchantingTotem = mod:NewSpecialWarningSwitch(382435, "Dps", nil, nil, 1, 2) local yellWitheringContagion = mod:NewYell(383087) local specWarnWitheringBurst = mod:NewSpecialWarningYou(367503, nil, nil, nil, 1, 2) local yellWitheringBurst = mod:NewYell(367503) local specWarnHidiousCackle = mod:NewSpecialWarningInterrupt(367500, "HasInterrupt", nil, nil, 1, 2) local specWarnDecaySurge = mod:NewSpecialWarningInterrupt(382474, "HasInterrupt", nil, nil, 1, 2) local specWarnScreech = mod:NewSpecialWarningInterrupt(385029, "HasInterrupt", nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(383399, nil, nil, nil, 1, 8) --local timerDecayClawsCD = mod:NewCDTimer(9.7, 382787, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON) --local playerName = UnitName("player") --Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc, 7 gtfo function mod:BurstTarget(targetname) if not targetname then return end if targetname == UnitName("player") then if self:AntiSpam(4, 5) then specWarnWitheringBurst:Show() specWarnWitheringBurst:Play("targetyou") end yellWitheringBurst:Yell() else warnWitheringBurst:Show(targetname) end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if not self:IsValidWarning(args.sourceGUID) then return end if spellId == 382555 and self:AntiSpam(3, 1) then specWarnRagestorm:Show() specWarnRagestorm:Play("justrun") elseif spellId == 367500 then if self.Options.SpecWarn367500interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnHidiousCackle:Show(args.sourceName) specWarnHidiousCackle:Play("kickcast") elseif self:AntiSpam(3, 5) then warnHidiousCackle:Show() end elseif spellId == 382474 then if self.Options.SpecWarn382474interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnDecaySurge:Show(args.sourceName) specWarnDecaySurge:Play("kickcast") --elseif self:AntiSpam(3, 5) then -- warnHidiousCackle:Show() end elseif spellId == 388060 and self:AntiSpam(3, 2) then specWarnStinkBreath:Show() specWarnStinkBreath:Play("shockwave") elseif spellId == 388046 and self:AntiSpam(3, 1) then specWarnViolentWhirlwind:Show() specWarnViolentWhirlwind:Play("justrun") elseif spellId == 382787 then -- timerDecayClawsCD:Start() if self:AntiSpam(3, 5) then warnDecayClaws:Show() end elseif spellId == 374544 and self:AntiSpam(3, 5) then warnBurstofDecay:Show() elseif spellId == 385029 and self:AntiSpam(3, 5) then if self.Options.SpecWarn385029interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnScreech:Show(args.sourceName) specWarnScreech:Play("kickcast") elseif self:AntiSpam(3, 5) then warnScreech:Show() end elseif spellId == 383062 and self:AntiSpam(3, 5) then warnSummonLashers:Show() elseif spellId == 367503 then self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "BurstTarget", 0.1, 8) end end function mod:SPELL_CAST_SUCCESS(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 368287 and self:AntiSpam(3, 2) then specWarnToxicTrap:Show() specWarnToxicTrap:Play("watchstep") elseif spellId == 383385 and self:AntiSpam(3, 2) then specWarnRottingSurge:Show() specWarnRottingSurge:Play("watchstep") elseif spellId == 382435 and self:AntiSpam(3, 5) then specWarnRotchantingTotem:Show() specWarnRotchantingTotem:Play("attacktotem") elseif spellId == 384930 and self:AntiSpam(3, 5) then warnStealth:Show() end end function mod:SPELL_AURA_APPLIED(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 382555 and self:AntiSpam(3, 3) then specWarnRagestormDispel:Show(args.destName) specWarnRagestormDispel:Play("enrage") elseif spellId == 385827 and self:AntiSpam(3, 3) then specWarnBloodyRage:Show(args.destName) specWarnBloodyRage:Play("enrage") elseif spellId == 383087 then warnWitheringContagion:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnWitheringContagion:Show() specWarnWitheringContagion:Play("range5") yellWitheringContagion:Yell() end elseif spellId == 383399 and args:IsPlayer() and self:AntiSpam(3, 7) then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") elseif spellId == 385058 and args:IsDestTypePlayer() and self:CheckDispelFilter("poison") and self:AntiSpam(3, 3) then specWarnWitheringPoison:Show(args.destName) specWarnWitheringPoison:Play("helpdispel") elseif spellId == 384974 and args:IsPlayer() and self:AntiSpam(4, 1) then specWarnScentedMeat:Show() specWarnScentedMeat:Play("justrun") elseif spellId == 367484 and args:IsPlayer() and self:AntiSpam(4, 1) then specWarnViciousClawmangle:Show() specWarnViciousClawmangle:Play("justrun") end end --mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED --[[ function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 339525 and args:IsPlayer() then end end --]] function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 383399 and destGUID == UnitGUID("player") and self:AntiSpam(2, 7) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE