From ceb80d6612e12477a18f84f9a33e0961084e4260 Mon Sep 17 00:00:00 2001 From: sp-tarkov-bot Date: Wed, 24 Dec 2025 14:33:24 +0000 Subject: [PATCH 01/10] Format Style Fixes --- Libraries/SPTarkov.Server.Core/Utils/App.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Utils/App.cs b/Libraries/SPTarkov.Server.Core/Utils/App.cs index 79381d2d..008ac5ff 100644 --- a/Libraries/SPTarkov.Server.Core/Utils/App.cs +++ b/Libraries/SPTarkov.Server.Core/Utils/App.cs @@ -43,9 +43,11 @@ public class App( logger.Debug($"RAM: {totalMemoryGb:F2} GB"); if (totalMemoryGb < 30) { - logger.Warning($"Detected RAM ({totalMemoryGb:F2}GB) is smaller than recommended (32GB) you may experience crashes or reduced FPS on large maps"); + logger.Warning( + $"Detected RAM ({totalMemoryGb:F2}GB) is smaller than recommended (32GB) you may experience crashes or reduced FPS on large maps" + ); } - + logger.Debug($"Ran as admin: {Environment.IsPrivilegedProcess}"); logger.Debug($"CPU cores: {Environment.ProcessorCount}"); logger.Debug($"PATH: {(Environment.ProcessPath ?? "null returned").Encode(EncodeType.BASE64)}"); From a2e1457808739bf307a6ef053307b005d1dbab3b Mon Sep 17 00:00:00 2001 From: Chomp Date: Wed, 24 Dec 2025 21:45:49 +0000 Subject: [PATCH 02/10] Added `jar of pickles` as forced loot on scavs during Christmas --- .../SPT_Data/configs/seasonalevents.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json index fa40041f..3f4f17ec 100644 --- a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json +++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json @@ -9869,12 +9869,14 @@ "5df8a72c86f77412640e2e83": 2200, "5df8a77486f77412672a1e3f": 2200, "63a8970d7108f713591149f5": 250, - "675ea3d6312c0a5c4e04e317": 1500 + "675ea3d6312c0a5c4e04e317": 1500, + "67586af7036d7f3da60c3612": 2000 }, "Pockets": { "5df8a6a186f77412640e2e80": 2200, "5df8a72c86f77412640e2e83": 2200, - "5df8a77486f77412672a1e3f": 2200 + "5df8a77486f77412672a1e3f": 2200, + "67586af7036d7f3da60c3612": 2000 }, "TacticalVest": { "5df8a6a186f77412640e2e80": 2200, From 71c6400710ddfc7045f9e78047426cd6f9dd9465 Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 11:47:40 +0100 Subject: [PATCH 03/10] Bump version --- Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build.props b/Build.props index fc2d5693..c9ffda60 100644 --- a/Build.props +++ b/Build.props @@ -1,7 +1,7 @@ - 4.0.9 + 4.0.10 a12b34 0000000000 LOCAL From 69120b6f631de2571b82337a857adf9f9ad05f67 Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 11:50:25 +0100 Subject: [PATCH 04/10] Check if .upd is not null when sorting (Fixes: #715) --- Libraries/SPTarkov.Server.Core/Services/PaymentService.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs index 3e5defde..c28a4acb 100644 --- a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs @@ -363,7 +363,10 @@ public class PaymentService( var itemsInStashCache = GetItemInStashCache(pmcData.Inventory.Items, playerStashId); // Filter out 'Locked' money stacks as they cannot be used - var noLocked = moneyItemsInInventory.Where(moneyItem => moneyItem.Upd.PinLockState != PinLockState.Locked); + var noLocked = moneyItemsInInventory.Where(moneyItem => + moneyItem.Upd is not null && moneyItem.Upd.PinLockState != PinLockState.Locked + ); + if (noLocked.Any()) { // We found unlocked money From 40defdd08096fa33811c12226a209711da0f66db Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 13:09:43 +0100 Subject: [PATCH 05/10] if christmas is enabled spawn items in the sleigh --- .../Services/SeasonalEventService.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs index 3656a68a..e6dcbe42 100644 --- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs @@ -519,6 +519,30 @@ public class SeasonalEventService( EnableRunnansEvent(databaseService.GetGlobals()); } + var locations = databaseService.GetLocations().GetDictionary(); + + foreach (var location in locations) + { + if (location.Value.StaticLoot is not null) + { + location.Value.StaticLoot.AddTransformer(staticlootData => + { + if (staticlootData is null) + { + return staticlootData; + } + + //67614e3a6a90e4f10b0b140d is the christmas sleigh + if (staticlootData.TryGetValue("67614e3a6a90e4f10b0b140d", out var sleighContainer)) + { + sleighContainer.ItemCountDistribution = sleighContainer.ItemCountDistribution.Where(d => d.Count != 0).ToList(); + } + + return staticlootData; + }); + } + } + ChangeBtrToTarColaSkin(); } From 29b721d0c84f10c4ee526cee85e4e2aa4e32d9ca Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 14:16:23 +0100 Subject: [PATCH 06/10] Bump christmas loose loot spawns ever so slightly --- .../Services/SeasonalEventService.cs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs index e6dcbe42..8fefefb8 100644 --- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs @@ -541,6 +541,36 @@ public class SeasonalEventService( return staticlootData; }); } + + // Raise the chance on christmas related spawns ever so slightly + if (location.Value.LooseLoot is not null) + { + const double christmasLootBoost = 0.03; + + location.Value.LooseLoot.AddTransformer(looselootData => + { + if (looselootData?.Spawnpoints is null) + { + return looselootData; + } + + foreach (var looselootSpawnpoints in looselootData.Spawnpoints) + { + if (looselootSpawnpoints.Template is null || looselootSpawnpoints.Template.Id is null) + { + continue; + } + + if (looselootSpawnpoints.Template.Id.Contains("christmas", StringComparison.OrdinalIgnoreCase)) + { + var probability = looselootSpawnpoints.Probability ?? 0.0; + looselootSpawnpoints.Probability = Math.Min(1.0, probability + (1.0 - probability) * christmasLootBoost); + } + } + + return looselootData; + }); + } } ChangeBtrToTarColaSkin(); From 1439ddcb11939e1d575d0d528e3dca0c6baa661b Mon Sep 17 00:00:00 2001 From: Chomp Date: Fri, 26 Dec 2025 13:16:38 +0000 Subject: [PATCH 07/10] Fixed `client/ragfair/offer/findbyid` endpoint failure --- .../Models/Eft/Ragfair/GetRagfairOfferByIdRequest.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Ragfair/GetRagfairOfferByIdRequest.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Ragfair/GetRagfairOfferByIdRequest.cs index dde32b2c..754335fe 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Ragfair/GetRagfairOfferByIdRequest.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Ragfair/GetRagfairOfferByIdRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using SPTarkov.Server.Core.Models.Utils; namespace SPTarkov.Server.Core.Models.Eft.Ragfair; -public record GetRagfairOfferByIdRequest +public record GetRagfairOfferByIdRequest : IRequestData { [JsonPropertyName("id")] public int? Id { get; set; } From 02a392b1b3c9313f48c04981d50e7a4c8cac680c Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 14:23:12 +0100 Subject: [PATCH 08/10] Slightly reduce boost --- Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs index 8fefefb8..d0fb40bd 100644 --- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs @@ -545,7 +545,7 @@ public class SeasonalEventService( // Raise the chance on christmas related spawns ever so slightly if (location.Value.LooseLoot is not null) { - const double christmasLootBoost = 0.03; + const double christmasLootBoost = 0.02; location.Value.LooseLoot.AddTransformer(looselootData => { From a8aead3294d569693ecb402319e13ab5c54e6786 Mon Sep 17 00:00:00 2001 From: Archangel Date: Fri, 26 Dec 2025 14:29:15 +0100 Subject: [PATCH 09/10] Revert "Slightly reduce boost" This reverts commit 02a392b1b3c9313f48c04981d50e7a4c8cac680c. --- Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs index d0fb40bd..8fefefb8 100644 --- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs @@ -545,7 +545,7 @@ public class SeasonalEventService( // Raise the chance on christmas related spawns ever so slightly if (location.Value.LooseLoot is not null) { - const double christmasLootBoost = 0.02; + const double christmasLootBoost = 0.03; location.Value.LooseLoot.AddTransformer(looselootData => { From 1ba317d74b40a0cce678361eadb4bb5e6a7af178 Mon Sep 17 00:00:00 2001 From: Chomp Date: Fri, 26 Dec 2025 13:38:19 +0000 Subject: [PATCH 10/10] Moved `christmasLootBoostAmount` into config --- .../SPT_Data/configs/seasonalevents.json | 3 ++- .../Models/Spt/Config/SeasonalEventConfig.cs | 3 +++ .../SPTarkov.Server.Core/Services/SeasonalEventService.cs | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json index 3f4f17ec..d87795f1 100644 --- a/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json +++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/configs/seasonalevents.json @@ -9933,7 +9933,8 @@ "enableChristmasHideout": true, "enableSanta": true, "enableRundansEvent": true, - "enableKhorvodEvent": true + "enableKhorvodEvent": true, + "christmasLootBoostAmount": 0.03 }, "startDay": "13", "startMonth": "12", diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Config/SeasonalEventConfig.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Config/SeasonalEventConfig.cs index d1b5f55a..513a6b9e 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Spt/Config/SeasonalEventConfig.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Config/SeasonalEventConfig.cs @@ -149,6 +149,9 @@ public record SeasonalEventSettings [JsonPropertyName("enableKhorvodEvent")] public bool? EnableKhorvodEvent { get; set; } + + [JsonPropertyName("christmasLootBoostAmount")] + public double? ChristmasLootBoostAmount { get; set; } } public record ZombieSettings diff --git a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs index 8fefefb8..1ce5cb5e 100644 --- a/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/SeasonalEventService.cs @@ -545,7 +545,7 @@ public class SeasonalEventService( // Raise the chance on christmas related spawns ever so slightly if (location.Value.LooseLoot is not null) { - const double christmasLootBoost = 0.03; + var christmasLootBoost = eventType.Settings?.ChristmasLootBoostAmount ?? 0.03; location.Value.LooseLoot.AddTransformer(looselootData => {