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.

167 lines
6.4 KiB

local mod = DBM:NewMod(2585, "DBM-Party-WarWithin", 6, 1271)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240818054948")
mod:SetCreatureID(215407)
mod:SetEncounterID(2901)
mod:SetHotfixNoticeRev(20240818000000)
mod:SetMinSyncRevision(20240818000000)
--mod.respawnTime = 29
mod.sendMainBossGUID = true
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 432117 432227 432130 461487"
-- "SPELL_CAST_SUCCESS 431985"
-- "SPELL_AURA_APPLIED"
-- "SPELL_AURA_REMOVED"
-- "SPELL_PERIODIC_DAMAGE",
-- "SPELL_PERIODIC_MISSED"
)
--TODO, grasping spammy
--[[
(ability.id = 432117 or ability.id = 432227 or ability.id = 432130 or ability.id = 461487) and type = "begincast"
or type = "dungeonencounterstart" or type = "dungeonencounterend"
or ability.id = 431985 and type = "cast"
--]]
local warnVenomVolley = mod:NewCountAnnounce(432227, 3)
local warnCultivatedPoisons = mod:NewCountAnnounce(461487, 3)
local specWarnCosmicSingularity = mod:NewSpecialWarningMoveTo(432117, nil, nil, nil, 3, 15)
local specWarnVenomVolley = mod:NewSpecialWarningDispel(432227, "RemovePoison", nil, nil, 1, 2)
local specWarnCultivatedPoisons = mod:NewSpecialWarningDispel(461487, "RemovePoison", nil, nil, 1, 2, 4)
local specWarnEruptingWebs = mod:NewSpecialWarningDodgeCount(432130, nil, nil, nil, 2, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)
--local timerAddsCD = mod:NewCDTimer(3, -28411, nil, nil, nil, 1, 431985)
local timerCosmicSingularityCD = mod:NewCDCountTimer(46.1, 432117, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)--54.6 old
local timerVenomVolleyCD = mod:NewCDCountTimer(22.6, 432227, nil, nil, nil, 2, nil, DBM_COMMON_L.POISON_ICON)
local timerCulturePoisonsCD = mod:NewCDCountTimer(21.0, 461487, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON)
local timerEruptingWebsCD = mod:NewCDCountTimer(18.1, 432130, nil, nil, nil, 3)--18.1-19.3
mod.vb.cosmicCount = 0
mod.vb.venomCount = 0
mod.vb.eruptingCount = 0
function mod:OnCombatStart(delay)
self.vb.cosmicCount = 0
self.vb.venomCount = 0
self.vb.eruptingCount = 0
-- timerAddsCD:Start()--3
timerEruptingWebsCD:Start(6.2-delay, 1)
if self:IsMythic() then
timerCulturePoisonsCD:Start(12-delay, 1)
else
timerVenomVolleyCD:Start(12-delay, 1)--16.8 on normal still?
end
timerCosmicSingularityCD:Start(26.5-delay, 1)
end
--function mod:OnCombatEnd()
--end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 432117 then
self.vb.cosmicCount = self.vb.cosmicCount + 1
specWarnCosmicSingularity:Show(DBM_COMMON_L.POOL)
specWarnCosmicSingularity:Play("movetopool")
--Timer has predictable spell queuing after first cast, but first cast is 46.1-48
timerCosmicSingularityCD:Start(self.vb.cosmicCount == 1 and 46.1 or 47.2, self.vb.cosmicCount+1)
--Do some timer adjustments if needed
if self:IsMythic() then
--if time remaining on Venom is < 7.3, it's extended by this every time
if timerCulturePoisonsCD:GetRemaining(self.vb.venomCount+1) < 7.2 then
local elapsed, total = timerCulturePoisonsCD:GetTime(self.vb.venomCount+1)
local extend = 7.2 - (total-elapsed)
DBM:Debug("timerCulturePoisonsCD extended by: "..extend, 2)
timerCulturePoisonsCD:Update(elapsed, total+extend, self.vb.venomCount+1)
end
else
--if time remaining on Venom is < 7.3, it's extended by this every time
if timerVenomVolleyCD:GetRemaining(self.vb.venomCount+1) < 7.2 then
local elapsed, total = timerVenomVolleyCD:GetTime(self.vb.venomCount+1)
local extend = 7.2 - (total-elapsed)
DBM:Debug("timerVenomVolleyCD extended by: "..extend, 2)
timerVenomVolleyCD:Update(elapsed, total+extend, self.vb.venomCount+1)
end
end
--if time remaining on Erupting Webs is < 13.3, it's extended by this every time
if timerEruptingWebsCD:GetRemaining(self.vb.eruptingCount+1) < 13.3 then
local elapsed, total = timerEruptingWebsCD:GetTime(self.vb.eruptingCount+1)
local extend = 13.3 - (total-elapsed)
DBM:Debug("timerEruptingWebsCD extended by: "..extend, 2)
timerEruptingWebsCD:Update(elapsed, total+extend, self.vb.eruptingCount+1)
end
elseif spellId == 432227 then--Non Mythic
self.vb.venomCount = self.vb.venomCount + 1
if self.Options.SpecWarn432227dispel and self:CheckDispelFilter("poison") then
specWarnVenomVolley:Show(DBM_COMMON_L.ALLIES)
specWarnVenomVolley:Play("helpdispel")
else
warnVenomVolley:Show(self.vb.venomCount)
end
--Start next timer if cosmic is far enough away, else wait for cosmic to restart timer
if timerCosmicSingularityCD:GetRemaining(self.vb.cosmicCount+1) >= 27.9 then
timerVenomVolleyCD:Start(nil, self.vb.venomCount+1)
end
elseif spellId == 461487 then--Mythic
self.vb.venomCount = self.vb.venomCount + 1
if self.Options.SpecWarn461487dispel and self:CheckDispelFilter("poison") then
specWarnCultivatedPoisons:Show(DBM_COMMON_L.ALLIES)
specWarnCultivatedPoisons:Play("helpdispel")
else
warnCultivatedPoisons:Show(self.vb.venomCount)
end
--Start next timer if cosmic is far enough away, else wait for cosmic to restart timer
if timerCosmicSingularityCD:GetRemaining(self.vb.cosmicCount+1) >= 27.9 then
timerCulturePoisonsCD:Start(nil, self.vb.venomCount+1)
end
elseif spellId == 432130 then
self.vb.eruptingCount = self.vb.eruptingCount + 1
specWarnEruptingWebs:Show(self.vb.eruptingCount)
specWarnEruptingWebs:Play("watchstep")
--Start next timer if cosmic is far enough away, else wait for cosmic to restart timer
if timerCosmicSingularityCD:GetRemaining(self.vb.cosmicCount+1) >= 18.1 then
timerEruptingWebsCD:Start(nil, self.vb.eruptingCount+1)
end
--timerAddsCD:Stop()
--timerAddsCD:Start(2.1)--2.1-5
end
end
--[[
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 431985 then
timerAddsCD:Start()
end
end
--]]
--[[
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 432031 then
if args:IsPlayer() then
end
end
end
--mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
--]]
--[[
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 372820 and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then
specWarnGTFO:Show(spellName)
specWarnGTFO:Play("watchfeet")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
--]]