|
|
|
|
local mod = DBM:NewMod(2477, "DBM-Party-Dragonflight", 3, 1198)
|
|
|
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
|
|
|
|
|
|
mod:SetRevision("20240426062327")
|
|
|
|
|
mod:SetCreatureID(186151)
|
|
|
|
|
mod:SetEncounterID(2580)
|
|
|
|
|
mod:SetHotfixNoticeRev(20221214000000)
|
|
|
|
|
--mod:SetMinSyncRevision(20211203000000)
|
|
|
|
|
--mod.respawnTime = 29
|
|
|
|
|
mod.sendMainBossGUID = true
|
|
|
|
|
|
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
|
|
|
|
|
|
mod:RegisterEventsInCombat(
|
|
|
|
|
"SPELL_CAST_START 375943 375937 375929 376723 376725 376892 376827 376829 376727",
|
|
|
|
|
"SPELL_CAST_SUCCESS 376634 376730 376864",
|
|
|
|
|
"SPELL_AURA_APPLIED 376634 376864 376827",
|
|
|
|
|
"SPELL_AURA_REMOVED 376634 376864 376727",
|
|
|
|
|
"SPELL_PERIODIC_DAMAGE 376899",
|
|
|
|
|
"SPELL_PERIODIC_MISSED 376899",
|
|
|
|
|
"UNIT_DIED"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
--TODO, timers with longer logs to verify upheavel and iron spear P1 timers
|
|
|
|
|
--[[
|
|
|
|
|
(ability.id = 375943 or ability.id = 376892 or ability.id = 375937 or ability.id = 376827 or ability.id = 375929 or ability.id = 376829 or ability.id = 376723 or ability.id = 376727) and type = "begincast"
|
|
|
|
|
or (ability.id = 376634 or ability.id = 376730 or ability.id = 376864) and type = "cast"
|
|
|
|
|
or target.id = 190294 and type = "death"
|
|
|
|
|
or ability.id = 376727 and type = "removebuff"
|
|
|
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
|
|
|
--]]
|
|
|
|
|
--Stage One: Balakar's Might
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25185))
|
|
|
|
|
local warnSavageStrike = mod:NewSpellAnnounce(375929, 4, nil, "Tank|Healer")
|
|
|
|
|
local warnIronSpear = mod:NewTargetAnnounce(376634, 2)
|
|
|
|
|
|
|
|
|
|
local specWarnIronSpear = mod:NewSpecialWarningMoveAway(376634, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellIronSpear = mod:NewYell(376634)
|
|
|
|
|
local yellIronSpearFades = mod:NewShortFadesYell(376634)
|
|
|
|
|
local specWarnUpheaval = mod:NewSpecialWarningDodge(375943, nil, nil, nil, 2, 2)
|
|
|
|
|
local specWarnRendingStrike = mod:NewSpecialWarningDefensive(375937, nil, nil, nil, 1, 2)
|
|
|
|
|
|
|
|
|
|
local timerIronSpearCD = mod:NewCDTimer(37, 376634, nil, nil, nil, 3)--Need more data
|
|
|
|
|
local timerUpheavalCD = mod:NewCDTimer(37, 375943, nil, nil, nil, 3)--Need data at all
|
|
|
|
|
local timerRendingStrikeCD = mod:NewCDCountTimer(21.9, 375937, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)--CD used for both rending and savage
|
|
|
|
|
|
|
|
|
|
--Intermission: Stormwinds
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25192))
|
|
|
|
|
local warnStormwinds = mod:NewSpellAnnounce(376730, 2)
|
|
|
|
|
|
|
|
|
|
local specWarnStormBolt = mod:NewSpecialWarningInterrupt(376725, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
|
|
|
|
|
|
--Stage Two: The Storm Unleashed
|
|
|
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(25187))
|
|
|
|
|
local warnPhase2 = mod:NewPhaseAnnounce(2, 2)
|
|
|
|
|
local warnStaticSpear = mod:NewTargetAnnounce(376864, 2)
|
|
|
|
|
local warnThunderStrike = mod:NewSpellAnnounce(376829, 4, nil, "Tank|Healer")
|
|
|
|
|
|
|
|
|
|
local specWarnStaticSpear = mod:NewSpecialWarningMoveAway(376864, nil, nil, nil, 1, 2)
|
|
|
|
|
local yellStaticSpear = mod:NewYell(376864)
|
|
|
|
|
local yellStaticSpearFades = mod:NewShortFadesYell(376864)
|
|
|
|
|
local specWarnCracklingUpheaval = mod:NewSpecialWarningDodge(376892, nil, nil, nil, 2, 2)
|
|
|
|
|
local specWarnConductiveStrike = mod:NewSpecialWarningDefensive(376827, nil, nil, nil, 1, 2)
|
|
|
|
|
local specWarnConductiveStrikeDispel = mod:NewSpecialWarningDispel(376827, "RemoveMagic", nil, nil, 1, 2)
|
|
|
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(376899, nil, nil, nil, 1, 8)
|
|
|
|
|
|
|
|
|
|
local timerStaticSpearCD = mod:NewCDTimer(38.3, 376864, nil, nil, nil, 3)
|
|
|
|
|
local timerCracklingUpheavalCD = mod:NewCDTimer(38.3, 376892, nil, nil, nil, 3)
|
|
|
|
|
local timerConductiveStrikeCD = mod:NewCDCountTimer(17, 376827, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)--CD used for both Condutive and Thunder
|
|
|
|
|
|
|
|
|
|
mod.vb.addsLeft = 0
|
|
|
|
|
mod.vb.comboCount = 0
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatStart(delay)
|
|
|
|
|
self.vb.addsLeft = 0
|
|
|
|
|
self.vb.comboCount = 0
|
|
|
|
|
self:SetStage(1)
|
|
|
|
|
timerRendingStrikeCD:Start(8-delay, 1)
|
|
|
|
|
timerIronSpearCD:Start(18-delay)
|
|
|
|
|
timerUpheavalCD:Start(37-delay)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 375943 then
|
|
|
|
|
specWarnUpheaval:Show()
|
|
|
|
|
specWarnUpheaval:Play("watchstep")
|
|
|
|
|
-- timerUpheavalCD:Start()
|
|
|
|
|
elseif spellId == 376892 then
|
|
|
|
|
specWarnCracklingUpheaval:Show()
|
|
|
|
|
if self:IsMythic() then
|
|
|
|
|
specWarnCracklingUpheaval:Play("runout")
|
|
|
|
|
else
|
|
|
|
|
specWarnCracklingUpheaval:Play("watchstep")
|
|
|
|
|
end
|
|
|
|
|
timerCracklingUpheavalCD:Start()
|
|
|
|
|
elseif spellId == 375937 then
|
|
|
|
|
self.vb.comboCount = self.vb.comboCount + 1
|
|
|
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
|
|
|
specWarnRendingStrike:Show()
|
|
|
|
|
specWarnRendingStrike:Play("defensive")
|
|
|
|
|
end
|
|
|
|
|
--Now alternates again
|
|
|
|
|
local timer = (self.vb.comboCount % 2 == 0) and 15 or 22
|
|
|
|
|
timerRendingStrikeCD:Start(timer, self.vb.comboCount+1)
|
|
|
|
|
elseif spellId == 376827 then
|
|
|
|
|
self.vb.comboCount = self.vb.comboCount + 1
|
|
|
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
|
|
|
specWarnConductiveStrike:Show()
|
|
|
|
|
specWarnConductiveStrike:Play("defensive")
|
|
|
|
|
end
|
|
|
|
|
local timer = (self.vb.comboCount % 2 == 0) and 17 or 22
|
|
|
|
|
timerConductiveStrikeCD:Start(timer, self.vb.comboCount+1)
|
|
|
|
|
elseif spellId == 375929 then
|
|
|
|
|
warnSavageStrike:Show()
|
|
|
|
|
elseif spellId == 376829 then
|
|
|
|
|
warnThunderStrike:Show()
|
|
|
|
|
elseif spellId == 376727 then--Boss casting Siphon Power
|
|
|
|
|
self:SetStage(1.5)
|
|
|
|
|
timerIronSpearCD:Stop()
|
|
|
|
|
timerUpheavalCD:Stop()
|
|
|
|
|
timerRendingStrikeCD:Stop()
|
|
|
|
|
elseif spellId == 376723 then--Adds casting Transfer Power
|
|
|
|
|
self.vb.addsLeft = self.vb.addsLeft + 1
|
|
|
|
|
elseif spellId == 376725 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
|
|
|
specWarnStormBolt:Show(args.sourceName)
|
|
|
|
|
specWarnStormBolt:Play("kickcast")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 376634 then
|
|
|
|
|
-- timerIronSpearCD:Start()
|
|
|
|
|
elseif spellId == 376730 and self:AntiSpam(3, 1) then
|
|
|
|
|
warnStormwinds:Show()
|
|
|
|
|
elseif spellId == 376864 then
|
|
|
|
|
timerStaticSpearCD:Start()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 376634 then
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnIronSpear:Show()
|
|
|
|
|
specWarnIronSpear:Play("runout")
|
|
|
|
|
yellIronSpear:Yell()
|
|
|
|
|
yellIronSpearFades:Countdown(spellId)
|
|
|
|
|
else
|
|
|
|
|
warnIronSpear:Show(args.destName)
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 376864 then
|
|
|
|
|
if args:IsPlayer() then
|
|
|
|
|
specWarnStaticSpear:Show()
|
|
|
|
|
specWarnStaticSpear:Play("runout")
|
|
|
|
|
yellStaticSpear:Yell()
|
|
|
|
|
yellStaticSpearFades:Countdown(spellId)
|
|
|
|
|
else
|
|
|
|
|
warnStaticSpear:Show(args.destName)
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 376827 and self:CheckDispelFilter("magic") then
|
|
|
|
|
specWarnConductiveStrikeDispel:Show(args.destName)
|
|
|
|
|
specWarnConductiveStrikeDispel:Play("helpdispel")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 376634 and args:IsPlayer() then
|
|
|
|
|
yellIronSpearFades:Cancel()
|
|
|
|
|
elseif spellId == 376864 and args:IsPlayer() then
|
|
|
|
|
yellStaticSpearFades:Cancel()
|
|
|
|
|
elseif spellId == 376727 then
|
|
|
|
|
self:SetStage(2)
|
|
|
|
|
self.vb.comboCount = 0
|
|
|
|
|
warnPhase2:Show()
|
|
|
|
|
timerConductiveStrikeCD:Start(8, 1)
|
|
|
|
|
timerStaticSpearCD:Start(18)
|
|
|
|
|
timerCracklingUpheavalCD:Start(37)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:UNIT_DIED(args)
|
|
|
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
|
|
|
if cid == 190294 then--Nokhud Stormcaster
|
|
|
|
|
self.vb.addsLeft = self.vb.addsLeft - 1
|
|
|
|
|
--Unused for now
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
|
|
|
if spellId == 376899 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
|