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.

286 lines
13 KiB

local mod = DBM:NewMod("DHTTrash", "DBM-Party-Legion", 2)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240127063852")
--mod:SetModelID(47785)
mod:SetZone(1466)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 200630 200580 200642 200658 200768 198904 201226 201399 201839 225562",
"SPELL_CAST_SUCCESS 218755 204243 201272 201129 201361 201399",
"SPELL_SUMMON 198910",
"SPELL_AURA_APPLIED 225484 198904 204246 201839 201365",
"UNIT_DIED",
"CHAT_MSG_MONSTER_YELL"
)
--[[
(ability.id = 225562 or ability.id = 200630 or ability.id = 200580 or ability.id = 200642 or ability.id = 200658 or ability.id = 200768 or ability.id = 198904 or ability.id = 201226 or ability.id = 201399 or ability.id = 201839) and type = "begincast"
or (ability.id = 218755 or ability.id = 204243 or ability.id = 201272 or ability.id = 201129 or ability.id = 201361) and type = "cast"
or ability.id = 198910
or ability.id = 225484 and type = "applydebuff"
--]]
--TODO, Grievous Rip is lacking a cast event, probably needs UNIT_SPELLCAST
local warnSpewCorruption = mod:NewSpellAnnounce(218755, 2)
local warnMaddeningRoar = mod:NewSpellAnnounce(200580, 3)
local warnStarShower = mod:NewSpellAnnounce(200658, 3)
local warnBloodBomb = mod:NewSpellAnnounce(201272, 4)
local warnGrievousRip = mod:NewTargetNoFilterAnnounce(225484, 4, nil, false)--Packs of 3 exist taht cast it near at once but staggered, so can feel spammy but too spread to aggregate
local warnUnnervingScreech = mod:NewCastAnnounce(200630, 4)--High prio off internet
local warnTormentingEye = mod:NewCastAnnounce(204243, 4, 4.5)--High prio off internet
local warnBloodMeta = mod:NewCastAnnounce(225562, 4)--High prio off internet
local warnDreadInferno = mod:NewCastAnnounce(201399, 4)--High prio off internet
local specWarnPropellingCharge = mod:NewSpecialWarningDodge(200768, nil, nil, nil, 2, 2)
local specWarnRootBurst = mod:NewSpecialWarningDodge(201129, nil, nil, nil, 2, 2)
local specWarnVileMushroom = mod:NewSpecialWarningDodge(198910, nil, nil, nil, 2, 2)
local specWarnDreadInfernoFailed = mod:NewSpecialWarningMoveAway(201399, nil, nil, nil, 1, 2)
local yellDreadInferno = mod:NewYell(201399)
local specWarnBloodAssault = mod:NewSpecialWarningDefensive(201226, nil, nil, nil, 1, 2)
local specWarnUnnervingScreech = mod:NewSpecialWarningInterrupt(200630, "HasInterrupt", nil, nil, 1, 2)--High Priority
local specWarnDespair = mod:NewSpecialWarningInterrupt(200642, "HasInterrupt", nil, nil, 1, 2)
local specWarnTormentingEye = mod:NewSpecialWarningInterrupt(204243, "HasInterrupt", nil, nil, 1, 2)--High Priority
local specWarnBloodMeta = mod:NewSpecialWarningInterrupt(225562, "HasInterrupt", nil, nil, 1, 2)--High Priority
local specWarnDreadInferno = mod:NewSpecialWarningInterrupt(201399, "HasInterrupt", nil, nil, 1, 2)--High Priority
local specWarnCurseofIsolation = mod:NewSpecialWarningInterrupt(201839, "HasInterrupt", nil, nil, 1, 2)
local specWarnPoisonSpear = mod:NewSpecialWarningDispel(198904, "RemovePoison", nil, nil, 1, 2)
local specWarnTormentingFear = mod:NewSpecialWarningDispel(204246, "RemoveMagic", nil, nil, 1, 2)--Missed eye interrupt
local specWarnCurseofIsoDispel = mod:NewSpecialWarningDispel(201839, "RemoveCurse", nil, nil, 1, 2)--Missed Taintheart interrupt
local specWarnDarksoulDrain = mod:NewSpecialWarningDispel(201365, "RemoveDisease", nil, nil, 1, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(201123, nil, nil, nil, 1, 8)
local timerRP = mod:NewRPTimer(68)
local timerGrievousRipCD = mod:NewCDNPTimer(18, 225484, nil, nil, nil, 3)--Kind of imprecise without an actual cast event, but should be a good approx
local timerUnnervingScreechCD = mod:NewCDNPTimer(10.4, 200630, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerSpewCorruptionCD = mod:NewCDNPTimer(30.3, 218755, nil, nil, nil, 3)
local timerMaddeningRoarCD = mod:NewCDNPTimer(22.6, 200580, nil, nil, nil, 2)
local timerStarShowerCD = mod:NewCDNPTimer(20.7, 200658, nil, nil, nil, 2)
local timerPropellingChargeCD = mod:NewCDNPTimer(18.2, 200768, nil, nil, nil, 3)
local timerPoisonSpearCD = mod:NewCDNPTimer(18.2, 198904, nil, nil, nil, 3)--18.2-22
local timerTormentingEyeCD = mod:NewCDNPTimer(5.2, 204243, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerBloodBombCD = mod:NewCDNPTimer(15.7, 201272, nil, nil, nil, 2)
local timerBloodAssaultCD = mod:NewCDNPTimer(22.6, 201226, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerBloodMetaCD = mod:NewCDNPTimer(10.9, 225562, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerDreadInfernoCD = mod:NewCDNPTimer(15.8, 201399, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerCurseofIsolationCD = mod:NewCDNPTimer(15.8, 201839, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerRootBurstCD = mod:NewCDNPTimer(16.2, 201129, nil, nil, nil, 3)
local timerVileMushroomCD = mod:NewCDNPTimer(17, 198910, nil, nil, nil, 3)
local timerDarksoulBiteCD = mod:NewCDNPTimer(12.1, 201361, nil, nil, nil, 5)--12.1-18.2
mod.vb.trashRemaining = 5
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc, 7 off interrupt, 8 GTFO
function mod:ResetSecondBossRP()
self.vb.trashRemaining = 5
end
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
if not self:IsValidWarning(args.sourceGUID) then return end
local spellId = args.spellId
if spellId == 200630 then
timerUnnervingScreechCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn200630interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnUnnervingScreech:Show(args.sourceName)
specWarnUnnervingScreech:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnUnnervingScreech:Show()
end
elseif spellId == 225562 then
timerBloodMetaCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn225562interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnBloodMeta:Show(args.sourceName)
specWarnBloodMeta:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnBloodMeta:Show()
end
elseif spellId == 201399 then
timerDreadInfernoCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn201399interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDreadInferno:Show(args.sourceName)
specWarnDreadInferno:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnDreadInferno:Show()
end
elseif spellId == 200580 then
timerMaddeningRoarCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
warnMaddeningRoar:Show()
end
elseif spellId == 200642 then
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDespair:Show(args.sourceName)
specWarnDespair:Play("kickcast")
end
elseif spellId == 200658 then
timerStarShowerCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
warnStarShower:Show()
end
elseif spellId == 200768 then
timerPropellingChargeCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnPropellingCharge:Show()
specWarnPropellingCharge:Play("chargemove")
end
elseif spellId == 198904 then
timerPoisonSpearCD:Start(nil, args.sourceGUID)
elseif spellId == 201226 then
timerBloodAssaultCD:Start(nil, args.sourceGUID)
if self:IsTanking("player", nil, nil, true, args.sourceGUID) and self:AntiSpam(3, 5) then
specWarnBloodAssault:Show()
specWarnBloodAssault:Play("carefly")
end
elseif spellId == 201839 then
timerCurseofIsolationCD:Start(nil, args.sourceGUID)
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnCurseofIsolation:Show(args.sourceName)
specWarnCurseofIsolation:Play("kickcast")
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 218755 then
timerSpewCorruptionCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 6) then
warnSpewCorruption:Show()
end
elseif spellId == 204243 then
timerTormentingEyeCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn204243interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTormentingEye:Show(args.sourceName)
specWarnTormentingEye:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnTormentingEye:Show()
end
elseif spellId == 201272 then
timerBloodBombCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
warnBloodBomb:Show()
end
elseif spellId == 201399 and args:IsPlayer() then
specWarnDreadInfernoFailed:Show()
specWarnDreadInfernoFailed:Play("runout")
yellDreadInferno:Yell()
elseif spellId == 201129 then
timerRootBurstCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnRootBurst:Show()
specWarnRootBurst:Play("watchstep")
end
elseif spellId == 201361 then
timerDarksoulBiteCD:Start(nil, args.sourceGUID)
end
end
function mod:SPELL_SUMMON(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 198910 and self:AntiSpam(3, 2) then
timerVileMushroomCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnVileMushroom:Show()
specWarnVileMushroom:Play("watchstep")
end
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 225484 then
warnGrievousRip:Show(args.destName)
if self:AntiSpam(8, args.sourceGUID) then
timerGrievousRipCD:Start(nil, args.sourceGUID)
end
elseif spellId == 198904 then
if self:CheckDispelFilter("poison") and self:AntiSpam(3, 3) then
specWarnPoisonSpear:Show(args.destName)
specWarnPoisonSpear:Play("helpdispel")
end
elseif spellId == 204246 then
if self:CheckDispelFilter("magic") and self:AntiSpam(3, 3) then
specWarnTormentingFear:Show(args.destName)
specWarnTormentingFear:Play("helpdispel")
end
elseif spellId == 201839 then
if self:CheckDispelFilter("curse") and self:AntiSpam(3, 3) then
specWarnCurseofIsoDispel:Show(args.destName)
specWarnCurseofIsoDispel:Play("helpdispel")
end
elseif spellId == 201365 then
if self:CheckDispelFilter("disease") and self:AntiSpam(3, 3) then
specWarnDarksoulDrain:Show(args.destName)
specWarnDarksoulDrain:Play("helpdispel")
end
-- elseif spellId == 201123 and args:IsPlayer() and self:AntiSpam(3, 8) then
-- specWarnGTFO:Show(args.spellName)
-- specWarnGTFO:Play("watchfeet")
end
end
--mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 95772 then--frenzied-nightclaw
timerGrievousRipCD:Stop(args.destGUID)
elseif cid == 95769 then--mindshattered-screecher
timerUnnervingScreechCD:Stop(args.destGUID)
elseif cid == 95779 then--festerhide-grizzly
timerSpewCorruptionCD:Stop(args.destGUID)
timerMaddeningRoarCD:Stop(args.destGUID)
elseif cid == 95771 then--dreadsoul-ruiner
timerStarShowerCD:Stop(args.destGUID)
elseif cid == 95766 then--crazed-razorbeak
timerPropellingChargeCD:Stop(args.destGUID)
elseif cid == 99358 then--rotheart-dryad
timerPoisonSpearCD:Stop(args.destGUID)
elseif cid == 101991 then--nightmare-dweller
timerTormentingEyeCD:Stop(args.destGUID)
--Boss RP Timer Stuff
--"<13.29 01:20:51> [CLEU] UNIT_DIED##nil#Creature-0-4223-1466-16781-101991-000203D8A6#Nightmare Dweller#-1#false#nil#nil", -- [65]
--"<18.14 01:20:55> [UNIT_SPELLCAST_SUCCEEDED] Oakheart(100.0%-0.0%){Target:??} -Cancel Deep Roots- [[focus:Cast-3-4223-1466-16781-165953-000103D947:165953]]", -- [68]
--"<21.41 01:20:59> [DBM_Debug] ENCOUNTER_START event fired: 1837 Oakheart 23 5#nil", -- [73]
self.vb.trashRemaining = self.vb.trashRemaining - 1
if self.vb.trashRemaining == 0 then
timerRP:Start(8.1)
end
elseif cid == 100531 then--bloodtainted-fury
timerBloodBombCD:Stop(args.destGUID)
timerBloodAssaultCD:Stop(args.destGUID)
elseif cid == 100532 then--bloodtainted-burster#
timerBloodMetaCD:Stop(args.destGUID)
elseif cid == 100527 then--dreadfire-imp
timerDreadInfernoCD:Stop(args.destGUID)
elseif cid == 99366 then--taintheart-summoner
timerCurseofIsolationCD:Stop(args.destGUID)
elseif cid == 99360 then--Vilethorn Blossom
timerRootBurstCD:Stop(args.destGUID)
elseif cid == 99359 then--rotheart-keeper
timerVileMushroomCD:Stop(args.destGUID)
elseif cid == 100526 then--tormented-bloodseeker
timerDarksoulBiteCD:Stop(args.destGUID)
end
end
--"<21.73 01:19:30> [CHAT_MSG_MONSTER_YELL] Defilers... I can smell the Nightmare in your blood. Be gone from these woods or suffer nature's wrath!#Archdruid Glaidalis###Omegal##0#0##0#1578#nil#0#false#false#false#false", -- [64]
--"<23.25 01:19:32> [CHAT_MSG_MONSTER_YELL] Kill him! Protect the grove!#Druidic Preserver###Omegal##0#0##0#1579#nil#0#false#false#false#false", -- [65]
--"<24.56 01:19:33> [CLEU] UNIT_DIED##nil#Creature-0-4223-1466-16781-100403-000183D8A6#Druidic Preserver#-1#false#nil#nil", -- [68]
--"<29.81 01:19:38> [DBM_Debug] ENCOUNTER_START event fired
function mod:CHAT_MSG_MONSTER_YELL(msg)
if (msg == L.GlaidalisRP or msg:find(L.GlaidalisRP)) and self:LatencyCheck(1000) then
self:SendSync("firstBossRP")
end
end
function mod:OnSync(msg)
if msg == "firstBossRP" and self:AntiSpam(10, 9) then
timerRP:Start(8)
end
end