From 054e75048bfb7f51d5e3dc0c5ba9dfec1bf38252 Mon Sep 17 00:00:00 2001 From: Chomp Date: Wed, 19 Mar 2025 17:05:36 +0000 Subject: [PATCH] Fix prestige menu rewards in a generic way Add new CustomisationTypeId enum --- .../Helpers/ProfileHelper.cs | 25 ++++++++---------- .../Eft/Common/Tables/CustomisationStorage.cs | 26 +++++++++++++++++++ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs index 8d71d0b2..6ab154fd 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ProfileHelper.cs @@ -674,10 +674,10 @@ public class ProfileHelper( { if (fullProfile?.CustomisationUnlocks == null) { - fullProfile.CustomisationUnlocks = new List(); + fullProfile.CustomisationUnlocks = []; } - if (fullProfile?.CustomisationUnlocks?.Any(u => u.Id == (string) reward.Target) ?? false) + if (fullProfile?.CustomisationUnlocks?.Any(u => u.Id == reward.Target) ?? false) { _logger.Warning($"Profile: {fullProfile.ProfileInfo.ProfileId} already has hideout customisaiton reward: {reward.Target}, skipping"); return; @@ -697,30 +697,27 @@ public class ProfileHelper( switch (matchingCustomisation.Parent) { - case "675ff48ce8d2356707079617": - // MannequinPose + case CustomisationTypeId.MANNEQUIN_POSE: rewardToStore.Type = CustomisationType.MANNEQUIN_POSE; break; - case "6751848eba5968fd800a01d6": - // Gestures + case CustomisationTypeId.GESTURES: rewardToStore.Type = CustomisationType.GESTURE; break; - case "67373f170eca6e03ab0d5391": - // Floor + case CustomisationTypeId.FLOOR: rewardToStore.Type = CustomisationType.FLOOR; break; - case "6746fafabafff8500804880e": - // DogTags + case CustomisationTypeId.DOG_TAGS: rewardToStore.Type = CustomisationType.DOG_TAG; break; - case "673b3f595bf6b605c90fcdc2": - // Ceiling + case CustomisationTypeId.CEILING: rewardToStore.Type = CustomisationType.CEILING; break; - case "67373f1e5a5ee73f2a081baf": - // Wall + case CustomisationTypeId.WALL: rewardToStore.Type = CustomisationType.WALL; break; + case CustomisationTypeId.ENVIRONMENT_UI: + rewardToStore.Type = CustomisationType.ENVIRONMENT; + break; default: _logger.Error($"Unhandled customisation unlock type: {matchingCustomisation.Parent} not added to profile"); return; diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomisationStorage.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomisationStorage.cs index 7adaadb5..69927900 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomisationStorage.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomisationStorage.cs @@ -44,6 +44,32 @@ public record CustomisationType public const string MANNEQUIN_POSE = "mannequinPose"; } +public record CustomisationTypeId +{ + public const string CUSTOMIZATION = "5cbdb4a2e2b501000d352ae2"; + public const string BODY_PARTS = "5cd943c31388ce000a659df5"; + public const string BODY = "5cc0868e14c02e000c6bea68"; + public const string FEET = "5cc0869814c02e000a4cad94"; + public const string HANDS = "5cc086a314c02e000c6bea69"; + public const string HEAD = "5cc085e214c02e000c6bea67"; + public const string SUITS = "5cd943b21388ce03a44dc2a2"; + public const string LOWER = "5cd944d01388ce000a659df9"; + public const string UPPER = "5cd944ca1388ce03a44dc2a4"; + public const string DOG_TAGS = "6746fafabafff8500804880e"; + public const string VOICE = "5fc100cf95572123ae738483"; + public const string GESTURES = "6751848eba5968fd800a01d6"; + public const string ENVIRONMENT_UI = "67584ea0ff58ff0e7909e435"; + public const string FLOOR = "67373f170eca6e03ab0d5391"; + public const string ITEM_SLOT = "67373f520eca6e03ab0d5397"; + public const string LIGHT = "67373f286cadad262309e862"; + public const string POSTER_SLOT = "67373f4b5a5ee73f2a081bb3"; + public const string SHOOTING_RANGE_MARK = "67373f330eca6e03ab0d5394"; + public const string WALL = "67373f1e5a5ee73f2a081baf"; + public const string HIDEOUT = "67373ef90eca6e03ab0d538c"; + public const string CEILING = "673b3f595bf6b605c90fcdc2"; + public const string MANNEQUIN_POSE = "675ff48ce8d2356707079617"; +} + public record CustomisationSource { public const string QUEST = "quest";