local mod = DBM:NewMod(2595, "DBM-Party-WarWithin", 8, 1274) local L = mod:GetLocalizedStrings() mod:SetRevision("20240703013431") mod:SetCreatureID(216648, 216649)--Nx, Vx mod:SetEncounterID(2908) mod:SetHotfixNoticeRev(20240701000000) mod:SetMinSyncRevision(20240701000000) --mod.respawnTime = 29 mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 441384 441381 439621 440468 440420 439692 440218 440238", "SPELL_CAST_SUCCESS 440419", "SPELL_AURA_APPLIED 440437 441286 441298 458741 440238" -- "SPELL_AURA_REMOVED 439989" -- "SPELL_PERIODIC_DAMAGE", -- "SPELL_PERIODIC_MISSED" -- "UNIT_SPELLCAST_SUCCEEDED boss1" ) --NOTE: Knife Throw is just spammed, not practical alert or timer --TODO: auto mark paranoia if it's not too many targets at once. --TODO, Dark Paranoia doesn't seem used on even M+ 10 --[[ (ability.id = 441384 or ability.id = 441381 or ability.id = 439621 or ability.id = 440468 or ability.id = 440420 or ability.id = 439692 or ability.id = 440218) and type = "begincast" or ability.id = 440419 and type = "cast" or ability.id = 439989 and type = "removedebuff" or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] --General local warnSynergicStep = mod:NewCountAnnounce(439989, 3) local timerNextSwapCD = mod:NewCDCountTimer(44.9, 439989, nil, nil, nil, 6) --Nx Active (Vx support) mod:AddTimerLine(DBM:EJ_GetSectionInfo(28876)) local warnIceSickles = mod:NewTargetNoFilterAnnounce(440238, 3, nil, "RemoveMagic") local specWarnShadeSlash = mod:NewSpecialWarningDefensive(439621, nil, nil, nil, 1, 2) local specWarnDuskbringer = mod:NewSpecialWarningDodgeCount(439692, nil, nil, nil, 2, 2) --local specWarnGTFO = mod:NewSpecialWarningGTFO(372820, nil, nil, nil, 1, 8) local timerShadeSlashCD = mod:NewCDCountTimer(7.8, 439621, nil, "Tank|Healer", nil, 5) local timerDuskbringerCD = mod:NewCDCountTimer(33.9, 439692, nil, nil, nil, 2) local timerIceSicklesCD = mod:NewCDCountTimer(33.9, 440218, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON) --Vx Active (Nx support) mod:AddTimerLine(DBM:EJ_GetSectionInfo(28875)) local warnShadowShunpo = mod:NewTargetNoFilterAnnounce(440419, 3, nil, false) local warnFrozenSolid = mod:NewTargetNoFilterAnnounce(458741, 4)--Failing freezing blood local warnDarkparanoia = mod:NewTargetNoFilterAnnounce(440420, 4) local specWarnRimeDagger = mod:NewSpecialWarningDefensive(440468, nil, nil, nil, 1, 2) local yellFreezingBlood = mod:NewYell(441298, nil, nil, nil, "YELL") local specWarnDarkParanoia = mod:NewSpecialWarningMoveAway(440420, nil, nil, nil, 2, 2, 4) local yellDarkParanoia = mod:NewYell(440420) local timerRimeDaggerCD = mod:NewCDCountTimer(13.3, 440468, nil, nil, nil, 5) local timerDarkparanoiaCD = mod:NewAITimer(3, 440420, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON) local timerShadowShunpoCD = mod:NewCDCountTimer(4.9, 440419, nil, nil, nil, 3) mod.vb.swapCount = 0 mod.vb.tankCount = 0 mod.vb.duskCount = 0 mod.vb.shunpoCount = 0 mod.vb.paranoiaCount = 0 mod.vb.iceCount = 0 function mod:OnCombatStart(delay) self:SetStage(1) self.vb.swapCount = 0 self.vb.tankCount = 0 self.vb.duskCount = 0 self.vb.shunpoCount = 0 self.vb.paranoiaCount = 0 self.vb.iceCount = 0 --Nx starts active on pull timerShadeSlashCD:Start(4.4-delay, 1) timerDuskbringerCD:Start(18.5-delay, 1) timerIceSicklesCD:Start(20.4-delay, 1) timerNextSwapCD:Start(29-delay, 1) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if (spellId == 441384 or spellId == 441381) and self:AntiSpam(5, 1) then--Synergic Step (Swapping) self.vb.swapCount = self.vb.swapCount + 1 warnSynergicStep:Show(self.vb.swapCount) --Stop timers all timers timerShadeSlashCD:Stop() timerDuskbringerCD:Stop() timerRimeDaggerCD:Stop() timerShadowShunpoCD:Stop() timerDarkparanoiaCD:Stop() timerIceSicklesCD:Stop() if self:GetStage(1) then self:SetStage(2) --Start Vx Active timers, Nx Inactive timers timerShadowShunpoCD:Start(19.4, self.vb.shunpoCount+1) timerRimeDaggerCD:Start(21.4, self.vb.tankCount+1) if self:IsMythic() then--Still not seen yet timerDarkparanoiaCD:Start(2) end else self:SetStage(1) --Start Nx Active timers, Vx Inactive timers timerShadeSlashCD:Start(20.4, self.vb.tankCount+1) timerDuskbringerCD:Start(34.9, self.vb.duskCount+1) timerIceSicklesCD:Start(36.4, self.vb.iceCount+1) end timerNextSwapCD:Start(44.9, self.vb.swapCount+1) elseif spellId == 439621 then self.vb.tankCount = self.vb.tankCount + 1 --2 casts per set, only start first timer here, other cast started in phasing cast if self.vb.tankCount % 2 == 1 then timerShadeSlashCD:Start(7.8, self.vb.tankCount+1) end if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnShadeSlash:Show() specWarnShadeSlash:Play("defensive") end elseif spellId == 440468 then self.vb.tankCount = self.vb.tankCount + 1 --2 casts per set, only start first timer here, other cast started in phasing cast if self.vb.tankCount % 2 == 1 then timerRimeDaggerCD:Start(13.3, self.vb.tankCount+1) end if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnRimeDagger:Show() specWarnRimeDagger:Play("defensive") end elseif spellId == 440420 then self.vb.paranoiaCount = self.vb.paranoiaCount + 1 timerDarkparanoiaCD:Start() elseif spellId == 439692 then self.vb.duskCount = self.vb.duskCount + 1 specWarnDuskbringer:Show(self.vb.duskCount) specWarnDuskbringer:Play("aesoon") specWarnDuskbringer:ScheduleVoice(1.5, "watchstep") --timerDuskbringerCD:Start(nil, self.vb.duskCount+1)--Not started here, one cast per phase elseif spellId == 440218 then self.vb.iceCount = self.vb.iceCount + 1 -- timerIceSicklesCD:Start(nil, self.vb.iceCount+1)--Not started here, one cast per phase end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 440419 then self.vb.shunpoCount = self.vb.shunpoCount + 1 --Technically can stop it after 6 casts, but it'll be auto stopped by phasing immediately after 6th cast timerShadowShunpoCD:Start(nil, self.vb.shunpoCount+1) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 440437 then warnShadowShunpo:Show(args.destName) elseif spellId == 441286 then if args:IsPlayer() then specWarnDarkParanoia:Show() specWarnDarkParanoia:Play("runout") yellDarkParanoia:Yell() else warnDarkparanoia:Show(args.destName) end elseif spellId == 441298 then if args:IsPlayer() then yellFreezingBlood:Yell() end elseif spellId == 458741 then warnFrozenSolid:Show(args.destName) elseif spellId == 440238 then warnIceSickles:CombinedShow(0.5, args.destName) 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_SPELLCAST_SUCCEEDED(uId, _, spellId) if spellId == 74859 then end end --]]