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