You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
7.7 KiB

local mod = DBM:NewMod("JadeTempleTrash", "DBM-Party-MoP", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20231026112110")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 398300 395859 397899 397881 397889 396001 395872 396073 396018 397931 114646 397914 397878",
"SPELL_AURA_APPLIED 396020 396018",
-- "SPELL_AURA_APPLIED_DOSE",
-- "SPELL_AURA_REMOVED",
"UNIT_DIED",
"UNIT_SPELLCAST_SUCCEEDED_UNFILTERED"
)
--[[
(ability.id = 395872 or ability.id = 395859 or ability.id = 397914 or ability.id = 397889 or ability.id = 398300) and type = "begincast"
--]]
--TODO, add https://www.wowhead.com/spell=110125/shattered-resolve when i better understand if ground stuff is on applied or removed
local warnSurgingDeluge = mod:NewSpellAnnounce(397881, 2)
local warnTidalburst = mod:NewCastAnnounce(397889, 3)
local warnHauntingScream = mod:NewCastAnnounce(395859, 4)
local warnSleepySililoquy = mod:NewCastAnnounce(395872, 3)
local warnCatNap = mod:NewCastAnnounce(396073, 3)
local warnFitofRage = mod:NewCastAnnounce(396018, 3)
local warnDefilingMists = mod:NewCastAnnounce(397914, 3)
local warnHauntingGaze = mod:NewCastAnnounce(114646, 3, nil, nil, "Tank|Healer")
local warnDarkClaw = mod:NewCastAnnounce(397931, 4, nil, nil, "Tank|Healer")
local warnGoldenBarrier = mod:NewTargetNoFilterAnnounce(396020, 2)
local specWarnTaintedRipple = mod:NewSpecialWarningMoveTo(397878, nil, nil, nil, 2, 13)
local specWarnFlamesofDoubt = mod:NewSpecialWarningDodge(398300, nil, nil, nil, 2, 2)
local specWarnLegSweep = mod:NewSpecialWarningDodge(397899, nil, nil, nil, 2, 2)
local specWarnTerritorialDisplay = mod:NewSpecialWarningDodge(396001, nil, nil, nil, 2, 2)
local specWarnShatterResolve = mod:NewSpecialWarningDodge(110125, nil, nil, nil, 2, 2)
--local yellConcentrateAnima = mod:NewYell(339525)
--local yellConcentrateAnimaFades = mod:NewShortFadesYell(339525)
local specWarnFitOfRage = mod:NewSpecialWarningDispel(396018, "RemoveEnrage", nil, nil, 1, 2)
local specWarnHauntingScream = mod:NewSpecialWarningInterrupt(395859, "HasInterrupt", nil, nil, 1, 2)
local specWarnSleepySililoquy = mod:NewSpecialWarningInterrupt(395872, "HasInterrupt", nil, nil, 1, 2)
local specWarnDefilingMists = mod:NewSpecialWarningInterrupt(397914, "HasInterrupt", nil, nil, 1, 2)
local specWarnTidalburst = mod:NewSpecialWarningInterrupt(397889, "HasInterrupt", nil, nil, 1, 2)
local timerTaintedRippleCD = mod:NewCDNPTimer(14.5, 397878, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
local timerTidalburstCD = mod:NewCDNPTimer(16.6, 397889, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerDarkClawCD = mod:NewCDNPTimer(9.7, 397931, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--9.7-14.5
local timerHauntingScreamCD = mod:NewCDNPTimer(18.2, 395859, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerSleepySililoquyCD = mod:NewCDNPTimer(10.9, 395872, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--10.9-12
local timerFlamesofDoubtCD = mod:NewCDNPTimer(15.3, 398300, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
local timerDefilingMistsCD = mod:NewCDNPTimer(10.9, 397914, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_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 off interrupt
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if not self:IsValidWarning(args.sourceGUID) then return end
if spellId == 398300 then
timerFlamesofDoubtCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnFlamesofDoubt:Show()
specWarnFlamesofDoubt:Play("shockwave")
end
elseif spellId == 397899 and self:AntiSpam(3, 2) then
specWarnLegSweep:Show()
specWarnLegSweep:Play("watchstep")
elseif spellId == 396001 and self:AntiSpam(3, 2) then
specWarnTerritorialDisplay:Show()
specWarnTerritorialDisplay:Play("watchstep")
elseif spellId == 395859 then
timerHauntingScreamCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn395859interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHauntingScream:Show(args.sourceName)
specWarnHauntingScream:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnHauntingScream:Show()
end
elseif spellId == 395872 then
timerSleepySililoquyCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn395872interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnSleepySililoquy:Show(args.sourceName)
specWarnSleepySililoquy:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnSleepySililoquy:Show()
end
elseif spellId == 397881 and self:AntiSpam(3, 6) then--Basically de-emphasized dodge warnings but using diff antispam so they don't squelch emphasized dodge warnings
warnSurgingDeluge:Show()
elseif spellId == 397889 then
timerTidalburstCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn397889interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTidalburst:Show(args.sourceName)
specWarnTidalburst:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnTidalburst:Show()
end
elseif spellId == 397914 then
timerDefilingMistsCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn397914interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDefilingMists:Show(args.sourceName)
specWarnDefilingMists:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnDefilingMists:Show()
end
elseif spellId == 396073 and self:AntiSpam(3, 5) then
warnCatNap:Show()
elseif spellId == 396018 and self:AntiSpam(3, 5) then
warnFitofRage:Show()
elseif spellId == 397931 then
timerDarkClawCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnDarkClaw:Show()
end
elseif spellId == 114646 and self:AntiSpam(3, 5) then
warnHauntingGaze:Show()
elseif spellId == 397878 then
timerTaintedRippleCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
specWarnTaintedRipple:Show(DBM_COMMON_L.BREAK_LOS)
specWarnTaintedRipple:Play("breaklos")
end
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 396020 then
warnGoldenBarrier:Show(args.destName)
elseif spellId == 396018 and self:AntiSpam(3, 3) then
specWarnFitOfRage:Show(args.destName)
specWarnFitOfRage:Play("enrage")
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:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 200126 then--Fallen Waterspeaker
timerTidalburstCD:Stop(args.destGUID)
elseif cid == 59555 then--Haunting Sha
timerHauntingScreamCD:Stop(args.destGUID)
elseif cid == 59546 then--The Talking Fish
timerSleepySililoquyCD:Stop(args.destGUID)
elseif cid == 200387 then--Shambling Infester
timerFlamesofDoubtCD:Stop(args.destGUID)
elseif cid == 200137 then--Depraved mistweaver
timerDefilingMistsCD:Stop(args.destGUID)
elseif cid == 57109 or cid == 65362 then--Minion of Doubt
timerDarkClawCD:Stop(args.destGUID)
elseif cid == 59873 then--Corrupted Living Water
timerTaintedRippleCD:Stop(args.destGUID)
end
end
function mod:UNIT_SPELLCAST_SUCCEEDED_UNFILTERED(uId, _, spellId)
if spellId == 397928 and self:AntiSpam(3, 2) then
specWarnShatterResolve:Show()
specWarnShatterResolve:Play("watchstep")
end
end