|
|
|
|
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
|