From c709efbca2366d4b9c8153e752fcab9aee50715e Mon Sep 17 00:00:00 2001 From: Chomp Date: Thu, 6 Feb 2025 22:20:24 +0000 Subject: [PATCH] Improved nullguarding inside `RagfairOfferHolder` --- Libraries/Core/Services/RagfairOfferService.cs | 1 - Libraries/Core/Utils/RagfairOfferHolder.cs | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Libraries/Core/Services/RagfairOfferService.cs b/Libraries/Core/Services/RagfairOfferService.cs index 8b1f5d1a..4b8c878f 100644 --- a/Libraries/Core/Services/RagfairOfferService.cs +++ b/Libraries/Core/Services/RagfairOfferService.cs @@ -2,7 +2,6 @@ using Core.Helpers; using SptCommon.Annotations; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Ragfair; -using Core.Models.Spt.Config; using Core.Models.Utils; using Core.Servers; using Core.Utils; diff --git a/Libraries/Core/Utils/RagfairOfferHolder.cs b/Libraries/Core/Utils/RagfairOfferHolder.cs index 164223b0..aca043fc 100644 --- a/Libraries/Core/Utils/RagfairOfferHolder.cs +++ b/Libraries/Core/Utils/RagfairOfferHolder.cs @@ -60,10 +60,9 @@ public class RagfairOfferHolder( return null; } - var result = _offersById - .Where(x => offerIds.Contains(x.Key)) - .Select(x => x.Value).ToList(); - return result; + return offerIds.Select(offerId => _offersById.GetValueOrDefault(offerId)) + .Where(offer => offer != null) + .ToList(); } } @@ -94,11 +93,12 @@ public class RagfairOfferHolder( } var offerId = offer.Id; - var itemTpl = offer.Items.FirstOrDefault().Template; + var itemTpl = offer.Items?.FirstOrDefault()?.Template; // If it is an NPC PMC offer AND we have already reached the maximum amount of possible offers // for this template, just don't add in more - _offersByTemplate.TryGetValue(itemTpl, out var offers); - if (!(ragfairServerHelper.IsTrader(sellerId) || profileHelper.IsPlayer(sellerId)) + if (itemTpl != null + && !(ragfairServerHelper.IsTrader(sellerId) || profileHelper.IsPlayer(sellerId)) + && _offersByTemplate.TryGetValue(itemTpl, out var offers) && offers?.Count >= _maxOffersPerTemplate ) {