From eb7b51852b57dc8b6178b70709e3eab761e29363 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 26 Jun 2025 14:31:40 -0700 Subject: [PATCH] fix: use exact quantity when adding gear items by StoreItem (#2310) Closes #2304 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2310 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/inventoryService.ts | 1 + src/services/purchaseService.ts | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index a2145d3b..cf5208ce 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -499,6 +499,7 @@ export const addItem = async ( // - Blueprints for Ancient Protector Specter, Shield Osprey Specter, etc. have num=1 despite giving their purchaseQuantity. if (!exactQuantity) { quantity *= ExportGear[typeName].purchaseQuantity ?? 1; + logger.debug(`non-exact acquisition of ${typeName}; factored quantity is ${quantity}`); } const consumablesChanges = [ { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 59647fdf..0c4cad35 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -371,18 +371,28 @@ export const handleStoreItemAcquisition = async ( } else { const storeCategory = getStoreItemCategory(storeItemName); const internalName = fromStoreItem(storeItemName); - logger.debug(`store category ${storeCategory}`); if (!ignorePurchaseQuantity) { if (internalName in ExportGear) { quantity *= ExportGear[internalName].purchaseQuantity || 1; + logger.debug(`factored quantity is ${quantity}`); } else if (internalName in ExportResources) { quantity *= ExportResources[internalName].purchaseQuantity || 1; + logger.debug(`factored quantity is ${quantity}`); } } + logger.debug(`store category ${storeCategory}`); switch (storeCategory) { default: { purchaseResponse = { - InventoryChanges: await addItem(inventory, internalName, quantity, premiumPurchase, seed) + InventoryChanges: await addItem( + inventory, + internalName, + quantity, + premiumPurchase, + seed, + undefined, + true + ) }; break; } @@ -524,7 +534,9 @@ const handleTypesPurchase = async ( logger.debug(`type category ${typeCategory}`); switch (typeCategory) { default: - return { InventoryChanges: await addItem(inventory, typesName, quantity, premiumPurchase, seed) }; + return { + InventoryChanges: await addItem(inventory, typesName, quantity, premiumPurchase, seed, undefined, true) + }; case "BoosterPacks": return handleBoosterPackPurchase(typesName, inventory, quantity); case "SlotItems":