local mod = DBM:NewMod("KingsRestTrash", "DBM-Party-BfA", 3) local L = mod:GetLocalizedStrings() mod:SetRevision("20240808043723") --mod:SetModelID(47785) mod.isTrashMod = true mod.isTrashModBossFightAllowed = true mod:RegisterEvents( "SPELL_CAST_START 270003 269973 270923 270889 270901 270084 270872 270293 270284 270492 270482 270514 270507", "SPELL_AURA_APPLIED 269976 270927 270920 270865 271640 271561 269936", "SPELL_AURA_REMOVED 271640", "SPELL_CAST_SUCCESS 270500 270497 270930", "CHAT_MSG_RAID_BOSS_EMOTE", "UNIT_SPELLCAST_SUCCEEDED" ) --TODO, target scan Deadeye Shot? --TODO, target scan Poison Barrage? --TODO, verify Wail of Mourning event, not sure if applied or start local warnAxeBarrage = mod:NewCastAnnounce(270084, 4) local warnAxeShadowWhirl = mod:NewCastAnnounce(270872, 3) local warnBloodedLeap = mod:NewCastAnnounce(270482, 3) local warnEntomb = mod:NewTargetNoFilterAnnounce(267702, 3) local warnPoisonBarrage = mod:NewTargetAnnounce(270507, 4) local warnPoolofDarkness = mod:NewSpellAnnounce(272014, 3) local specWarnWailofMourning = mod:NewSpecialWarningSpell(271561, "Healer", nil, nil, 2, 2) local specWarnSupressionSlam = mod:NewSpecialWarningDodge(270003, nil, nil, 2, 2, 2) local specWarnPurificationStrike = mod:NewSpecialWarningDodge(270293, "Melee", nil, nil, 1, 2) local specWarnPurificationBeam = mod:NewSpecialWarningDodge(270284, nil, nil, nil, 2, 8) local specWarnGroundCrush = mod:NewSpecialWarningDodge(270514, nil, nil, nil, 2, 2) local specWarnDarkShot = mod:NewSpecialWarningDodge(270930, nil, nil, nil, 2, 2) local specWarnDeathlyChill = mod:NewSpecialWarningInterrupt(269973, "HasInterrupt", nil, nil, 1, 2) local specWarnShadowBolt = mod:NewSpecialWarningInterrupt(270923, "HasInterrupt", nil, nil, 1, 2) local specWarnInduceRegeneration = mod:NewSpecialWarningInterrupt(270901, "HasInterrupt", nil, nil, 1, 2) local specWarnHex = mod:NewSpecialWarningInterrupt(270492, "HasInterrupt", nil, nil, 1, 2) local specWarnBladestorm = mod:NewSpecialWarningRun(270927, nil, nil, nil, 4, 2) local specWarnChannelLighting = mod:NewSpecialWarningRun(270889, nil, nil, nil, 4, 2) local specWarnSeduction = mod:NewSpecialWarningDispel(270920, "RemoveMagic", nil, 2, 1, 2) local specWarnAncestralFury = mod:NewSpecialWarningDispel(269976, "RemoveEnrage", nil, 2, 1, 2) local specWarnHiddenBladeDispel = mod:NewSpecialWarningDispel(270865, "RemovePoison", nil, nil, 1, 2) local specWarnHuntingLeap = mod:NewSpecialWarningYou(270500, nil, nil, nil, 1, 2) local yellHuntingLeap = mod:NewYell(270500) local specWarnEntomb = mod:NewSpecialWarningYou(267702, nil, nil, nil, 1, 2) local yellEntomb = mod:NewYell(267702) local specWarnDarkRevelation = mod:NewSpecialWarningMoveAway(271640, nil, nil, nil, 1, 2) local yellDarkRevelation = mod:NewYell(271640) local yellDarkRevelationFades = mod:NewShortFadesYell(271640) local specWarnPoisonBarrage = mod:NewSpecialWarningMoveAway(270507, nil, nil, nil, 1, 2) local yellPoisonBarrage = mod:NewYell(270507) local yellPoisonBarrageFades = mod:NewShortFadesYell(270507) local specWarnFixate = mod:NewSpecialWarningRun(269936, nil, nil, nil, 4, 2) local yellFixate = mod:NewYell(269936, nil, false) local specWarnHiddenBlade = mod:NewSpecialWarningMoveAway(270865, nil, nil, nil, 1, 2) local specWarnHealingTideTotem = mod:NewSpecialWarningSwitch(143474, "-Healer", nil, nil, 1, 2) function mod:BarrageTarget(targetname) if not targetname then return end if targetname == UnitName("player") and self:AntiSpam(4, 8) then specWarnPoisonBarrage:Show() specWarnPoisonBarrage:Play("runout") yellPoisonBarrage:Yell() yellPoisonBarrageFades:Countdown(4) else warnPoisonBarrage:Show(targetname) end end function mod:SPELL_CAST_START(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 270003 and self:AntiSpam(3, 1) then specWarnSupressionSlam:Show() specWarnSupressionSlam:Play("shockwave") elseif spellId == 269973 and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnDeathlyChill:Show(args.sourceName) specWarnDeathlyChill:Play("kickcast") elseif spellId == 270923 and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnShadowBolt:Show(args.sourceName) specWarnShadowBolt:Play("kickcast") elseif spellId == 270901 and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnInduceRegeneration:Show(args.sourceName) specWarnInduceRegeneration:Play("kickcast") elseif spellId == 270492 and self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnHex:Show(args.sourceName) specWarnHex:Play("kickcast") elseif spellId == 270889 and self:AntiSpam(3, 6) then specWarnChannelLighting:Show() specWarnChannelLighting:Play("justrun") elseif spellId == 270084 and self:AntiSpam(4, 2) then warnAxeBarrage:Show() elseif spellId == 270872 and self:AntiSpam(4, 3) then warnAxeShadowWhirl:Show() elseif spellId == 270482 and self:AntiSpam(4, 4) then warnBloodedLeap:Show() elseif spellId == 270293 and self:AntiSpam(3, 5) then specWarnPurificationStrike:Show() specWarnPurificationStrike:Play("watchstep") elseif spellId == 270284 then specWarnPurificationBeam:Show() specWarnPurificationBeam:Play("behindmob") elseif spellId == 270514 and self:AntiSpam(3, 5) then specWarnGroundCrush:Show() specWarnGroundCrush:Play("watchstep") elseif spellId == 270507 then self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "BarrageTarget", 0.1, 8) end end function mod:SPELL_AURA_APPLIED(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 269976 then specWarnAncestralFury:Show(args.destName) specWarnAncestralFury:Play("helpdispel") elseif spellId == 270927 and self:AntiSpam(3, 6) then specWarnBladestorm:Show() specWarnBladestorm:Play("justrun") elseif spellId == 270920 and self:CheckDispelFilter("magic") then specWarnSeduction:Show(args.destName) specWarnSeduction:Play("helpdispel") elseif spellId == 270865 and args:IsDestTypePlayer() and self:AntiSpam(3, args.destName) then if args:IsPlayer() then specWarnHiddenBlade:Show() specWarnHiddenBlade:Play("runout") elseif self:CheckDispelFilter("poison") then specWarnHiddenBladeDispel:Show(args.destName) specWarnHiddenBladeDispel:Play("helpdispel") end elseif spellId == 271640 and args:IsPlayer() then specWarnDarkRevelation:Show() specWarnDarkRevelation:Play("runout") yellDarkRevelation:Yell() yellDarkRevelationFades:Countdown(10) elseif spellId == 269936 and args:IsPlayer() and self:AntiSpam(3, 9) then specWarnFixate:Show() specWarnFixate:Play("justrun") yellFixate:Yell() elseif spellId == 271561 and self:AntiSpam(4, 7) then specWarnWailofMourning:Show() specWarnWailofMourning:Play("aesoon") end end function mod:SPELL_AURA_REMOVED(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 271640 and args:IsPlayer() then yellDarkRevelationFades:Cancel() end end function mod:SPELL_CAST_SUCCESS(args) if not self.Options.Enabled then return end local spellId = args.spellId if spellId == 270500 and args:IsPlayer() then specWarnHuntingLeap:Show() specWarnHuntingLeap:Play("runaway") yellHuntingLeap:Yell() elseif spellId == 270497 then specWarnHealingTideTotem:Show() specWarnHealingTideTotem:Play("attacktotem") elseif spellId == 270930 and self:AntiSpam(3, 5) then specWarnDarkShot:Show() specWarnDarkShot:Play("watchstep") end end --Same time as SPELL_CAST_START but has target information function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, _, _, _, targetname) if msg:find("spell:267702") then if targetname and self:AntiSpam(5, targetname) then if targetname == UnitName("player") then specWarnEntomb:Show() specWarnEntomb:Play("targetyou") yellEntomb:Yell() else warnEntomb:Show(targetname) end end end end function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId) if spellId == 272014 then self:SendSync("Pool") end end function mod:OnSync(msg) if msg == "Pool" and self:AntiSpam(4, 5) then warnPoolofDarkness:Show() end end