From 828df84ef35c17d26ea75ac7a9f0a4837f527849 Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 19 Dec 2025 14:26:15 +0100 Subject: [PATCH] Add proper flag handling on TransitionType --- .../Models/Enums/TransitionType.cs | 1 + .../Services/LocationLifecycleService.cs | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Models/Enums/TransitionType.cs b/Libraries/SPTarkov.Server.Core/Models/Enums/TransitionType.cs index 4ada3029..5d3af8a2 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Enums/TransitionType.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Enums/TransitionType.cs @@ -1,5 +1,6 @@ namespace SPTarkov.Server.Core.Models.Enums; +[Flags] public enum TransitionType { NONE = 0, diff --git a/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs b/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs index 5230ef34..1d82ab47 100644 --- a/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/LocationLifecycleService.cs @@ -93,6 +93,21 @@ public class LocationLifecycleService( : playerProfile.CharacterData.ScavData.Skills.Common ); + var transitionType = TransitionType.NONE; + + if (request.TransitionType is TransitionType flags) + { + if (flags.HasFlag(TransitionType.COMMON)) + { + transitionType = TransitionType.COMMON; + } + + if (flags.HasFlag(TransitionType.EVENT)) + { + transitionType = TransitionType.EVENT; + } + } + // Raid is starting, adjust run times to reduce server load while player is in raid RagfairConfig.RunIntervalSeconds = RagfairConfig.RunIntervalValues.InRaid; HideoutConfig.RunIntervalSeconds = HideoutConfig.RunIntervalValues.InRaid; @@ -104,7 +119,7 @@ public class LocationLifecycleService( ServerSettings = databaseService.GetLocationServices(), // TODO - is this per map or global? Profile = new ProfileInsuredItems { InsuredItems = playerProfile.CharacterData.PmcData.InsuredItems }, LocationLoot = GenerateLocationAndLoot(sessionId, request.Location, !request.ShouldSkipLootGeneration ?? true), - TransitionType = request.TransitionType, + TransitionType = transitionType, Transition = new Transition { TransitionType = request.TransitionType, @@ -128,7 +143,7 @@ public class LocationLifecycleService( if (transitionData is not null) { logger.Success($"Player: {sessionId} is in transit to {request.Location}"); - result.Transition.TransitionType = request.TransitionType; + result.Transition.TransitionType = transitionType; result.Transition.TransitionRaidId = transitionData.TransitionRaidId; result.Transition.TransitionCount += 1;