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.
298 lines
14 KiB
298 lines
14 KiB
local mod = DBM:NewMod("UldamanLegacyofTyrTrash", "DBM-Party-Dragonflight", 2)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240513062426")
|
|
--mod:SetModelID(47785)
|
|
mod.isTrashMod = true
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START 369811 382578 369674 369823 369675 369806 377732 369399 369335 369400 369365 369423 369411 381593 382696 377500 369409",
|
|
"SPELL_CAST_SUCCESS 377738 369465 369328 377732 382696 369811",
|
|
"SPELL_AURA_APPLIED 369365 369828 369823 369818 369400 369366 377500",
|
|
"SPELL_AURA_APPLIED_DOSE 369828 377738 369419",
|
|
-- "SPELL_AURA_REMOVED 339525",
|
|
"UNIT_DIED"
|
|
)
|
|
|
|
--TODO, check target scanning of chain lightning
|
|
--TODO, add throw rock even though it's spammy? maybe off by default?
|
|
--TODO, dispel warning for https://www.wowhead.com/spell=377510/stolen-time ?
|
|
--[[
|
|
(ability.id = 369811 or ability.id = 382578 or ability.id = 369674 or ability.id = 369823 or ability.id = 369675 or ability.id = 369806 or ability.id = 377732 or ability.id = 369399 or ability.id = 369335 or ability.id = 369400 or ability.id = 369365 or ability.id = 369423 or ability.id = 369411 or ability.id = 381593 or ability.id = 382696 or ability.id = 377500) and type = "begincast"
|
|
or (ability.id = 377738 or ability.id = 369465 or ability.id = 369328) and type = "cast"
|
|
--]]
|
|
local warnBlessingofTyr = mod:NewCastAnnounce(382578, 4, nil, nil, "Tank|Healer")
|
|
local warnChainLightning = mod:NewCastAnnounce(369675, 3)
|
|
local warnChomp = mod:NewStackAnnounce(369828, 2, nil, "Tank|Healer")
|
|
local warnAncientPower = mod:NewStackAnnounce(377738, 2, nil, "Tank|Healer")
|
|
local warnVenomousFangs = mod:NewStackAnnounce(369419, 2, nil, "Tank|Healer|RemovePoison")
|
|
local warnRecklessRage = mod:NewCastAnnounce(369806, 3, nil, nil, "Tank|Healer|RemoveEnrage")
|
|
local warnCleave = mod:NewCastAnnounce(369409, 3, nil, nil, "Tank|Healer")
|
|
local warnJaggedBite = mod:NewCastAnnounce(377732, 3, nil, nil, "Tank|Healer")
|
|
local warnHailofStone = mod:NewCastAnnounce(369465, 4, nil, nil, nil, nil, nil, 3)
|
|
local warnEarthenWard = mod:NewCastAnnounce(369400, 3)
|
|
local warnPounce = mod:NewCastAnnounce(369423, 3)
|
|
local warnSonicBurst = mod:NewCastAnnounce(369411, 4)
|
|
local warnThunderousClap = mod:NewCastAnnounce(381593, 3)
|
|
local warnBulwarkSlam = mod:NewCastAnnounce(382696, 4, nil, nil, "Tank|Healer")
|
|
local warnHasten = mod:NewCastAnnounce(377500, 3)
|
|
|
|
local specWarnBrutalSlam = mod:NewSpecialWarningRun(369811, nil, nil, nil, 4, 2)
|
|
local specWarnFissuringSlam = mod:NewSpecialWarningDodge(369335, nil, nil, nil, 2, 2)
|
|
local specWarnEarthquake = mod:NewSpecialWarningSpell(369328, nil, nil, nil, 2, 2)
|
|
--local specWarnChainLitYou = mod:NewSpecialWarningMoveAway(369675, nil, nil, nil, 1, 2)
|
|
local yellTrappedInStone = mod:NewYell(369366)
|
|
local specWarnCurseofStone = mod:NewSpecialWarningDispel(369365, "RemoveCurse", nil, nil, 1, 2)
|
|
local specWarnTrappedinStone = mod:NewSpecialWarningDispel(369366, "RemoveCurse", nil, nil, 1, 2)
|
|
local specWarnDiseasedbite = mod:NewSpecialWarningDispel(369818, "RemoveDisease", nil, nil, 1, 2)
|
|
local specWarnSpikedCarapaceDispel = mod:NewSpecialWarningDispel(369823, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnEarthenWard = mod:NewSpecialWarningDispel(369400, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnHastenDispel = mod:NewSpecialWarningDispel(377500, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnChainLightning = mod:NewSpecialWarningInterrupt(369675, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnStoneSpike = mod:NewSpecialWarningInterrupt(369674, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnSpikedCarapace = mod:NewSpecialWarningInterrupt(369823, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnStoneBolt = mod:NewSpecialWarningInterrupt(369399, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnCurseofStoneKick = mod:NewSpecialWarningInterrupt(369365, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnSonicBurst = mod:NewSpecialWarningInterrupt(369411, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnHasten = mod:NewSpecialWarningInterrupt(377500, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
local timerBrutalSlamCD = mod:NewCDNPTimer(20.1, 369811, nil, nil, nil, 3)
|
|
local timerSpikedCarapaceCD = mod:NewCDNPTimer(18.2, 369823, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
|
|
local timerStoneSpikeCD = mod:NewCDNPTimer(6, 369674, nil, false, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--Short CD, may interfere with Chain LIghting CD timer, opt in
|
|
local timerChainLightningCD = mod:NewCDNPTimer(25.5, 369675, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
|
|
local timerJaggedBiteCD = mod:NewCDNPTimer(11.8, 377732, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerAncientPowerCD = mod:NewCDNPTimer(6, 377738, nil, nil, nil, 5)
|
|
local timerHailofStoneCD = mod:NewCDNPTimer(21.8, 369465, nil, nil, nil, 5)
|
|
local timerStoneBoltCD = mod:NewCDNPTimer(7.2, 369399, nil, false, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--7-11, off by default to giev prio to Hail of stone
|
|
local timerEarthquakeCD = mod:NewCDNPTimer(25.4, 369328, nil, nil, nil, 2)
|
|
local timerFissuringSlamCD = mod:NewCDNPTimer(9.7, 369335, nil, nil, nil, 2)--9.7-15
|
|
local timerCleaveCD = mod:NewCDNPTimer(15, 369409, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerPounceCD = mod:NewCDNPTimer(15, 369423, nil, nil, nil, 3)
|
|
local timerThunderousClapCD = mod:NewCDNPTimer(19, 381593, nil, nil, nil, 2)
|
|
local timerBulwarkSlamCD = mod:NewCDNPTimer(10.6, 382696, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerHastenCD = mod:NewCDNPTimer(23, 377500, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
|
|
|
|
--local playerName = UnitName("player")
|
|
|
|
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc, 7 off interrupt, 8 off dodge (can't be interrupted/CCed and too spammy to be special warning)
|
|
|
|
--[[
|
|
function mod:LitTarget(targetname)
|
|
if not targetname then return end
|
|
if targetname == UnitName("player") then
|
|
specWarnChainLitYou:Show()
|
|
specWarnChainLitYou:Play("runout")
|
|
yellChainLit:Yell()
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if not self:IsValidWarning(args.sourceGUID) then return end
|
|
if spellId == 369811 then
|
|
if self:AntiSpam(3, 1) then
|
|
specWarnBrutalSlam:Show()
|
|
specWarnBrutalSlam:Play("justrun")
|
|
end
|
|
elseif spellId == 381593 then
|
|
timerThunderousClapCD:Start(nil, args.sourceGUID)
|
|
if self:AntiSpam(3, 8) then
|
|
warnThunderousClap:Show()
|
|
end
|
|
elseif spellId == 382578 and self:AntiSpam(3, 5) then
|
|
warnBlessingofTyr:Show()
|
|
elseif spellId == 369674 then
|
|
timerStoneSpikeCD:Start(nil, args.sourceGUID)
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnStoneSpike:Show(args.sourceName)
|
|
specWarnStoneSpike:Play("kickcast")
|
|
end
|
|
elseif spellId == 369399 then
|
|
timerStoneBoltCD:Start(nil, args.sourceGUID)
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnStoneBolt:Show(args.sourceName)
|
|
specWarnStoneBolt:Play("kickcast")
|
|
end
|
|
elseif spellId == 369823 then
|
|
timerSpikedCarapaceCD:Start(nil, args.sourceGUID)
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnSpikedCarapace:Show(args.sourceName)
|
|
specWarnSpikedCarapace:Play("kickcast")
|
|
end
|
|
elseif spellId == 369675 and args:GetSrcCreatureID() == 184022 then--184022 is trash version of mob (186658 is boss version)FUCK
|
|
-- self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "LitTarget", 0.1, 8, true)
|
|
timerChainLightningCD:Start(nil, args.sourceGUID)
|
|
if self.Options.SpecWarn369675interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnChainLightning:Show(args.sourceName)
|
|
specWarnChainLightning:Play("kickcast")
|
|
elseif self:AntiSpam(3, 7) then
|
|
warnChainLightning:Show()
|
|
end
|
|
elseif spellId == 369806 and self:AntiSpam(3, 5) then
|
|
warnRecklessRage:Show()
|
|
elseif spellId == 377732 then
|
|
if self:AntiSpam(3, 5) then
|
|
warnJaggedBite:Show()
|
|
end
|
|
elseif spellId == 369409 then
|
|
timerCleaveCD:Start(nil, args.sourceGUID)
|
|
if self:AntiSpam(3, 5) then
|
|
warnCleave:Show()
|
|
end
|
|
elseif spellId == 369335 then
|
|
if timerEarthquakeCD:GetRemaining(args.sourceGUID) < 10 then
|
|
timerFissuringSlamCD:Start(15.7, args.sourceGUID)
|
|
else
|
|
timerFissuringSlamCD:Start(9.7, args.sourceGUID)
|
|
end
|
|
if self:AntiSpam(3, 2) then
|
|
specWarnFissuringSlam:Show()
|
|
specWarnFissuringSlam:Play("watchstep")
|
|
end
|
|
elseif spellId == 369400 and self:AntiSpam(3, 6) then
|
|
warnEarthenWard:Show()
|
|
elseif spellId == 369365 then
|
|
if self.Options.SpecWarn369365interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnCurseofStoneKick:Show(args.sourceName)
|
|
specWarnCurseofStoneKick:Play("kickcast")
|
|
-- elseif self:AntiSpam(3, 7) then
|
|
-- warnChainLightning:Show()
|
|
end
|
|
elseif spellId == 369423 then
|
|
timerPounceCD:Start(nil, args.sourceGUID)
|
|
if self:AntiSpam(3, 6) then
|
|
warnPounce:Show()
|
|
end
|
|
elseif spellId == 369411 then
|
|
if self.Options.SpecWarn369411interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnSonicBurst:Show(args.sourceName)
|
|
specWarnSonicBurst:Play("kickcast")
|
|
elseif self:AntiSpam(3, 7) then
|
|
warnSonicBurst:Show()
|
|
end
|
|
elseif spellId == 382696 then
|
|
if self:AntiSpam(3, 5) then
|
|
warnBulwarkSlam:Show()
|
|
end
|
|
elseif spellId == 377500 then
|
|
timerHastenCD:Start(nil, args.sourceGUID)
|
|
if self.Options.SpecWarn377500interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnHasten:Show(args.sourceName)
|
|
specWarnHasten:Play("kickcast")
|
|
elseif self:AntiSpam(3, 7) then
|
|
warnHasten:Show()
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if not self:IsValidWarning(args.sourceGUID) then return end
|
|
if spellId == 377738 then
|
|
timerAncientPowerCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 369465 then
|
|
timerHailofStoneCD:Start(nil, args.sourceGUID)
|
|
if self:AntiSpam(3, 6) then
|
|
warnHailofStone:Show()
|
|
warnHailofStone:Play("crowdcontrol")
|
|
end
|
|
elseif spellId == 369328 then
|
|
timerEarthquakeCD:Start(nil, args.sourceGUID)
|
|
if self:AntiSpam(3, 4) then
|
|
specWarnEarthquake:Show()
|
|
specWarnEarthquake:Play("aesoon")
|
|
end
|
|
elseif spellId == 377732 then
|
|
timerJaggedBiteCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 382696 then
|
|
timerBulwarkSlamCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 369811 then
|
|
timerBrutalSlamCD:Start(18.1, args.sourceGUID)--20.1 - 2
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 369365 and args:IsDestTypePlayer() and self:CheckDispelFilter("curse") and self:AntiSpam(3, 3) then
|
|
specWarnCurseofStone:Show(args.destName)
|
|
specWarnCurseofStone:Play("helpdispel")
|
|
elseif spellId == 369828 then
|
|
local amount = args.amount or 1
|
|
if self:AntiSpam(3, 5) then
|
|
warnChomp:Show(args.destName, amount)
|
|
end
|
|
elseif spellId == 377738 then
|
|
local amount = args.amount or 1
|
|
if amount >= 3 and self:AntiSpam(3, 5) then
|
|
warnAncientPower:Show(args.destName, amount)
|
|
end
|
|
elseif spellId == 369823 and not args:IsDestTypePlayer() and self:AntiSpam(3, 3) then
|
|
specWarnSpikedCarapaceDispel:Show(args.destName)
|
|
specWarnSpikedCarapaceDispel:Play("helpdispel")
|
|
elseif spellId == 369818 and self:CheckDispelFilter("disease") and args:IsDestTypePlayer() and self:AntiSpam(3, 3) then
|
|
specWarnDiseasedbite:Show(args.destName)
|
|
specWarnDiseasedbite:Play("helpdispel")
|
|
elseif spellId == 369400 and not args:IsDestTypePlayer() and self:AntiSpam(3, 3) then
|
|
specWarnEarthenWard:Show(args.destName)
|
|
specWarnEarthenWard:Play("helpdispel")
|
|
elseif spellId == 369366 then
|
|
if self:CheckDispelFilter("curse") and self:AntiSpam(3, 3) then
|
|
specWarnTrappedinStone:Show(args.destName)
|
|
specWarnTrappedinStone:Play("helpdispel")
|
|
end
|
|
if args:IsPlayer() then
|
|
yellTrappedInStone:Yell()
|
|
end
|
|
elseif spellId == 369419 then
|
|
local amount = args.amount or 1
|
|
if amount >= 3 and self:AntiSpam(3, 5) then
|
|
warnVenomousFangs:Show(args.destName, amount)
|
|
end
|
|
elseif spellId == 377500 and not args:IsDestTypePlayer() and self:AntiSpam(3, 3) then
|
|
specWarnHastenDispel:Show(args.destName)
|
|
specWarnHastenDispel:Play("helpdispel")
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
--[[
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 339525 and args:IsPlayer() then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 184022 then--Stonevault Geomancer (Trash Version)
|
|
timerChainLightningCD:Stop(args.destGUID)
|
|
timerStoneSpikeCD:Stop(args.destGUID)
|
|
elseif cid == 184130 then--Earthen Custodian
|
|
timerCleaveCD:Stop(args.destGUID)
|
|
elseif cid == 184319 then--Refti Custodian
|
|
timerAncientPowerCD:Stop(args.destGUID)
|
|
timerJaggedBiteCD:Stop(args.destGUID)
|
|
elseif cid == 184303 then--Skittering Crawler
|
|
timerPounceCD:Stop(args.destGUID)
|
|
elseif cid == 184131 then--Earthen Guardian
|
|
timerBulwarkSlamCD:Stop(args.destGUID)
|
|
elseif cid == 184020 then--Hulking Berserker
|
|
timerBrutalSlamCD:Stop(args.destGUID)
|
|
elseif cid == 184023 then--Vicious Basilisk
|
|
timerSpikedCarapaceCD:Stop(args.destGUID)
|
|
elseif cid == 186420 then--Earthen Weaver
|
|
timerHailofStoneCD:Stop(args.destGUID)
|
|
timerStoneBoltCD:Stop(args.destGUID)
|
|
elseif cid == 184107 then--Runic Protector
|
|
timerEarthquakeCD:Stop(args.destGUID)
|
|
timerFissuringSlamCD:Stop(args.destGUID)
|
|
elseif cid == 184300 then--Ebonstone Golem
|
|
timerThunderousClapCD:Stop(args.destGUID)
|
|
elseif cid == 184335 then--Infinite Agent
|
|
timerHastenCD:Stop(args.destGUID)
|
|
end
|
|
end
|
|
|