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.

204 lines
8.5 KiB

local mod = DBM:NewMod("NLTrash", "DBM-Party-Legion", 5)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240808043723")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod.isTrashModBossFightAllowed = true
mod:RegisterEvents(
"SPELL_CAST_START 183088 226296 202108 193505 226287 183548 193585 226406 202181 193941 226347 183539",
"SPELL_CAST_SUCCESS 183433 183526 183088",
"SPELL_AURA_APPLIED 200154 183407 186576 193803 201983 226388 186616",
"UNIT_DIED"
)
--[[
(ability.id = 183088 or ability.id = 226296 or ability.id = 202108 or ability.id = 193505 or ability.id = 226287 or ability.id = 183548 or ability.id = 193585 or ability.id = 226406 or ability.id = 202181 or ability.id = 193941 or ability.id = 226347 or ability.id = 183539 or ability.id = 201983 or ability.id = 200154) and type = "begincast"
or (ability.id = 183433 or ability.id = 183526) and type = "cast"
--]]
local warnSubmerge = mod:NewSpellAnnounce(183433, 3)
local warnWarDrums = mod:NewSpellAnnounce(183526, 4)
local warnBurningHatred = mod:NewTargetAnnounce(200154, 3)
local warnMetamorphosis = mod:NewTargetNoFilterAnnounce(193803, 3, nil, false)
local warnPetrifed = mod:NewTargetNoFilterAnnounce(186616, 4)
local warnCallWorm = mod:NewCastAnnounce(183548, 3)
local warnCrush = mod:NewCastAnnounce(226287, 3)
local warnPiercingShards = mod:NewCastAnnounce(226296, 4, nil, nil, "Tank|Healer")
local warnFracture = mod:NewCastAnnounce(193505, 3, nil, nil, "Tank|Healer")
local warnEmberSwipe = mod:NewCastAnnounce(226406, 3, nil, nil, "Tank|Healer")
local warnImpalingShard = mod:NewCastAnnounce(193941, 3, nil, nil, "Tank|Healer")
local warnPetrifyingTotem = mod:NewCastAnnounce(202108, 3)
local warnBound = mod:NewCastAnnounce(193585, 3)
local warnStoneShatter = mod:NewCastAnnounce(226347, 3)
local warnBarbedTongue = mod:NewCastAnnounce(183539, 3)
local specWarnBurningHatred = mod:NewSpecialWarningRun(200154, nil, nil, nil, 4, 2)
local specWarnCrush = mod:NewSpecialWarningRun(226287, "Melee", nil, nil, 1, 2)
local specWarnAvalanche = mod:NewSpecialWarningDodge(183088, nil, nil, 3, 1, 2)
local specWarnPetrifyingTotem = mod:NewSpecialWarningDodge(202108, nil, nil, nil, 2, 2)
local specWarnPetrifyingCloud = mod:NewSpecialWarningDispel(186576, "RemoveMagic", nil, nil, 1, 2)
local specWarnFrenzy = mod:NewSpecialWarningDispel(201983, "RemoveEnrage", nil, nil, 1, 2)
local specWarnStoneGaze = mod:NewSpecialWarningInterrupt(202181, "HasInterrupt", nil, nil, 1, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(186576, nil, nil, nil, 1, 8)
local timerSubmergeCD = mod:NewCDNPTimer(22.7, 183433, nil, nil, nil, 5)
local timerStoneShatterCD = mod:NewCDNPTimer(12.1, 226347, nil, nil, nil, 3)
local timerImpalingShardCD = mod:NewCDNPTimer(15.7, 193941, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerCrushCD = mod:NewCDNPTimer(18.2, 226287, nil, nil, nil, 3)
local timerFractureCD = mod:NewCDNPTimer(15.7, 193505, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Also acts as piercing shards timer, piercing is awlays used immediately after fracture
local timerStoneGazeCD = mod:NewCDNPTimer(20.6, 202181, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerAvalancheCD = mod:NewCDNPTimer(19.4, 183088, nil, nil, nil, 3)
local timerPetrifyingTotemCD = mod:NewCDNPTimer(35.1, 202108, nil, nil, nil, 3)
local timerEmberSwipeCD = mod:NewCDNPTimer(10.9, 226406, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerFrenzyCD = mod:NewCDNPTimer(20.6, 201983, nil, "RemoveEnrage|Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerBoundCD = mod:NewCDNPTimer(20.6, 193585, nil, nil, nil, 5)
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc, 7 GTFO
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 183088 then
if self:AntiSpam(3, 2) then
specWarnAvalanche:Show()
specWarnAvalanche:Play("watchstep")
end
elseif spellId == 226296 and self:AntiSpam(3, 5) then
warnPiercingShards:Show()
elseif spellId == 202108 then
timerPetrifyingTotemCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnPetrifyingTotem:Show()
specWarnPetrifyingTotem:Play("runaway")
end
elseif spellId == 193505 then
timerFractureCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnFracture:Show()
end
elseif spellId == 226287 then
timerCrushCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
if self.Options.SpecWarn226287run then
specWarnCrush:Show()
specWarnCrush:Play("justrun")
else
warnCrush:Show()
end
end
elseif spellId == 183548 and self:AntiSpam(3, 5) then
warnCallWorm:Show()
elseif spellId == 193585 then
timerBoundCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 6) then
warnBound:Show()
end
elseif spellId == 226406 then
timerEmberSwipeCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnEmberSwipe:Show()
end
elseif spellId == 193941 then
timerImpalingShardCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnImpalingShard:Show()
end
elseif spellId == 202181 then
if args:GetSrcCreatureID() == 91332 then--Stoneclaw Hunter
timerStoneGazeCD:Start(12.1, args.sourceGUID)
else--Stoneclaw Grubmaster
timerStoneGazeCD:Start(13.8, args.sourceGUID)
end
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnStoneGaze:Show(args.sourceName)
specWarnStoneGaze:Play("kickcast")
end
elseif spellId == 226347 then
timerStoneShatterCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnStoneShatter:Show()
end
elseif spellId == 183539 and self:AntiSpam(3, 5) then
warnBarbedTongue:Show()
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 183433 then
timerSubmergeCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnSubmerge:Show()
end
elseif spellId == 183526 and self:AntiSpam(3, 5) then
warnWarDrums:Show()
elseif spellId == 183088 then
timerAvalancheCD:Start(18.3, args.sourceGUID)--19.4 - 1.1
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 200154 then
if args:IsPlayer() then
specWarnBurningHatred:Show()
specWarnBurningHatred:Play("justrun")
else
warnBurningHatred:Show(args.destName)
end
elseif (spellId == 183407 or spellId == 226388) and args:IsPlayer() and self:AntiSpam(3, 7) then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
elseif spellId == 186576 then
if args:IsPlayer() then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
elseif self:CheckDispelFilter("magic") then
specWarnPetrifyingCloud:Show(args.destName)
specWarnPetrifyingCloud:Play("helpdispel")
end
elseif spellId == 193803 and self:AntiSpam(3, 6) then
warnMetamorphosis:Show(args.destName)
elseif spellId == 201983 then
timerFrenzyCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 3) then
specWarnFrenzy:Show(args.destName)
specWarnFrenzy:Play("enrage")
end
elseif spellId == 186616 then
warnPetrifed:Show(args.destName)
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 91001 then--Tarspitter Lurker
timerSubmergeCD:Stop(args.destGUID)
elseif cid == 91332 then--Stoneclaw Hunter
timerStoneShatterCD:Stop(args.destGUID)
elseif cid == 98406 then--Embershard Scorpion
timerImpalingShardCD:Stop(args.destGUID)
elseif cid == 101438 then--Vileshard Chunk
timerCrushCD:Stop(args.destGUID)
elseif cid == 91000 then--Vileshard Hulk
timerFractureCD:Stop(args.destGUID)
elseif cid == 91006 then--Rockback Gnasher
timerStoneGazeCD:Stop(args.destGUID)
elseif cid == 102404 then--Stoneclaw Grubmaster
timerStoneShatterCD:Stop(args.destGUID)
elseif cid == 90997 then--Mightstone breaker
timerAvalancheCD:Stop(args.destGUID)
elseif cid == 90998 then--Blightshard Shaper
timerPetrifyingTotemCD:Stop(args.destGUID)
elseif cid == 102295 or cid == 102287 or cid == 113536 or cid == 113537 then--Emberhusk Dominator
timerEmberSwipeCD:Stop(args.destGUID)
timerFrenzyCD:Stop(args.destGUID)
elseif cid == 102232 then--Rockbound Trapper
timerBoundCD:Stop(args.destGUID)
end
end