From 2d0713d94e7597bbaf49e3febb1fb00817dd796f Mon Sep 17 00:00:00 2001 From: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com> Date: Wed, 15 Oct 2025 18:15:28 -0700 Subject: [PATCH] Offset PMC spawns to start of raid when using a simulated raid start --- .../Services/RaidTimeAdjustmentService.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Libraries/SPTarkov.Server.Core/Services/RaidTimeAdjustmentService.cs b/Libraries/SPTarkov.Server.Core/Services/RaidTimeAdjustmentService.cs index e52874446..d27be8dad 100644 --- a/Libraries/SPTarkov.Server.Core/Services/RaidTimeAdjustmentService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/RaidTimeAdjustmentService.cs @@ -1,4 +1,5 @@ using SPTarkov.DI.Annotations; +using SPTarkov.Server.Core.Constants; using SPTarkov.Server.Core.Helpers; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; @@ -157,6 +158,21 @@ protected void AdjustPMCSpawns(LocationBase mapBase, RaidChanges raidAdjustments wave.TimeMax -= (int)Math.Max(startSeconds, 0); } + // Now additionally move all PMCs back so they spawn starting at the beginning of the raid + var pmcSpawns = mapBase.BossLocationSpawn.Where(boss => boss.BossName is Sides.PmcUsec or Sides.PmcBear); + var firstPmcSpawn = pmcSpawns.OrderBy(boss => boss.Time).FirstOrDefault(); + if (firstPmcSpawn != null) + { + var pmcStartSeconds = firstPmcSpawn.Time.GetValueOrDefault(1); + foreach (var spawn in pmcSpawns) + { + // Sanity check, the client won't spawn a time of 0 + spawn.Time = (double)Math.Max(spawn.Time.GetValueOrDefault(1) - pmcStartSeconds, 1); + } + + logger.Debug($"Offset PMC spawns by {pmcStartSeconds} seconds"); + } + logger.Debug( $"Removed: {originalPmcWaveCount - mapBase.BossLocationSpawn.Count} boss waves from map due to simulated raid start time of {raidAdjustments.SimulatedRaidStartSeconds / 60} minutes" );