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.

194 lines
8.8 KiB

local mod = DBM:NewMod("AraKaraTrash", "DBM-Party-WarWithin", 6)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240818054948")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod.isTrashModBossFightAllowed = true
mod:RegisterEvents(
"SPELL_CAST_START 434824 434802 438877 436322 438826 448248 453161 432967 433841 433845",
"SPELL_CAST_SUCCESS 434802 434793 438622 448248 433841",
"SPELL_INTERRUPT",
-- "SPELL_AURA_APPLIED",
-- "SPELL_AURA_APPLIED_DOSE",
-- "SPELL_AURA_REMOVED",
"UNIT_DIED"
)
--[[
(ability.id = 438826 or ability.id = 434252 or ability.id = 433845 or ability.id = 433841 or ability.id = 453161 or ability.id = 434824 or ability.id = 438877 or ability.id = 448248 or ability.id = 434802 or ability.id = 436322 or ability.id = 432967) and (type = "begincast" or type = "cast")
or (ability.id = 438622 or ability.id = 434793) and type = "cast"
or (stoppedAbility.id = 438622 or stoppedAbility.id = 434793 or stoppedAbility.id = 438826 or stoppedAbility.id = 434252 or stoppedAbility.id = 433845 or stoppedAbility.id = 433841 or stoppedAbility.id = 453161 or stoppedAbility.id = 434824 or stoppedAbility.id = 438877 or stoppedAbility.id = 448248 or stoppedAbility.id = 434802 or stoppedAbility.id = 436322 or stoppedAbility.id = 432967)
or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
local warnHorrifyingshrill = mod:NewCastAnnounce(434802, 4)--High Prio Off interrupt
local warnRadiantBarrage = mod:NewCastAnnounce(434793, 4)--High Prio Off interrupt
local warnVenomVolley = mod:NewCastAnnounce(433841, 4)--High Prio Off interrupt
local warnAlarmShill = mod:NewCastAnnounce(432967, 4, nil, nil, nil, nil, nil, 2)
local warnToxicRupture = mod:NewSpellAnnounce(438622, 4, nil, "Melee")
local warnCalloftheBrood = mod:NewSpellAnnounce(438877, 3)
local warnPoisonousCloud = mod:NewSpellAnnounce(438826, 3)
local specWarnWebSpray = mod:NewSpecialWarningDodge(434824, nil, nil, nil, 2, 2)
local specWarnImpale = mod:NewSpecialWarningDodge(453161, nil, nil, nil, 2, 2)
local specWarnEruptingWebs = mod:NewSpecialWarningDodge(433845, nil, nil, nil, 2, 2)
--local yellChainLightning = mod:NewYell(387127)
--local specWarnStormshield = mod:NewSpecialWarningDispel(386223, "MagicDispeller", nil, nil, 1, 2)
local specWarnHorrifyingShrill = mod:NewSpecialWarningInterrupt(434802, "HasInterrupt", nil, nil, 1, 2)--High Prio
local specWarnRadiantBarrage = mod:NewSpecialWarningInterrupt(434793, "HasInterrupt", nil, nil, 1, 2)--High Prio
local specWarnPoisonBolt = mod:NewSpecialWarningInterrupt(436322, "HasInterrupt", nil, nil, 1, 2)--High Prio (no CD timer, it's recast out of spell lockout regardless
local specWarnRevoltingVolley = mod:NewSpecialWarningInterrupt(448248, "HasInterrupt", nil, nil, 1, 2)
local specWarnVenomVolley = mod:NewSpecialWarningInterrupt(433841, "HasInterrupt", nil, nil, 1, 2)--High Prio
local timerWebSprayCD = mod:NewCDNPTimer(7, 434824, nil, nil, nil, 3)--7-8.2 from last cast finish/kick
local timerHorrifyingShrillCD = mod:NewCDNPTimer(13.3, 434802, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--13.3-15.5 from last cast finish/kick
local timerRadiantBarrageCD = mod:NewCDNPTimer(16.8, 434793, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerCalloftheBroodCD = mod:NewCDNPTimer(26.6, 438877, nil, nil, nil, 1)
local timerPoisonousCloudCD = mod:NewCDNPTimer(15.3, 438826, nil, nil, nil, 3)--15.3-24.7
local timerRevoltingVolleyCD = mod:NewCDNPTimer(18.3, 448248, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerImpaleCD = mod:NewCDNPTimer(14.5, 453161, nil, nil, nil, 3)
local timerVenomVolleyCD = mod:NewCDNPTimer(18.2, 433841, nil, "HasInterrupt", nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
local timerEruptingWebsCD = mod:NewCDNPTimer(18.1, 433845, nil, nil, nil, 3)
--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
--[[
function mod:CLTarget(targetname)
if not targetname then return end
if targetname == UnitName("player") then
if self:AntiSpam(4, 5) then
specWarnChainLightning:Show()
specWarnChainLightning:Play("runout")
end
yellChainLightning:Yell()
end
end
--]]
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if not self:IsValidWarning(args.sourceGUID) then return end
if spellId == 434824 then
timerWebSprayCD:Start(nil, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnWebSpray:Show()
specWarnWebSpray:Play("shockwave")
end
elseif spellId == 434802 then
if self.Options.SpecWarn434802interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHorrifyingShrill:Show(args.sourceName)
specWarnHorrifyingShrill:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnHorrifyingshrill:Show()
end
elseif spellId == 438877 then
warnCalloftheBrood:Show()
timerCalloftheBroodCD:Start(26.6, args.sourceGUID)--Ok to start here, Nakt can't be interrupted or CCed
elseif spellId == 436322 then
--Even though high priorty, no off interrupt announce due to fact it'll be recast every 3-6 (based on spell lockout)
--We do not want to spam users in this way. By Quazii's SS, it's high prio but only if you can spare an interrupt CD for it.
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnPoisonBolt:Show(args.sourceName)
specWarnPoisonBolt:Play("kickcast")
end
elseif spellId == 438826 then
warnPoisonousCloud:Show()
timerPoisonousCloudCD:Start(15.3, args.sourceGUID)
elseif spellId == 448248 then
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnRevoltingVolley:Show(args.sourceName)
specWarnRevoltingVolley:Play("kickcast")
end
elseif spellId == 453161 then
timerImpaleCD:Start(14.5, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnImpale:Show()
specWarnImpale:Play("shockwave")
end
elseif spellId == 432967 and self:AntiSpam(5, 6) then
warnAlarmShill:Show()
warnAlarmShill:Play("crowdcontrol")
elseif spellId == 433841 then
if self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnVenomVolley:Show(args.sourceName)
specWarnVenomVolley:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnVenomVolley:Show()
end
elseif spellId == 433845 then
timerEruptingWebsCD:Start(18.1, args.sourceGUID)
if self:AntiSpam(3, 2) then
specWarnEruptingWebs:Show()
specWarnEruptingWebs:Play("watchstep")
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if not self:IsValidWarning(args.sourceGUID) then return end
if spellId == 434802 then
timerHorrifyingShrillCD:Start(13.3, args.sourceGUID)
elseif spellId == 434793 then
if self.Options.SpecWarn434793interrupt and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnRadiantBarrage:Show(args.sourceName)
specWarnRadiantBarrage:Play("kickcast")
elseif self:AntiSpam(3, 7) then
warnRadiantBarrage:Show()
end
timerRadiantBarrageCD:Start(16.8, args.sourceGUID)
elseif spellId == 438622 and self:AntiSpam(3, 6) then
warnToxicRupture:Show()
elseif spellId == 448248 then
timerRevoltingVolleyCD:Start(18.3, args.sourceGUID)
elseif spellId == 433841 then
timerVenomVolleyCD:Start(18.2, args.sourceGUID)
end
end
function mod:SPELL_INTERRUPT(args)
if args.extraSpellId == 434802 then
timerHorrifyingShrillCD:Start(13.3, args.sourceGUID)
elseif args.extraSpellId == 448248 then
timerRevoltingVolleyCD:Start(18.3, args.sourceGUID)
elseif args.extraSpellId == 433841 then
timerVenomVolleyCD:Start(18.2, args.sourceGUID)
end
end
--[[
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 395035 then
end
end
--mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
--]]
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 217531 then--Ixin
timerWebSprayCD:Stop(args.destGUID)
timerHorrifyingShrillCD:Stop(args.destGUID)
elseif cid == 218324 then--Nakt
timerWebSprayCD:Stop(args.destGUID)
timerCalloftheBroodCD:Stop(args.destGUID)
elseif cid == 217533 then--Atik
timerWebSprayCD:Stop(args.destGUID)
timerPoisonousCloudCD:Stop(args.destGUID)
elseif cid == 216293 then--Trilling Attendant
timerRadiantBarrageCD:Stop(args.destGUID)
elseif cid == 223253 then--Bloodstained Webmage
timerRevoltingVolleyCD:Stop(args.destGUID)
elseif cid == 216338 then--Hulking Bodyguard
timerImpaleCD:Stop(args.destGUID)
elseif cid == 216364 then--Blood Overseer
timerVenomVolleyCD:Stop(args.destGUID)
timerEruptingWebsCD:Stop(args.destGUID)
end
end