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
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
|
|
|