From 61a70ed727e9c6218543b4e2e46b2285ae536e30 Mon Sep 17 00:00:00 2001 From: Archangel Date: Thu, 8 Jan 2026 13:55:06 +0100 Subject: [PATCH] If prestige gives head, give head early --- .../Controllers/PrestigeController.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Libraries/SPTarkov.Server.Core/Controllers/PrestigeController.cs b/Libraries/SPTarkov.Server.Core/Controllers/PrestigeController.cs index e3f7d6a4..0ee1aae4 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/PrestigeController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/PrestigeController.cs @@ -1,3 +1,4 @@ +using Microsoft.Extensions.Logging; using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Helpers; using SPTarkov.Server.Core.Models.Common; @@ -67,6 +68,32 @@ public class PrestigeController(ProfileHelper profileHelper, DatabaseService dat profile.SptData.PendingPrestige = pendingPrestige; profile.ProfileInfo.IsWiped = true; + var prestigeLevels = databaseService.GetTemplates().Prestige?.Elements ?? []; + + var prestigeRewards = prestigeLevels + .Slice(0, pendingPrestige.PrestigeLevel.Value) + .SelectMany(prestigeInner => prestigeInner.Rewards); + + var customisationTemplateDb = databaseService.GetTemplates().Customization; + + foreach (var reward in prestigeRewards) + { + if (!MongoId.IsValidMongoId(reward.Target)) + { + continue; + } + + if (!customisationTemplateDb.TryGetValue(reward.Target, out var template)) + { + continue; + } + + if (template.Parent == CustomisationTypeId.HEAD) + { + profileHelper.AddHideoutCustomisationUnlock(profile, reward, CustomisationSource.PRESTIGE); + } + } + await saveServer.SaveProfileAsync(sessionId); } }