From 9cedaeec2ec4325277b74d65faf6c195b2c680c0 Mon Sep 17 00:00:00 2001 From: Yui Date: Thu, 6 Nov 2025 14:13:14 -0300 Subject: [PATCH] Checks missing `LoyalLevelItems` for trader item on flea offer generation --- .../SPT_Data/database/locales/server/en.json | 1 + .../Generators/RagfairOfferGenerator.cs | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/locales/server/en.json b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/locales/server/en.json index f20bbbad..70307af1 100644 --- a/Libraries/SPTarkov.Server.Assets/SPT_Data/database/locales/server/en.json +++ b/Libraries/SPTarkov.Server.Assets/SPT_Data/database/locales/server/en.json @@ -623,6 +623,7 @@ "ragfair-invalid_player_offer_request": "Unable to place offer, request is invalid", "ragfair-item_not_in_db_unable_to_generate_dynamic_stack_count": "Item with tpl: %s not found in db. Unable to generate a dynamic stack count", "ragfair-missing_barter_scheme": "generateFleaOffersForTrader() Failed to find barterScheme for item id: {{itemId}} tpl: {{tpl}} on {{name}}", + "ragfair-missing_loyal_level_item": "generateFleaOffersForTrader() Failed to find LoyalLevelItem for item id: {{itemId}} tpl: {{tpl}} on {{name}}", "ragfair-no_trader_assorts_cant_generate_flea_offers": "Unable to generate flea offers for trader %s, no assort found", "ragfair-offer_no_longer_exists": "Offer no longer exists", "ragfair-offer_not_found_in_profile": "Could not find offer with id: {{offerId}} in profile: {{profileId}} to remove", diff --git a/Libraries/SPTarkov.Server.Core/Generators/RagfairOfferGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RagfairOfferGenerator.cs index 681e009f..27d88274 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RagfairOfferGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RagfairOfferGenerator.cs @@ -588,7 +588,21 @@ public class RagfairOfferGenerator( } var barterSchemeItems = barterScheme[0]; - var loyalLevel = assortsClone.LoyalLevelItems[item.Id]; + if (!assortsClone.LoyalLevelItems.TryGetValue(item.Id, out var loyalLevel)) + { + logger.Warning( + localisationService.GetText( + "ragfair-missing_loyal_level_item", + new + { + itemId = item.Id, + tpl = item.Template, + name = trader.Base.Nickname, + } + ) + ); + continue; + } var createOfferDetails = new CreateFleaOfferDetails {