local mod = DBM:NewMod("TheRookeryTrash", "DBM-Party-WarWithin", 3) local L = mod:GetLocalizedStrings() mod:SetRevision("20240820080631") --mod:SetModelID(47785) mod.isTrashMod = true mod.isTrashModBossFightAllowed = true mod:RegisterEvents( "SPELL_CAST_START 426893 450628 427323 427404 430013 427616 430754 423979 430805 430812 432959", "SPELL_CAST_SUCCESS 427260 430805 432959 426893 450628 427323 427404 430013 427616 430754 430179 423979 430812", "SPELL_INTERRUPT", "SPELL_AURA_APPLIED 430179 427260", -- "SPELL_AURA_APPLIED_DOSE", -- "SPELL_AURA_REMOVED", "UNIT_DIED" ) --TODO, more spells probably --[[ (ability.id = 426893 or ability.id = 450628 or ability.id = 427323 or ability.id = 427404 or ability.id = 430013 or ability.id = 427616 or ability.id = 430754 or ability.id = 423979 or ability.id = 430179 or ability.id = 430805 or ability.id = 430812 or ability.id = 432959) and (type = "begincast" or type = "cast") or ability.id = 427260 and type = "cast" or stoppedAbility.id = 430805 or stoppedAbility.id = 432959 --]] local warnEntropyShield = mod:NewCastAnnounce(450628, 3) local warnEnergizedBarrage = mod:NewCastAnnounce(427616, 3, nil, nil, "Tank")--Only warn tank by default since tank should aim it away from anyone else local warnVoidShell = mod:NewCastAnnounce(430754, 3, nil, nil, nil, nil, nil, 3) local warnAttractingShadows = mod:NewCastAnnounce(430812, 3, nil, nil, nil, nil, nil, 12) local specWarnBoundingVoid = mod:NewSpecialWarningDodge(426893, nil, nil, nil, 1, 2) local specWarnChargedBombardment = mod:NewSpecialWarningDodge(427323, nil, nil, nil, 1, 2) local specWarnLocalizedStorm = mod:NewSpecialWarningSpell(427404, nil, nil, nil, 1, 2)--Maybe change to Break LOS alert, needs more testing local specWarnThunderstrike = mod:NewSpecialWarningDodge(430013, nil, nil, nil, 1, 2) local specWarnImplosion = mod:NewSpecialWarningMoveAway(423979, nil, nil, nil, 1, 2) local yellImplosion = mod:NewShortYell(423979) local specWarnSeepingCorruption = mod:NewSpecialWarningMoveAway(430179, nil, nil, nil, 1, 2) local yellSeepingCorruption = mod:NewShortYell(430179) local specWarnSeepingCorruptionDispel = mod:NewSpecialWarningDispel(430179, "RemoveCurse", nil, nil, 1, 2) local specWarnEnrageRook = mod:NewSpecialWarningDispel(427260, "RemoveEnrage", nil, nil, 1, 2) local specWarnArcingVoid = mod:NewSpecialWarningInterrupt(430805, "HasInterrupt", nil, nil, 1, 2) local specWarnVoidVolley = mod:NewSpecialWarningInterrupt(432959, "HasInterrupt", nil, nil, 1, 2) --Almost all timers probably wrong now, but can't use public WCL to fix this since all logs short --Also, all of them were moved to success preemtively but if stops actually DO put any of these on CD, then the preemtive move actually broke timer local timerBoundingVoidCD = mod:NewCDNPTimer(10.1, 426893, nil, nil, nil, 3) local timerEntropyShieldCD = mod:NewCDNPTimer(25.2, 450628, nil, nil, nil, 5)--Single cast instance, poor sample local timerChargedBombardmentCD = mod:NewCDNPTimer(17.6, 427323, nil, nil, nil, 3) local timerLocalizedStormCD = mod:NewCDNPTimer(25.9, 427404, nil, nil, nil, 2) local timerThunderstrikeCD = mod:NewCDNPTimer(15.1, 430013, nil, nil, nil, 3) local timerEnergizedBarrageCD = mod:NewCDNPTimer(20, 427616, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerEnrageRookCD = mod:NewCDNPTimer(15, 427260, nil, nil, nil, 5, nil, DBM_COMMON_L.ENRAGE_ICON)--17-2 due to waiting for success local timerVoidShellCD = mod:NewCDNPTimer(18.7, 430754, nil, nil, nil, 5) local timerSeepingCorruptionCD = mod:NewCDNPTimer(25.2, 430179, nil, nil, nil, 3, nil, DBM_COMMON_L.CURSE_ICON) local timerImplosionCD = mod:NewCDNPTimer(15.5, 423979, nil, nil, nil, 3) local timerArcingVoidCD = mod:NewCDNPTimer(13.5, 430805, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerVoidVolleyCD = mod:NewCDNPTimer(15.6, 432959, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerAttractingShadowsCD = mod:NewCDNPTimer(20.2, 430812, nil, nil, nil, 2) --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 off interrupt --[[ function mod:CLTarget(targetname) if not targetname then return end if targetname == UnitName("player") then if self:AntiSpam(4, 5) then specWarnChainLightning:Show() specWarnChainLightning:Play("runout") end yellChainLightning:Yell() end end --]] function mod:SPELL_CAST_START(args) local spellId = args.spellId if not self:IsValidWarning(args.sourceGUID) then return end if spellId == 426893 then if self:AntiSpam(3, 2) then specWarnBoundingVoid:Show() specWarnBoundingVoid:Play("watchorb") end elseif spellId == 427323 then if self:AntiSpam(3, 2) then specWarnChargedBombardment:Show() specWarnChargedBombardment:Play("chargemove") end elseif spellId == 450628 then warnEntropyShield:Show() elseif spellId == 427404 then if self:AntiSpam(3, 4) then specWarnLocalizedStorm:Show() specWarnLocalizedStorm:Play("aesoon") end elseif spellId == 430013 then if self:AntiSpam(3, 2) then specWarnThunderstrike:Show() specWarnThunderstrike:Play("chargemove") end elseif spellId == 427616 then if self:AntiSpam(3, 5) then warnEnergizedBarrage:Show() end elseif spellId == 430754 then if self:AntiSpam(4, 6) then warnVoidShell:Show() warnVoidShell:Play("crowdcontrol") end elseif spellId == 423979 then if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnImplosion:Show() specWarnImplosion:Play("range5") yellImplosion:Yell() end elseif spellId == 430805 then if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnArcingVoid:Show(args.sourceName) specWarnArcingVoid:Play("kickcast") end elseif spellId == 432959 then --if self.Options.SpecWarn430805interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnVoidVolley:Show(args.sourceName) specWarnVoidVolley:Play("kickcast") --elseif self:AntiSpam(3, 7) then -- warnTempest:Show() --end elseif spellId == 430812 then warnAttractingShadows:Show() warnAttractingShadows:Play("pullin") end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if not self:IsValidWarning(args.sourceGUID) then return end if spellId == 427260 then--Doesn't go on CD until cast, so using stuns to stop it causes recast timerEnrageRookCD:Start(nil, args.sourceGUID) elseif spellId == 430805 then timerArcingVoidCD:Start(13.5, args.sourceGUID) elseif spellId == 432959 then timerVoidVolleyCD:Start(15.6, args.sourceGUID) elseif spellId == 426893 then timerBoundingVoidCD:Start(10.1, args.sourceGUID) elseif spellId == 450628 then timerEntropyShieldCD:Start(25.2, args.sourceGUID) elseif spellId == 427323 then timerChargedBombardmentCD:Start(17.6, args.sourceGUID) elseif spellId == 427404 then timerLocalizedStormCD:Start(25.9, args.sourceGUID) elseif spellId == 430013 then timerThunderstrikeCD:Start(15.1, args.sourceGUID) elseif spellId == 427616 then timerEnergizedBarrageCD:Start(20, args.sourceGUID) elseif spellId == 430754 then timerVoidShellCD:Start(18.7, args.sourceGUID) elseif spellId == 430179 then timerSeepingCorruptionCD:Start(25.2, args.sourceGUID) elseif spellId == 423979 then timerImplosionCD:Start(nil, args.sourceGUID) elseif spellId == 430812 then timerAttractingShadowsCD:Start(20.2, args.sourceGUID) end end function mod:SPELL_INTERRUPT(args) if not self.Options.Enabled then return end local spellId = args.extraSpellId if spellId == 430805 then timerArcingVoidCD:Start(13.5, args.sourceGUID) elseif spellId == 432959 then timerVoidVolleyCD:Start(15.6, args.sourceGUID) end end function mod:SPELL_AURA_APPLIED(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 430179 then --Always prio dispel over runout, even if on self cause can just dispel self if self.Options.SpecWarn430179dispel and self:CheckDispelFilter("curse") then specWarnSeepingCorruptionDispel:Show(args.destName) specWarnSeepingCorruptionDispel:Play("helpdispel") --Still do yell if args:IsPlayer() then yellSeepingCorruption:Yell() end elseif args:IsPlayer() then specWarnSeepingCorruption:Show() specWarnSeepingCorruption:Play("runout") yellSeepingCorruption:Yell() end elseif spellId == 427260 then specWarnEnrageRook:Show(args.destName) specWarnEnrageRook:Play("enrage") end end --mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 209801 then--Quartermaster Koratite timerBoundingVoidCD:Stop(args.destGUID) timerEntropyShieldCD:Stop(args.destGUID) elseif cid == 212786 then--Cursed Stormrider timerChargedBombardmentCD:Stop(args.destGUID) timerLocalizedStormCD:Stop(args.destGUID) elseif cid == 207186 then--Unruly Stormrook timerThunderstrikeCD:Stop(args.destGUID) timerEnergizedBarrageCD:Stop(args.destGUID) elseif cid == 214439 then--Corrupted Oracle timerVoidShellCD:Stop(args.destGUID) timerSeepingCorruptionCD:Stop(args.destGUID) elseif cid == 214419 then--Corrupted Rookguard timerImplosionCD:Stop(args.destGUID) elseif cid == 207199 then--Cursed Rook Tender timerEnrageRookCD:Stop(args.destGUID) elseif cid == 214421 then--Corrupted Thunderer timerArcingVoidCD:Stop(args.destGUID) timerAttractingShadowsCD:Stop(args.destGUID) elseif cid == 212793 then--Void Asscendant timerVoidVolleyCD:Stop() end end