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