forked from OpenWF/SpaceNinjaServer
		
	feat: handle account already owning a nightwave skin item (#1814)
Closes #1811 Reviewed-on: OpenWF/SpaceNinjaServer#1814 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									8c32dc2670
								
							
						
					
					
						commit
						409c089d11
					
				@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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<IWeaponSkinClient>()
 | 
			
		||||
    );
 | 
			
		||||
    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<IWeaponSkinClient>()
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    return inventoryChanges;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user