if ( DBM : GetTOC ( ) < 100200 ) then return end --DO NOT DELETE DO NOT DELETE DO NOT DELETE. We don't want this module loading in wod classic (if that happens heh)
local mod = DBM : NewMod ( " EverBloomTrash " , " DBM-Party-WoD " , 5 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20240412075414 " )
--mod:SetModelID(47785)
mod : SetZone ( 1279 )
mod.isTrashMod = true
mod : RegisterEvents (
" SPELL_CAST_START 164965 165213 169657 169445 164887 169494 169839 426845 169840 426974 " ,
" SPELL_CAST_SUCCESS 165213 172578 165123 426500 427223 " ,
" SPELL_INTERRUPT " ,
" SPELL_AURA_APPLIED 164965 169658 165123 169495 426500 " ,
" UNIT_DIED "
)
--[[
( ability.id = 164965 or ability.id = 165213 or ability.id = 169657 or ability.id = 169445 or ability.id = 164887 or ability.id = 169494 or ability.id = 169839 or ability.id = 426845 or ability.id = 169840 or ability.id = 426974 ) and type = " begincast "
or ( ability.id = 165213 or ability.id = 172578 or ability.id = 165123 or ability.id = 426500 or ability.id = 427223 ) and type = " cast "
--]]
local warnPoisonousClaws = mod : NewSpellAnnounce ( 169657 , 3 , nil , " Tank " )
local warnSpatialDisruption = mod : NewSpellAnnounce ( 426974 , 2 )
local warnEnragedGrowth = mod : NewCastAnnounce ( 165213 , 4 )
local warnChokingVines = mod : NewCastAnnounce ( 164965 , 3 )
local warnNoxiousEruption = mod : NewCastAnnounce ( 169445 , 3 )
local warnHealingWaters = mod : NewCastAnnounce ( 164887 , 3 )
local warnVenomBurst = mod : NewTargetNoFilterAnnounce ( 165123 , 4 )
local warnGnarledroots = mod : NewTargetNoFilterAnnounce ( 426500 , 3 )
local specWarnBoundingWhirl = mod : NewSpecialWarningSpell ( 172578 , " Melee " , nil , nil , 4 , 2 )
local specWarnCinderboltSalvo = mod : NewSpecialWarningSpell ( 427223 , nil , nil , nil , 2 , 2 )
--local specWarnSpatialDisruption = mod:NewSpecialWarningSpell(426974, nil, nil, nil, 2, 13)
local specWarnColdFusion = mod : NewSpecialWarningDodge ( 426845 , nil , nil , nil , 2 , 2 )
local specWarnVenomBurst = mod : NewSpecialWarningMoveAway ( 165123 , nil , nil , nil , 1 , 2 )
local yellnVenomBurst = mod : NewYell ( 165123 )
local specWarnEnragedGrowth = mod : NewSpecialWarningInterrupt ( 165213 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnChokingVines = mod : NewSpecialWarningInterrupt ( 164965 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnHealingWaters = mod : NewSpecialWarningInterrupt ( 164887 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnPyroblast = mod : NewSpecialWarningInterrupt ( 169839 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnFrostbolt = mod : NewSpecialWarningInterrupt ( 169840 , false , nil , nil , 1 , 2 )
local specWarnChokingVinesDispel = mod : NewSpecialWarningDispel ( 164965 , " RemoveMagic " , nil , nil , 1 , 2 )
local specWarnVenomBurstDispel = mod : NewSpecialWarningDispel ( 165123 , " RemovePoison " , nil , nil , 1 , 2 )
--local specWarnDreadpetalToxinDispel = mod:NewSpecialWarningDispel(164886, "RemovePoison", nil, nil, 1, 2)
local specWarnPoisonClawsDispel = mod : NewSpecialWarningDispel ( 169658 , " RemovePoison " , nil , nil , 1 , 2 )
local specWarnGTFO = mod : NewSpecialWarningGTFO ( 169495 , nil , nil , nil , 1 , 8 )
local timerRP = mod : NewRPTimer ( 68 )
local timerEnragedGrowthCD = mod : NewCDNPTimer ( 12.8 , 165213 , nil , nil , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON ) --CD from success or interrupt
local timerChokingVinesCD = mod : NewCDNPTimer ( 20.6 , 164965 , nil , nil , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON )
local timerBoundingWhirlCD = mod : NewCDNPTimer ( 16.5 , 172578 , nil , nil , nil , 3 )
local timerPoisonousClawsCD = mod : NewCDNPTimer ( 16.5 , 169657 , nil , " Tank|Healer " , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerVenomBurstCD = mod : NewCDNPTimer ( 10.6 , 165123 , nil , nil , nil , 3 )
local timerHealingWatersCD = mod : NewCDNPTimer ( 19.4 , 164887 , nil , nil , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON )
local timerLivingLeavesCD = mod : NewCDNPTimer ( 18.1 , 169494 , nil , nil , nil , 3 )
local timerGnarledRootsCD = mod : NewCDNPTimer ( 18.1 , 426500 , nil , nil , nil , 3 )
local timerPyroblastCD = mod : NewCDNPTimer ( 8 , 169839 , nil , nil , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON ) --8-13 window, quite large
local timerCinderboltSalvoCD = mod : NewCDNPTimer ( 18.2 , 427223 , nil , nil , nil , 2 )
local timerFrostboltCD = mod : NewCDNPTimer ( 6 , 169840 , nil , nil , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON )
local timerColdfusionCD = mod : NewCDNPTimer ( 21.8 , 426845 , nil , nil , nil , 3 ) --21.8-25, maybe shorter
local timerSpatialDisruptionCD = mod : NewCDNPTimer ( 19.5 , 426974 , nil , nil , nil , 3 )
--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
--"<6.63 00:47:46> [BOSS_KILL] 1751#Archmage Sol", -- [39]
--"<8.41 00:47:48> [CHAT_MSG_MONSTER_SAY] You! Maybe there is still time. The portal atop this outpost is a direct link to our world-- to Stormwind! The genesaur...#Undermage Kesalon###Omegal##0#0##0#381#nil#0#false#false#false#false", -- [49]
--"<21.76 00:48:01> [UNIT_SPELLCAST_SUCCEEDED] Yalnu(100.0%-0.0%){Target:??} -Teleport Out- [[target:Cast-3-4210-1279-28404-142193-000103D191:142193]]", -- [51]
--"<33.92 00:48:13> [CLEU] SPELL_CAST_START#Creature-0-4210-1279-28404-85496-000003D0DD#Undermage Kesalon##nil#170738#Pyroblast#nil#nil", -- [52]
--"<37.41 00:48:17> [CLEU] SPELL_CAST_SUCCESS#Creature-0-4210-1279-28404-85496-000003D0DD#Undermage Kesalon##nil#170738#Pyroblast#nil#nil", -- [53]
--"<38.77 00:48:18> [CLEU] SPELL_CAST_SUCCESS#Creature-0-4210-1279-28404-85496-000003D0DD#Undermage Kesalon##nil#170741#Pyroblast#nil#nil", -- [56]
--"<40.01 00:48:19> [CHAT_MSG_MONSTER_SAY] If that beast crosses through, the unchecked growth will choke the whole of Azeroth! Hurry!#Undermage Kesalon###Omegal##0#0##0#382#nil#0#false#false#false#false", -- [58]
function mod : PortalRP ( )
timerRP : Start ( 34.3 ) --Approx, just using yell + 1
end
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if not self : IsValidWarning ( args.sourceGUID ) then return end
if spellId == 164965 then
timerChokingVinesCD : Start ( nil , args.sourceGUID )
if self.Options . SpecWarn164965interrupt and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnChokingVines : Show ( args.sourceName )
specWarnChokingVines : Play ( " kickcast " )
elseif self : AntiSpam ( 3 , 7 ) then
warnChokingVines : Show ( )
end
elseif spellId == 165213 then
--Timer not started here, we only start CD if successfully kicked or successfully cast because otherwise it doesn't go on cooldown
if self.Options . SpecWarn165213interrupt and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnEnragedGrowth : Show ( args.sourceName )
specWarnEnragedGrowth : Play ( " kickcast " )
elseif self : AntiSpam ( 3 , 7 ) then
warnEnragedGrowth : Show ( )
end
elseif spellId == 164887 then
timerHealingWatersCD : Start ( nil , args.sourceGUID )
if self.Options . SpecWarn164887interrupt and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnHealingWaters : Show ( args.sourceName )
specWarnHealingWaters : Play ( " kickcast " )
elseif self : AntiSpam ( 3 , 7 ) then
warnHealingWaters : Show ( )
end
elseif spellId == 169657 then
timerPoisonousClawsCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 5 ) then
warnPoisonousClaws : Show ( )
end
elseif spellId == 169445 then
if self : AntiSpam ( 3 , 6 ) then
warnNoxiousEruption : Show ( )
end
elseif spellId == 169494 then
timerLivingLeavesCD : Start ( nil , args.sourceGUID )
elseif spellId == 169839 then
timerPyroblastCD : Start ( nil , args.sourceGUID )
if self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnPyroblast : Show ( args.sourceName )
specWarnPyroblast : Play ( " kickcast " )
end
elseif spellId == 426845 then
timerColdfusionCD : Start ( nil , args.sourceGUID )
specWarnColdFusion : Show ( )
specWarnColdFusion : Play ( " watchorb " )
elseif spellId == 169840 then
timerFrostboltCD : Start ( nil , args.sourceGUID )
if self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnFrostbolt : Show ( args.sourceName )
specWarnFrostbolt : Play ( " kickcast " )
end
elseif spellId == 426974 then
timerSpatialDisruptionCD : Start ( nil , args.sourceGUID )
--Not antispammed on purpose, it's too unique of a mechanic to bundle with any other mechanic
warnSpatialDisruption : Show ( )
--specWarnSpatialDisruption:Play("pullin")
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if spellId == 165213 then
timerEnragedGrowthCD : Start ( nil , args.sourceGUID )
elseif spellId == 172578 then
timerBoundingWhirlCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 2 ) then
specWarnBoundingWhirl : Show ( )
specWarnBoundingWhirl : Play ( " justrun " )
end
elseif spellId == 165123 then
timerVenomBurstCD : Start ( nil , args.sourceGUID )
elseif spellId == 426500 then
timerGnarledRootsCD : Start ( nil , args.sourceGUID )
elseif spellId == 427223 then
timerCinderboltSalvoCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 4 ) then
specWarnCinderboltSalvo : Show ( )
specWarnCinderboltSalvo : Play ( " aesoon " )
end
end
end
function mod : SPELL_INTERRUPT ( args )
if type ( args.extraSpellId ) == " number " and args.extraSpellId == 165213 then
timerEnragedGrowthCD : Start ( nil , args.destGUID )
end
end
function mod : SPELL_AURA_APPLIED ( args )
if not self.Options . Enabled then return end
local spellId = args.spellId
if spellId == 164965 and args : IsDestTypePlayer ( ) and self : CheckDispelFilter ( " magic " ) and self : AntiSpam ( 3 , 3 ) then
specWarnChokingVinesDispel : Show ( args.destName )
specWarnChokingVinesDispel : Play ( " helpdispel " )
-- elseif spellId == 164886 and args:IsDestTypePlayer() then
-- local amount = args.amount or 1
-- if amount >= 6 and self:CheckDispelFilter("poison") and self:AntiSpam(3, 3) then
-- specWarnDreadpetalToxinDispel:Show(args.destName)
-- specWarnDreadpetalToxinDispel:Play("helpdispel")
-- end
elseif spellId == 169658 and args : IsDestTypePlayer ( ) and self : CheckDispelFilter ( " poison " ) and self : AntiSpam ( 3 , 3 ) then
specWarnPoisonClawsDispel : Show ( args.destName )
specWarnPoisonClawsDispel : Play ( " helpdispel " )
elseif spellId == 165123 and args : IsDestTypePlayer ( ) and self : CheckDispelFilter ( " poison " ) and self : AntiSpam ( 3 , 3 ) then
specWarnVenomBurstDispel : Show ( args.destName )
specWarnVenomBurstDispel : Play ( " helpdispel " )
elseif spellId == 165123 then
if args : IsPlayer ( ) then
if self : AntiSpam ( 4 , 5 ) then
specWarnVenomBurst : Show ( )
specWarnVenomBurst : Play ( " range5 " )
yellnVenomBurst : Yell ( )
end
else
warnVenomBurst : Show ( args.destName )
end
elseif spellId == 169495 and args : IsPlayer ( ) and self : AntiSpam ( 3 , 8 ) then --Living Leaves
specWarnGTFO : Show ( args.spellName )
specWarnGTFO : Play ( " watchfeet " )
elseif spellId == 426500 then
warnGnarledroots : CombinedShow ( 0.5 , args.destName )
end
end
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 81819 then --Everbloom Naturalist
timerChokingVinesCD : Stop ( args.destGUID )
elseif cid == 81985 then --Everbloom Tender/Everbloom Cultivator
timerEnragedGrowthCD : Stop ( args.destGUID )
elseif cid == 86372 then --Melded Berserker
timerBoundingWhirlCD : Stop ( args.destGUID )
elseif cid == 84767 then --Twisted Abomination
timerPoisonousClawsCD : Stop ( args.destGUID )
elseif cid == 82039 then --Rockspine Stinger
timerVenomBurstCD : Stop ( args.destGUID )
elseif cid == 81820 then --Everbloom Mender
timerHealingWatersCD : Stop ( args.destGUID )
elseif cid == 81984 then --Gnarlroot
timerLivingLeavesCD : Stop ( args.destGUID )
timerGnarledRootsCD : Stop ( args.destGUID )
elseif cid == 84957 then --Putrid Pyromancer
timerPyroblastCD : Stop ( args.destGUID )
timerCinderboltSalvoCD : Stop ( args.destGUID )
elseif cid == 84989 then --Infested Icecaller
timerFrostboltCD : Stop ( args.destGUID )
timerColdfusionCD : Stop ( args.destGUID )
elseif cid == 84990 then --Addled Acanomancer
timerSpatialDisruptionCD : Stop ( args.destGUID )
end
end
--[[
function mod : SPELL_PERIODIC_DAMAGE ( _ , _ , _ , _ , destGUID , _ , _ , _ , spellId , spellName )
if spellId == 340324 and destGUID == UnitGUID ( " player " ) and self : AntiSpam ( 2 , 8 ) then
specWarnGTFO : Show ( spellName )
specWarnGTFO : Play ( " watchfeet " )
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
--]]