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