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.

261 lines
12 KiB

local mod = DBM:NewMod("AtalDazarTrash", "DBM-Party-BfA", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240426175442")
--mod:SetModelID(47785)
mod:SetZone(1763)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 255824 253562 255041 253544 253517 256849 252781 256138 253239 254959 252923 256882 255567 256846 252687",
"SPELL_CAST_SUCCESS 253583 253721",
"SPELL_AURA_APPLIED 260666 255824 256849 252781 252687 255814",
"SPELL_AURA_APPLIED_DOSE 255814",
"UNIT_DIED"
)
--TODO, target scan Merciless Assault?
--TODO, Reanimation Totem?
--TODO, deadly aim target scan?
--TODO, RP timers
--[[
(ability.id = 255824 or ability.id = 253562 or ability.id = 255041 or ability.id = 253544 or ability.id = 253517 or ability.id = 256849 or ability.id = 252781 or ability.id = 256138 or ability.id = 253239 or ability.id = 254959 or ability.id = 252923 or ability.id = 256882 or ability.id = 255567 or ability.id = 256846 or ability.id = 252687) and type = "begincast"
or (ability.id = 253583 or ability.id = 253721) and type = "cast"
--]]
local warnBulwarkofJuju = mod:NewSpellAnnounce(253721, 2)--Add Crowd Control audio
local warnFerventStrike = mod:NewCastAnnounce(256138, 3, nil, nil, "Tank|Healer")
local warnMercilessAssault = mod:NewCastAnnounce(253239, 3)
local warnDeadlyAim = mod:NewCastAnnounce(256846, 3)
local warnSoulburn = mod:NewCastAnnounce(254959, 3, nil, nil, false)--Mentioned in guide but not emphasized
local warnTerrifyingScreech = mod:NewCastAnnounce(255041, 4)
local warnBwonsamdisMantle = mod:NewCastAnnounce(253544, 4)
local warnMendingWord = mod:NewCastAnnounce(253517, 4)
local warnUnstableHex = mod:NewCastAnnounce(252781, 4)
local warnRendingMaul = mod:NewStackAnnounce(255814, 2, nil, "Tank|Healer")
--local warnFrenziedCharge = mod:NewTargetNoFilterAnnounce(255567, 4)
local specWarnWildThrash = mod:NewSpecialWarningSpell(256882, nil, nil, nil, 2, 2)
local specWarnVenomfangStrike = mod:NewSpecialWarningDefensive(252687, nil, nil, nil, 1, 2)
local specWarnUnstableHexSelf = mod:NewSpecialWarningMoveAway(252781, nil, nil, nil, 1, 2)
local yellUnstableHex = mod:NewYell(252781)
local specWarnFrenziedCharge = mod:NewSpecialWarningDodge(255567, nil, nil, nil, 2, 2)
local yellFrenziedCharge = mod:NewYell(255567)
local specWarnFanaticsRage = mod:NewSpecialWarningInterrupt(255824, "HasInterrupt", nil, nil, 1, 2)
local specWarnWildFire = mod:NewSpecialWarningInterrupt(253562, false, nil, 2, 1, 2)
local specWarnFieryEnchant = mod:NewSpecialWarningInterrupt(253583, "HasInterrupt", nil, nil, 1, 2)
local specWarnTerrifyingScreech = mod:NewSpecialWarningInterrupt(255041, "HasInterrupt", nil, nil, 1, 2)
local specWarnBwonsamdisMantle = mod:NewSpecialWarningInterrupt(253544, "HasInterrupt", nil, nil, 1, 2)
local specWarnMendingWord = mod:NewSpecialWarningInterrupt(253517, "HasInterrupt", nil, nil, 1, 2)
local specWarnDinoMight = mod:NewSpecialWarningInterrupt(256849, "HasInterrupt", nil, nil, 1, 2)
local specWarnUnstableHex = mod:NewSpecialWarningInterrupt(252781, "HasInterrupt", nil, nil, 1, 2)
local specWarnVenomBlast = mod:NewSpecialWarningInterrupt(252923, false, nil, 2, 1, 2)
local specWarnTransfusion = mod:NewSpecialWarningMoveTo(260666, nil, nil, nil, 3, 2)
local specWarnFanaticsRageDispel = mod:NewSpecialWarningDispel(255824, "RemoveEnrage", nil, 2, 1, 2)
local specWarnDinoMightDispel = mod:NewSpecialWarningDispel(256849, "MagicDispeller", nil, nil, 1, 2)
local specWarnVenomfangStrikeDispel = mod:NewSpecialWarningDispel(252687, "RemovePoison", nil, nil, 1, 2)
local timerFieryEnchantCD = mod:NewCDNPTimer(15.3, 253583, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--More Data needed
local timerMendingWardCD = mod:NewCDNPTimer(13.3, 253517, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerFerventStrikeCD = mod:NewCDNPTimer(12.1, 256138, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--17-19
local timerFanaticsRageCD = mod:NewCDNPTimer(20.2, 255824, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerMercilessAssaultCD = mod:NewCDNPTimer(9.8, 253239, nil, nil, nil, 3)
local timerBwonsamdisMantleCD = mod:NewCDNPTimer(20.5, 253544, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerSoulburnCD = mod:NewCDNPTimer(13.3, 254959, nil, nil, nil, 3)
local timerTerrifyingScreechCD = mod:NewCDNPTimer(18.2, 255041, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--Could be 17, watch for debug
local timerVenomfangStrikeCD = mod:NewCDNPTimer(15.3, 252687, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerBulwarkofJujuCD = mod:NewCDNPTimer(22.2, 253721, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerHexCD = mod:NewCDNPTimer(18.1, 252781, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerFrenziedChargeCD = mod:NewCDNPTimer(13.3, 255567, nil, nil, nil, 3)--13.3-18.2
local timerWildThrashCD = mod:NewCDNPTimer(13.3, 256882, nil, nil, nil, 3)--13.3-18.2
local timerDinoMightCD = mod:NewCDNPTimer(14.5, 256849, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--More data needed
local timerDeadeyeAimCD = mod:NewCDNPTimer(10.9, 256846, nil, nil, nil, 3)--10.9-20
local taintedBlood = DBM:GetSpellName(255558)
--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
function mod:ChargeTarget(targetname)
if not targetname then return end
-- warnFrenziedCharge:Show(targetname)
if targetname == UnitName("player") then
yellFrenziedCharge:Yell()
end
end
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
if not self:IsValidWarning(args.sourceGUID) then return end
local spellId = args.spellId
if spellId == 255824 then
timerFanaticsRageCD:Start(nil, args.sourceGUID)
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnFanaticsRage:Show(args.sourceName)
specWarnFanaticsRage:Play("kickcast")
end
elseif spellId == 253562 then
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnWildFire:Show(args.sourceName)
specWarnWildFire:Play("kickcast")
end
elseif spellId == 255041 then
timerTerrifyingScreechCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn255041interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTerrifyingScreech:Show(args.sourceName)
specWarnTerrifyingScreech:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnTerrifyingScreech:Show()
end
elseif spellId == 253544 then
timerBwonsamdisMantleCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn253544interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnBwonsamdisMantle:Show(args.sourceName)
specWarnBwonsamdisMantle:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnBwonsamdisMantle:Show()
end
elseif spellId == 253517 then
timerMendingWardCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn253517interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnMendingWord:Show(args.sourceName)
specWarnMendingWord:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnMendingWord:Show()
end
elseif spellId == 256849 then
timerDinoMightCD:Start(nil, args.sourceGUID)
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDinoMight:Show(args.sourceName)
specWarnDinoMight:Play("kickcast")
end
elseif spellId == 252781 then
timerHexCD:Start(nil, args.sourceGUID)
if self.Options.SpecWarn252781interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnUnstableHex:Show(args.sourceName)
specWarnUnstableHex:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnUnstableHex:Show()
end
elseif spellId == 252923 then
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnVenomBlast:Show(args.sourceName)
specWarnVenomBlast:Play("kickcast")
end
elseif spellId == 256138 then
timerFerventStrikeCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 5) then
warnFerventStrike:Show()
end
elseif spellId == 253239 then
timerMercilessAssaultCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 6) then
warnMercilessAssault:Show()
end
elseif spellId == 254959 then
timerSoulburnCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 6) then
warnSoulburn:Show()
end
elseif spellId == 256882 then
timerWildThrashCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 4) then
specWarnWildThrash:Show()
specWarnWildThrash:Play("aesoon")
end
elseif spellId == 255567 then
timerFrenziedChargeCD:Start(nil, args.sourceGUID)
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "ChargeTarget", 0.1, 6)
specWarnFrenziedCharge:Show()
specWarnFrenziedCharge:Play("chargemove")
elseif spellId == 256846 then
timerDeadeyeAimCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 6) then
warnDeadlyAim:Show()
end
elseif spellId == 252687 then
timerVenomfangStrikeCD:Start(nil, args.sourceGUID)
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 253583 then
timerFieryEnchantCD:Start(nil, args.sourceGUID)
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnFieryEnchant:Show(args.sourceName)
specWarnFieryEnchant:Play("kickcast")
end
elseif spellId == 253721 then
timerBulwarkofJujuCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 1) then
warnBulwarkofJuju:Show()
end
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 260666 and args:IsPlayer() then
specWarnTransfusion:Show(taintedBlood)
specWarnTransfusion:Play("takedamage")
elseif spellId == 255824 and self:AntiSpam(4, 3) then
specWarnFanaticsRageDispel:Show(args.destName)
specWarnFanaticsRageDispel:Play("enrage")
elseif spellId == 256849 and not args:IsDestTypePlayer() and self:AntiSpam(4, 3) then
specWarnDinoMightDispel:Show(args.destName)
specWarnDinoMightDispel:Play("helpdispel")
elseif spellId == 252781 and args:IsPlayer() then
specWarnUnstableHexSelf:Show()
specWarnUnstableHexSelf:Play("runout")
yellUnstableHex:Yell()
elseif spellId == 252687 and args:IsDestTypePlayer() then
if args:IsPlayer() then
specWarnVenomfangStrike:Show()
specWarnVenomfangStrike:Play("defensive")
elseif self:CheckDispelFilter("poison") then
specWarnVenomfangStrikeDispel:Show(args.destName)
specWarnVenomfangStrikeDispel:Play("helpdispel")
end
elseif spellId == 255814 then
local amount = args.amount or 1
if self:AntiSpam(3, 5) then
warnRendingMaul:Show(args.destName, amount)
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 127799 then--Dazar'ai Honor Guard
timerFerventStrikeCD:Stop(args.destGUID)
elseif cid == 122971 then--dazarai-juggernaut
timerMercilessAssaultCD:Stop(args.destGUID)
timerFanaticsRageCD:Stop(args.destGUID)
elseif cid == 122973 then--dazarai-confessor
timerMendingWardCD:Stop(args.destGUID)
timerBwonsamdisMantleCD:Stop(args.destGUID)
elseif cid == 122972 then--dazarai-augur
timerFieryEnchantCD:Stop(args.destGUID)
elseif cid == 122984 then--dazarai-colossus
timerSoulburnCD:Stop(args.destGUID)
elseif cid == 127879 then--shieldbearer-of-zul
timerBulwarkofJujuCD:Stop(args.destGUID)
elseif cid == 122969 then--zanchuli-witch-doctor
timerHexCD:Stop(args.destGUID)
elseif cid == 128434 then--feasting-skyscreamer
timerTerrifyingScreechCD:Stop(args.destGUID)
elseif cid == 129552 then--monzumi
timerWildThrashCD:Stop(args.destGUID)
elseif cid == 128455 then--tlonja
timerFrenziedChargeCD:Stop(args.destGUID)
elseif cid == 129553 then--dinomancer-kisho
timerDinoMightCD:Stop(args.destGUID)
timerDeadeyeAimCD:Stop(args.destGUID)
elseif cid == 122970 then--Shadowblade Stalker
timerVenomfangStrikeCD:Stop(args.destGUID)
end
end