Fixed preset builder showing items from locked traders

This commit is contained in:
Chomp
2025-11-18 17:09:54 +00:00
parent 6c96539933
commit 5b9347099b
2 changed files with 19 additions and 0 deletions
@@ -324,4 +324,16 @@ public static class ProfileExtensions
// No trader data on player profile, fail check // No trader data on player profile, fail check
return false; return false;
} }
/// <summary>
/// Get Ids of traders with an unlocked status of "false"
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <returns>Hashset of Trader ids</returns>
public static HashSet<MongoId> GetLockedTraderIds(this PmcData pmcData)
{
return pmcData.TradersInfo?
.Where(trader => trader.Value.Unlocked == false)
.Select(t => t.Key).ToHashSet() ?? [];
}
} }
@@ -237,6 +237,7 @@ public class RagfairOfferHelper(
? cloner.Clone(searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType)) ? cloner.Clone(searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType))
: searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType); : searchRequest.BuildItems.Keys.ToDictionary(key => key, ragfairOfferService.GetOffersOfType);
var lockedTraders = pmcData.GetLockedTraderIds();
foreach (var (desiredItemTpl, matchingOffers) in buildItems) foreach (var (desiredItemTpl, matchingOffers) in buildItems)
{ {
if (matchingOffers is null) if (matchingOffers is null)
@@ -266,6 +267,12 @@ public class RagfairOfferHelper(
if (offer.IsTraderOffer()) if (offer.IsTraderOffer())
{ {
// Player hasn't unlocked trader selling this offer, skip
if (lockedTraders.Contains(offer.User.Id))
{
continue;
}
if (TraderBuyRestrictionReached(offer)) if (TraderBuyRestrictionReached(offer))
{ {
continue; continue;