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.

240 lines
12 KiB

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
--]]