local mod = DBM:NewMod("AraKaraTrash", "DBM-Party-WarWithin", 6) local L = mod:GetLocalizedStrings() mod:SetRevision("20240818054948") --mod:SetModelID(47785) mod.isTrashMod = true mod.isTrashModBossFightAllowed = true mod:RegisterEvents( "SPELL_CAST_START 434824 434802 438877 436322 438826 448248 453161 432967 433841 433845", "SPELL_CAST_SUCCESS 434802 434793 438622 448248 433841", "SPELL_INTERRUPT", -- "SPELL_AURA_APPLIED", -- "SPELL_AURA_APPLIED_DOSE", -- "SPELL_AURA_REMOVED", "UNIT_DIED" ) --[[ (ability.id = 438826 or ability.id = 434252 or ability.id = 433845 or ability.id = 433841 or ability.id = 453161 or ability.id = 434824 or ability.id = 438877 or ability.id = 448248 or ability.id = 434802 or ability.id = 436322 or ability.id = 432967) and (type = "begincast" or type = "cast") or (ability.id = 438622 or ability.id = 434793) and type = "cast" or (stoppedAbility.id = 438622 or stoppedAbility.id = 434793 or stoppedAbility.id = 438826 or stoppedAbility.id = 434252 or stoppedAbility.id = 433845 or stoppedAbility.id = 433841 or stoppedAbility.id = 453161 or stoppedAbility.id = 434824 or stoppedAbility.id = 438877 or stoppedAbility.id = 448248 or stoppedAbility.id = 434802 or stoppedAbility.id = 436322 or stoppedAbility.id = 432967) or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] local warnHorrifyingshrill = mod:NewCastAnnounce(434802, 4)--High Prio Off interrupt local warnRadiantBarrage = mod:NewCastAnnounce(434793, 4)--High Prio Off interrupt local warnVenomVolley = mod:NewCastAnnounce(433841, 4)--High Prio Off interrupt local warnAlarmShill = mod:NewCastAnnounce(432967, 4, nil, nil, nil, nil, nil, 2) local warnToxicRupture = mod:NewSpellAnnounce(438622, 4, nil, "Melee") local warnCalloftheBrood = mod:NewSpellAnnounce(438877, 3) local warnPoisonousCloud = mod:NewSpellAnnounce(438826, 3) local specWarnWebSpray = mod:NewSpecialWarningDodge(434824, nil, nil, nil, 2, 2) local specWarnImpale = mod:NewSpecialWarningDodge(453161, nil, nil, nil, 2, 2) local specWarnEruptingWebs = mod:NewSpecialWarningDodge(433845, nil, nil, nil, 2, 2) --local yellChainLightning = mod:NewYell(387127) --local specWarnStormshield = mod:NewSpecialWarningDispel(386223, "MagicDispeller", nil, nil, 1, 2) local specWarnHorrifyingShrill = mod:NewSpecialWarningInterrupt(434802, "HasInterrupt", nil, nil, 1, 2)--High Prio local specWarnRadiantBarrage = mod:NewSpecialWarningInterrupt(434793, "HasInterrupt", nil, nil, 1, 2)--High Prio local specWarnPoisonBolt = mod:NewSpecialWarningInterrupt(436322, "HasInterrupt", nil, nil, 1, 2)--High Prio (no CD timer, it's recast out of spell lockout regardless local specWarnRevoltingVolley = mod:NewSpecialWarningInterrupt(448248, "HasInterrupt", nil, nil, 1, 2) local specWarnVenomVolley = mod:NewSpecialWarningInterrupt(433841, "HasInterrupt", nil, nil, 1, 2)--High Prio local timerWebSprayCD = mod:NewCDNPTimer(7, 434824, nil, nil, nil, 3)--7-8.2 from last cast finish/kick local timerHorrifyingShrillCD = mod:NewCDNPTimer(13.3, 434802, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--13.3-15.5 from last cast finish/kick local timerRadiantBarrageCD = mod:NewCDNPTimer(16.8, 434793, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerCalloftheBroodCD = mod:NewCDNPTimer(26.6, 438877, nil, nil, nil, 1) local timerPoisonousCloudCD = mod:NewCDNPTimer(15.3, 438826, nil, nil, nil, 3)--15.3-24.7 local timerRevoltingVolleyCD = mod:NewCDNPTimer(18.3, 448248, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerImpaleCD = mod:NewCDNPTimer(14.5, 453161, nil, nil, nil, 3) local timerVenomVolleyCD = mod:NewCDNPTimer(18.2, 433841, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerEruptingWebsCD = mod:NewCDNPTimer(18.1, 433845, nil, nil, nil, 3) --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 == 434824 then timerWebSprayCD:Start(nil, args.sourceGUID) if self:AntiSpam(3, 2) then specWarnWebSpray:Show() specWarnWebSpray:Play("shockwave") end elseif spellId == 434802 then if self.Options.SpecWarn434802interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnHorrifyingShrill:Show(args.sourceName) specWarnHorrifyingShrill:Play("kickcast") elseif self:AntiSpam(3, 7) then warnHorrifyingshrill:Show() end elseif spellId == 438877 then warnCalloftheBrood:Show() timerCalloftheBroodCD:Start(26.6, args.sourceGUID)--Ok to start here, Nakt can't be interrupted or CCed elseif spellId == 436322 then --Even though high priorty, no off interrupt announce due to fact it'll be recast every 3-6 (based on spell lockout) --We do not want to spam users in this way. By Quazii's SS, it's high prio but only if you can spare an interrupt CD for it. if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnPoisonBolt:Show(args.sourceName) specWarnPoisonBolt:Play("kickcast") end elseif spellId == 438826 then warnPoisonousCloud:Show() timerPoisonousCloudCD:Start(15.3, args.sourceGUID) elseif spellId == 448248 then if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnRevoltingVolley:Show(args.sourceName) specWarnRevoltingVolley:Play("kickcast") end elseif spellId == 453161 then timerImpaleCD:Start(14.5, args.sourceGUID) if self:AntiSpam(3, 2) then specWarnImpale:Show() specWarnImpale:Play("shockwave") end elseif spellId == 432967 and self:AntiSpam(5, 6) then warnAlarmShill:Show() warnAlarmShill:Play("crowdcontrol") elseif spellId == 433841 then if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnVenomVolley:Show(args.sourceName) specWarnVenomVolley:Play("kickcast") elseif self:AntiSpam(3, 7) then warnVenomVolley:Show() end elseif spellId == 433845 then timerEruptingWebsCD:Start(18.1, args.sourceGUID) if self:AntiSpam(3, 2) then specWarnEruptingWebs:Show() specWarnEruptingWebs:Play("watchstep") end end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if not self:IsValidWarning(args.sourceGUID) then return end if spellId == 434802 then timerHorrifyingShrillCD:Start(13.3, args.sourceGUID) elseif spellId == 434793 then if self.Options.SpecWarn434793interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnRadiantBarrage:Show(args.sourceName) specWarnRadiantBarrage:Play("kickcast") elseif self:AntiSpam(3, 7) then warnRadiantBarrage:Show() end timerRadiantBarrageCD:Start(16.8, args.sourceGUID) elseif spellId == 438622 and self:AntiSpam(3, 6) then warnToxicRupture:Show() elseif spellId == 448248 then timerRevoltingVolleyCD:Start(18.3, args.sourceGUID) elseif spellId == 433841 then timerVenomVolleyCD:Start(18.2, args.sourceGUID) end end function mod:SPELL_INTERRUPT(args) if args.extraSpellId == 434802 then timerHorrifyingShrillCD:Start(13.3, args.sourceGUID) elseif args.extraSpellId == 448248 then timerRevoltingVolleyCD:Start(18.3, args.sourceGUID) elseif args.extraSpellId == 433841 then timerVenomVolleyCD:Start(18.2, args.sourceGUID) end end --[[ function mod:SPELL_AURA_APPLIED(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 395035 then end end --mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED --]] function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 217531 then--Ixin timerWebSprayCD:Stop(args.destGUID) timerHorrifyingShrillCD:Stop(args.destGUID) elseif cid == 218324 then--Nakt timerWebSprayCD:Stop(args.destGUID) timerCalloftheBroodCD:Stop(args.destGUID) elseif cid == 217533 then--Atik timerWebSprayCD:Stop(args.destGUID) timerPoisonousCloudCD:Stop(args.destGUID) elseif cid == 216293 then--Trilling Attendant timerRadiantBarrageCD:Stop(args.destGUID) elseif cid == 223253 then--Bloodstained Webmage timerRevoltingVolleyCD:Stop(args.destGUID) elseif cid == 216338 then--Hulking Bodyguard timerImpaleCD:Stop(args.destGUID) elseif cid == 216364 then--Blood Overseer timerVenomVolleyCD:Stop(args.destGUID) timerEruptingWebsCD:Stop(args.destGUID) end end