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.
236 lines
9.0 KiB
236 lines
9.0 KiB
local mod = DBM:NewMod(2581, "DBM-Party-WarWithin", 5, 1270)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240821022435")
|
|
mod:SetCreatureID(211089)
|
|
mod:SetEncounterID(2838)
|
|
mod:SetHotfixNoticeRev(20240706000000)
|
|
--mod:SetMinSyncRevision(20211203000000)
|
|
--mod.respawnTime = 29
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 427001 426860 426787 452127 452099"
|
|
-- "SPELL_SUMMON 452145"
|
|
-- "SPELL_CAST_SUCCESS",
|
|
-- "SPELL_AURA_APPLIED",
|
|
-- "SPELL_AURA_REMOVED"
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED"
|
|
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
|
|
--[[
|
|
(target.name = "Anub'ikkaj" or target.name = "Ascendant Vis'coxria" or target.name = "Deathscreamer Iken'tak" or target.name = "Ixkreten the Unbreakable") and (type = "applybuff" or type = "removebuff" or type = "death" or type = "removebuffstack" or type = "applybuffstack")
|
|
or (source.name = "Anub'ikkaj" or source.name = "Ascendant Vis'coxria" or source.name = "Deathscreamer Iken'tak" or source.name = "Ixkreten the Unbreakable") and (type = "cast" or type = "begincast" or type = "applybuff" or type = "removebuff" or type = "removebuffstack" or type = "applybuffstack") and not ability.id = 1
|
|
--]]
|
|
--[[
|
|
(ability.id = 427001 or ability.id = 426860 or ability.id = 426787 or ability.id = 452127) and type = "begincast"
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
or ability.id = 452145 and type = "summon"
|
|
or ability.id = 452099 and type = "begincast"
|
|
--]]
|
|
--TODO, auto marking Animate Shadows? 7 of them always spawn so it may be overkill
|
|
local warnAnimatedShadows = mod:NewCountAnnounce(452127, 3)--Change to switch alert if they have to die asap
|
|
|
|
local specWarnTerrifyingSlam = mod:NewSpecialWarningRunCount(427001, nil, nil, nil, 4, 2)
|
|
local specWarnDarkOrb = mod:NewSpecialWarningDodgeCount(426860, nil, nil, nil, 2, 2)
|
|
local specWarnShadowDecay = mod:NewSpecialWarningDodgeCount(426787, nil, nil, nil, 2, 2)
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8)
|
|
local specWarnCongealedDarkness = mod:NewSpecialWarningInterruptCount(452099, nil, nil, nil, 1, 2, 4)
|
|
|
|
--All timers are 16 (or even lower) but are often extended to 23, 26, 33, or even in extreme cases 42.5
|
|
local timerTerrifyingSlamCD = mod:NewCDCountTimer(16, 427001, nil, nil, nil, 2)
|
|
local timerDarkOrbCD = mod:NewCDCountTimer(16, 426860, nil, nil, nil, 3)
|
|
local timerShadowDecayCD = mod:NewCDCountTimer(16, 426787, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
|
|
local timerAnimateShadowsCD = mod:NewCDCountTimer(40, 452127, nil, nil, nil, 1, nil, DBM_COMMON_L.MYTHIC_ICON)
|
|
|
|
mod:AddPrivateAuraSoundOption(426865, true, 426860, 1)--Dark Orb target
|
|
|
|
mod.vb.slamCount = 0
|
|
mod.vb.orbCount = 0
|
|
mod.vb.shadowCount = 0
|
|
mod.vb.addsCount = 0
|
|
local castsPerGUID = {}
|
|
|
|
--Animate Shadows triggers 7.5 second ICD
|
|
--Dark Orb triggers 9 second ICD
|
|
--Terrifying Slam triggers 7 second ICD
|
|
--Shadowy Decay triggers 11 second ICD
|
|
--No spells have spell priority. It truly is wild west despite how consistent it looks in some logs, look hard enough you find others
|
|
--Nerzhul code NOT usable here, upon further log review, there is no consistency because all spells (meaning no spell priority is in place)
|
|
local function updateAllTimers(self, ICD)
|
|
DBM:Debug("updateAllTimers running", 3)
|
|
-- local nextCast = 0
|
|
if timerAnimateShadowsCD:GetRemaining(self.vb.addsCount+1) < ICD then
|
|
local elapsed, total = timerAnimateShadowsCD:GetTime(self.vb.addsCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
DBM:Debug("timerAnimateShadowsCD extended by: "..extend, 2)
|
|
timerAnimateShadowsCD:Update(elapsed, total+extend, self.vb.addsCount+1)
|
|
-- nextCast = 1
|
|
end
|
|
if timerDarkOrbCD:GetRemaining(self.vb.orbCount+1) < ICD then
|
|
local elapsed, total = timerDarkOrbCD:GetTime(self.vb.orbCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
--if nextCast == 1 then--Previous spells in queue priority are head of it in line, auto adjust
|
|
-- extend = extend + 7.5
|
|
-- DBM:Debug("timerDarkOrbCD extended by: "..extend.." plus 7.5 for Animate Shadows", 2)
|
|
--else
|
|
DBM:Debug("timerDarkOrbCD extended by: "..extend, 2)
|
|
-- nextCast = 2
|
|
--end
|
|
timerDarkOrbCD:Update(elapsed, total+extend, self.vb.orbCount+1)
|
|
end
|
|
if timerTerrifyingSlamCD:GetRemaining(self.vb.slamCount+1) < ICD then
|
|
local elapsed, total = timerTerrifyingSlamCD:GetTime(self.vb.slamCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
--if nextCast == 1 then--Previous spells in queue priority are head of it in line, auto adjust
|
|
-- extend = extend + 7.5
|
|
-- DBM:Debug("timerTerrifyingSlamCD extended by: "..extend.." plus 7.5 for Animate Shadows", 2)
|
|
--elseif nextCast == 2 then
|
|
-- extend = extend + 9
|
|
-- DBM:Debug("timerTerrifyingSlamCD extended by: "..extend.." plus 9 for Dark Orb", 2)
|
|
--else
|
|
DBM:Debug("timerTerrifyingSlamCD extended by: "..extend, 2)
|
|
-- nextCast = 3
|
|
--end
|
|
timerTerrifyingSlamCD:Update(elapsed, total+extend, self.vb.slamCount+1)
|
|
end
|
|
if timerShadowDecayCD:GetRemaining(self.vb.shadowCount+1) < ICD then
|
|
local elapsed, total = timerShadowDecayCD:GetTime(self.vb.shadowCount+1)
|
|
local extend = ICD - (total-elapsed)
|
|
--if nextCast == 1 then--Previous spells in queue priority are head of it in line, auto adjust
|
|
-- extend = extend + 7.5
|
|
-- DBM:Debug("timerShadowDecayCD extended by: "..extend.." plus 7.5 for Animate Shadows", 2)
|
|
--elseif nextCast == 2 then
|
|
-- extend = extend + 9
|
|
-- DBM:Debug("timerShadowDecayCD extended by: "..extend.." plus 9 for Dark Orb", 2)
|
|
--elseif nextCast == 3 then
|
|
-- extend = extend + 7
|
|
-- DBM:Debug("timerShadowDecayCD extended by: "..extend.." plus 7 for Terrifying Slam", 2)
|
|
--else
|
|
DBM:Debug("timerShadowDecayCD extended by: "..extend, 2)
|
|
--end
|
|
timerShadowDecayCD:Update(elapsed, total+extend, self.vb.shadowCount+1)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.slamCount = 0
|
|
self.vb.orbCount = 0
|
|
self.vb.shadowCount = 0
|
|
self.vb.addsCount = 0
|
|
table.wipe(castsPerGUID)
|
|
timerDarkOrbCD:Start(6-delay, 1)
|
|
timerTerrifyingSlamCD:Start(13-delay, 1)
|
|
timerShadowDecayCD:Start(20-delay, 1)
|
|
if self:IsMythic() then
|
|
timerAnimateShadowsCD:Start(32-delay, 1)
|
|
end
|
|
self:EnablePrivateAuraSound(426865, "targetyou", 2)--Dark Orb
|
|
self:EnablePrivateAuraSound(450855, "targetyou", 2, 426865)--Register Additional ID
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 427001 then
|
|
self.vb.slamCount = self.vb.slamCount + 1
|
|
specWarnTerrifyingSlam:Show(self.vb.slamCount)
|
|
if DBM:UnitBuff("boss1", 427153, 427154) then--Terrifying Empowerment
|
|
specWarnTerrifyingSlam:Play("carefly")
|
|
specWarnTerrifyingSlam:ScheduleVoice(1.2, "fearsoon")
|
|
else
|
|
specWarnTerrifyingSlam:Play("justrun")
|
|
end
|
|
timerTerrifyingSlamCD:Start(nil, self.vb.slamCount+1)
|
|
updateAllTimers(self, 7)
|
|
elseif spellId == 426860 then
|
|
self.vb.orbCount = self.vb.orbCount + 1
|
|
specWarnDarkOrb:Show(self.vb.orbCount)
|
|
specWarnDarkOrb:Play("watchorb")
|
|
timerDarkOrbCD:Start(nil, self.vb.orbCount+1)
|
|
updateAllTimers(self, 9)
|
|
elseif spellId == 426787 then
|
|
self.vb.shadowCount = self.vb.shadowCount + 1
|
|
specWarnShadowDecay:Show(self.vb.shadowCount)
|
|
specWarnShadowDecay:Play("aesoon")
|
|
timerShadowDecayCD:Start(nil, self.vb.shadowCount+1)
|
|
updateAllTimers(self, 11)
|
|
elseif spellId == 452127 then
|
|
self.vb.addsCount = self.vb.addsCount + 1
|
|
warnAnimatedShadows:Show(self.vb.addsCount)
|
|
timerAnimateShadowsCD:Start(nil, self.vb.addsCount+1)
|
|
updateAllTimers(self, 7.5)
|
|
elseif spellId == 452099 then
|
|
if not castsPerGUID[args.sourceGUID] then
|
|
castsPerGUID[args.sourceGUID] = 0
|
|
end
|
|
castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1
|
|
local count = castsPerGUID[args.sourceGUID]
|
|
if self:CheckInterruptFilter(args.sourceGUID, false, false) then--Count interrupt, so cooldown is not checked
|
|
specWarnCongealedDarkness:Show(args.sourceName, count)
|
|
if count < 6 then
|
|
specWarnCongealedDarkness:Play("kick"..count.."r")
|
|
else
|
|
specWarnCongealedDarkness:Play("kickcast")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_SUMMON(args)
|
|
local spellId = args.spellId
|
|
if spellId == 452145 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|
|
--[[
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 372858 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|
|
--[[
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 372858 then
|
|
|
|
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
|
|
--]]
|
|
|
|
--[[
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 193435 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|
|
--[[
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 74859 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|