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.
287 lines
13 KiB
287 lines
13 KiB
local mod = DBM:NewMod("DHTTrash", "DBM-Party-Legion", 2)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240808043723")
|
|
--mod:SetModelID(47785)
|
|
mod:SetZone(1466)
|
|
|
|
mod.isTrashMod = true
|
|
mod.isTrashModBossFightAllowed = 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
|
|
|