|
|
|
|
local isRetail = WOW_PROJECT_ID == (WOW_PROJECT_MAINLINE or 1)
|
|
|
|
|
local mod = DBM:NewMod(116, "DBM-Party-Cataclysm", 8, 68)
|
|
|
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
|
|
|
|
|
|
mod.statTypes = "normal,heroic,challenge,timewalker"
|
|
|
|
|
mod.upgradedMPlus = true
|
|
|
|
|
|
|
|
|
|
mod:SetRevision("20230621232728")
|
|
|
|
|
mod:SetCreatureID(43875)
|
|
|
|
|
mod:SetEncounterID(1042)
|
|
|
|
|
mod:SetHotfixNoticeRev(20230526000000)
|
|
|
|
|
--mod:SetMinSyncRevision(20230226000000)
|
|
|
|
|
mod.sendMainBossGUID = true
|
|
|
|
|
|
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
|
|
|
|
|
|
mod:RegisterEventsInCombat(
|
|
|
|
|
"SPELL_CAST_START 87618 87622",
|
|
|
|
|
-- "SPELL_CAST_SUCCESS 413263",
|
|
|
|
|
"SPELL_AURA_APPLIED 86911",
|
|
|
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
--If cataclysm classic is pre nerf, static cling has shorter cast and needs faster alert
|
|
|
|
|
--TODO, verify changes on non mythic+ in 10.1
|
|
|
|
|
--TODO, diff logs can have very different results for chain lighting, seems due to boss sometimes skiping entire casts or delaying them
|
|
|
|
|
--[[
|
|
|
|
|
(ability.id = 87622 or ability.id = 87618) and type = "begincast"
|
|
|
|
|
or (ability.id = 86930 or ability.id = 413263) and type = "cast"
|
|
|
|
|
or ability.id = 86911 and type = "applybuff"
|
|
|
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
|
|
|
or (source.type = "NPC" and source.firstSeen = timestamp) and (source.id = 52019) or (target.type = "NPC" and target.firstSeen = timestamp) and (target.id = 52019)
|
|
|
|
|
--]]
|
|
|
|
|
local warnStaticCling = mod:NewCastAnnounce(87618, 4)
|
|
|
|
|
local warnChainLightning = mod:NewTargetAnnounce(87622, 3)
|
|
|
|
|
|
|
|
|
|
local specWarnStaticCling = mod:NewSpecialWarningJump(87618, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnNova = mod:NewSpecialWarningSwitchCount(isRetail and 413263 or 96260, "-Healer", nil, nil, 1, 2)
|
|
|
|
|
local specWarnGroundingField = mod:NewSpecialWarningMoveTo(86911, nil, DBM_CORE_L.AUTO_SPEC_WARN_OPTIONS.run:format(86911), nil, nil, 3)
|
|
|
|
|
local specWarnChainLit = mod:NewSpecialWarningMoveAway(87622, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellChainLit = mod:NewYell(87622)
|
|
|
|
|
|
|
|
|
|
local timerChainLightningCD = mod:NewCDTimer(13.4, 87622, nil, nil, nil, 3)
|
|
|
|
|
local timerStaticClingCD = mod:NewCDTimer(15.8, 87618, nil, nil, nil, 2)
|
|
|
|
|
local timerStaticCling = mod:NewCastTimer(10, 87618, nil, nil, nil, 5)
|
|
|
|
|
local timerStorm = mod:NewCastTimer(10, 86930, nil, nil, nil, 2)
|
|
|
|
|
local timerGroundingFieldCD = mod:NewCDCountTimer(45.7, 86911, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
|
local timerNovaCD = mod:NewCDCountTimer(12.1, isRetail and 413263 or 96260, nil, nil, nil, 1)
|
|
|
|
|
|
|
|
|
|
mod.vb.groundingCount = 0
|
|
|
|
|
mod.vb.novaCount = 0
|
|
|
|
|
|
|
|
|
|
function mod:LitTarget(targetname)
|
|
|
|
|
if not targetname then return end
|
|
|
|
|
if targetname == UnitName("player") then
|
|
|
|
|
specWarnChainLit:Show()
|
|
|
|
|
specWarnChainLit:Play("runout")
|
|
|
|
|
yellChainLit:Yell()
|
|
|
|
|
else
|
|
|
|
|
warnChainLightning:Show(targetname)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatStart(delay)
|
|
|
|
|
self.vb.groundingCount = 0
|
|
|
|
|
self.vb.novaCount = 0
|
|
|
|
|
if self:IsMythicPlus() then
|
|
|
|
|
timerChainLightningCD:Start(12.1-delay)
|
|
|
|
|
timerNovaCD:Start(18.1, 1)
|
|
|
|
|
timerStaticClingCD:Start(25.3-delay)
|
|
|
|
|
timerGroundingFieldCD:Start(30.3-delay, 1)
|
|
|
|
|
else--TODO, check non M+ on 10.1
|
|
|
|
|
timerNovaCD:Start(10.7, 1)
|
|
|
|
|
timerStaticClingCD:Start(10.7-delay)
|
|
|
|
|
timerChainLightningCD:Start(13.1-delay)
|
|
|
|
|
timerGroundingFieldCD:Start(16.9-delay, 1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
|
|
|
if args.spellId == 87618 then
|
|
|
|
|
--1.25 post nerf in classic, 1 sec pre nerf
|
|
|
|
|
--3 lol giga nerf in M+
|
|
|
|
|
warnStaticCling:Show()
|
|
|
|
|
specWarnStaticCling:Schedule(2.3)--delay message since jumping at start of cast is no longer correct in 4.0.6+
|
|
|
|
|
specWarnStaticCling:ScheduleVoice(2.3, "jumpnow")
|
|
|
|
|
timerStaticCling:Start(3)
|
|
|
|
|
local expectedTimer = self:IsMythicPlus() and 29.1 or 15.8
|
|
|
|
|
if timerGroundingFieldCD:GetRemaining() < expectedTimer then
|
|
|
|
|
timerStaticClingCD:Start(expectedTimer)
|
|
|
|
|
end
|
|
|
|
|
elseif args.spellId == 87622 then
|
|
|
|
|
self:ScheduleMethod(0.2, "BossTargetScanner", args.sourceGUID, "LitTarget", 0.1, 8, true)
|
|
|
|
|
local expectedTimer = self:IsMythicPlus() and 18.1 or 13.4
|
|
|
|
|
if timerGroundingFieldCD:GetRemaining() < expectedTimer then
|
|
|
|
|
timerChainLightningCD:Start(expectedTimer)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
|
|
|
if args.spellId == 413263 and self:AntiSpam(5, 2) then
|
|
|
|
|
if self:IsMythicPlus() then
|
|
|
|
|
if timerGroundingFieldCD:GetRemaining() < 25.4 then
|
|
|
|
|
timerNovaCD:Start(25.4)
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
if timerGroundingFieldCD:GetRemaining() < 12.1 then
|
|
|
|
|
timerNovaCD:Start()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
|
|
|
if args.spellId == 86911 and self:AntiSpam(5, 1) then
|
|
|
|
|
self.vb.groundingCount = self.vb.groundingCount + 1
|
|
|
|
|
specWarnGroundingField:Show(args.spellName)
|
|
|
|
|
specWarnGroundingField:Play("findshelter")
|
|
|
|
|
timerStorm:Start()
|
|
|
|
|
if self:IsMythicPlus() then
|
|
|
|
|
timerChainLightningCD:Restart(16.9)--First cast can be delayed or skipped entirely
|
|
|
|
|
timerNovaCD:Restart(25.4, self.vb.novaCount+1)
|
|
|
|
|
timerStaticClingCD:Restart(33.7)
|
|
|
|
|
timerGroundingFieldCD:Start(65.5, self.vb.groundingCount+1)
|
|
|
|
|
else
|
|
|
|
|
timerStaticClingCD:Restart(12)
|
|
|
|
|
--timerChainLightningCD:Start(19.3)
|
|
|
|
|
timerNovaCD:Restart(22.9, self.vb.novaCount+1)
|
|
|
|
|
timerGroundingFieldCD:Start(45.7, self.vb.groundingCount+1)--45.7
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--Pre 10.1 "Summon Skyfall Star-96260-npc:43875-000008E8D0 = pull:10.7, 29.1, 14.6, 31.6, 13.4, 31.6, 12.1", -- [7]
|
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, spellId)
|
|
|
|
|
if spellId == 96260 then
|
|
|
|
|
self.vb.novaCount = self.vb.novaCount + 1
|
|
|
|
|
specWarnNova:Show(self.vb.novaCount)
|
|
|
|
|
specWarnNova:Play("killmob")
|
|
|
|
|
local expectedTime = self:IsMythicPlus() and 25.1 or 12.1
|
|
|
|
|
if timerGroundingFieldCD:GetRemaining() < expectedTime then
|
|
|
|
|
timerNovaCD:Start(expectedTime, self.vb.novaCount+1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|