From e09e5ebec20d6d0c5ddaecc9f6e8c65afee1c966 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 4 Jul 2025 03:26:41 -0700 Subject: [PATCH] fix: infinite loop when attempting to generate loid commisions (#2399) Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2399 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/serversideVendorsService.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/services/serversideVendorsService.ts b/src/services/serversideVendorsService.ts index 9a7db1a5..ebdfc882 100644 --- a/src/services/serversideVendorsService.ts +++ b/src/services/serversideVendorsService.ts @@ -299,9 +299,12 @@ const generateVendorManifest = ( ? numUncountedOffers + numCountedOffers : manifest.numItems ? numUncountedOffers + - (useRng - ? rng.randomInt(manifest.numItems.minValue, manifest.numItems.maxValue) - : manifest.numItems.minValue) + Math.min( + Object.values(remainingItemCapacity).reduce((a, b) => a + b, 0), + useRng + ? rng.randomInt(manifest.numItems.minValue, manifest.numItems.maxValue) + : manifest.numItems.minValue + ) : manifest.items.length; let i = 0; const rollableOffers = manifest.items.filter(x => x.probability !== undefined) as (Omit< @@ -495,4 +498,13 @@ if (args.dev) { ) { logger.warn(`self test failed for /Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest`); } + + // strange case where numItems is 5 even tho only 3 offers can possibly be generated + const loid = getVendorManifestByTypeName( + "/Lotus/Types/Game/VendorManifests/EntratiLabs/EntratiLabsCommisionsManifest", + false + )!.VendorInfo.ItemManifest; + if (loid.length != 3) { + logger.warn(`self test failed for /Lotus/Types/Game/VendorManifests/EntratiLabs/EntratiLabsCommisionsManifest`); + } }