diff --git a/src/controllers/api/syndicateSacrificeController.ts b/src/controllers/api/syndicateSacrificeController.ts index fd385999..2dc1d67d 100644 --- a/src/controllers/api/syndicateSacrificeController.ts +++ b/src/controllers/api/syndicateSacrificeController.ts @@ -6,6 +6,9 @@ import { handleStoreItemAcquisition } from "@/src/services/purchaseService"; import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService"; import { IInventoryChanges } from "@/src/types/purchaseTypes"; import { isStoreItem, toStoreItem } from "@/src/services/itemDataService"; +import { logger } from "@/src/utils/logger"; + +const nightwaveCredsItemType = ExportNightwave.rewards[ExportNightwave.rewards.length - 1].uniqueName; export const syndicateSacrificeController: RequestHandler = async (request, response) => { const accountId = await getAccountIdForRequest(request); @@ -74,10 +77,14 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp if (!isStoreItem(rewardType)) { rewardType = toStoreItem(rewardType); } - combineInventoryChanges( - res.InventoryChanges, - (await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount)).InventoryChanges - ); + const rewardInventoryChanges = (await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount)) + .InventoryChanges; + if (Object.keys(rewardInventoryChanges).length == 0) { + logger.debug(`nightwave rank up reward did not seem to get added, giving 50 creds instead`); + rewardInventoryChanges.MiscItems = [{ ItemType: nightwaveCredsItemType, ItemCount: 50 }]; + addMiscItems(inventory, rewardInventoryChanges.MiscItems); + } + combineInventoryChanges(res.InventoryChanges, rewardInventoryChanges); } } diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 84984dc9..a9176e0b 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -1236,12 +1236,16 @@ export const addSkin = ( typeName: string, inventoryChanges: IInventoryChanges = {} ): IInventoryChanges => { - const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1; - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - inventoryChanges.WeaponSkins ??= []; - (inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push( - inventory.WeaponSkins[index].toJSON() - ); + if (inventory.WeaponSkins.find(x => x.ItemType == typeName)) { + logger.debug(`refusing to add WeaponSkin ${typeName} because account already owns it`); + } else { + const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + inventoryChanges.WeaponSkins ??= []; + (inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push( + inventory.WeaponSkins[index].toJSON() + ); + } return inventoryChanges; };