XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat: handle account already owning a nightwave skin item (#1814)

Closes #1811 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1814 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

409c089d
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +21 -10
Modified src/controllers/api/syndicateSacrificeController.ts +11 -4
@@ -6,6 +6,9 @@ import { handleStoreItemAcquisition } from "@/src/services/purchaseService";
6 6 import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService";
7 7 import { IInventoryChanges } from "@/src/types/purchaseTypes";
8 8 import { isStoreItem, toStoreItem } from "@/src/services/itemDataService";
9 import { logger } from "@/src/utils/logger";
10
11 const nightwaveCredsItemType = ExportNightwave.rewards[ExportNightwave.rewards.length - 1].uniqueName;
9 12
10 13 export const syndicateSacrificeController: RequestHandler = async (request, response) => {
11 14 const accountId = await getAccountIdForRequest(request);
@@ -74,10 +77,14 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
74 77 if (!isStoreItem(rewardType)) {
75 78 rewardType = toStoreItem(rewardType);
76 79 }
77 combineInventoryChanges(
78 res.InventoryChanges,
79 (await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount)).InventoryChanges
80 );
80 const rewardInventoryChanges = (await handleStoreItemAcquisition(rewardType, inventory, reward.itemCount))
81 .InventoryChanges;
82 if (Object.keys(rewardInventoryChanges).length == 0) {
83 logger.debug(`nightwave rank up reward did not seem to get added, giving 50 creds instead`);
84 rewardInventoryChanges.MiscItems = [{ ItemType: nightwaveCredsItemType, ItemCount: 50 }];
85 addMiscItems(inventory, rewardInventoryChanges.MiscItems);
86 }
87 combineInventoryChanges(res.InventoryChanges, rewardInventoryChanges);
81 88 }
82 89 }
83 90
Modified src/services/inventoryService.ts +10 -6
@@ -1236,12 +1236,16 @@ export const addSkin = (
1236 1236 typeName: string,
1237 1237 inventoryChanges: IInventoryChanges = {}
1238 1238 ): IInventoryChanges => {
1239 const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1;
1240 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1241 inventoryChanges.WeaponSkins ??= [];
1242 (inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(
1243 inventory.WeaponSkins[index].toJSON<IWeaponSkinClient>()
1244 );
1239 if (inventory.WeaponSkins.find(x => x.ItemType == typeName)) {
1240 logger.debug(`refusing to add WeaponSkin ${typeName} because account already owns it`);
1241 } else {
1242 const index = inventory.WeaponSkins.push({ ItemType: typeName, IsNew: true }) - 1;
1243 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1244 inventoryChanges.WeaponSkins ??= [];
1245 (inventoryChanges.WeaponSkins as IWeaponSkinClient[]).push(
1246 inventory.WeaponSkins[index].toJSON<IWeaponSkinClient>()
1247 );
1248 }
1245 1249 return inventoryChanges;
1246 1250 };
1247 1251