返回提交历史
Modified
src/controllers/api/syndicateSacrificeController.ts
+11
-4
Modified
src/services/inventoryService.ts
+10
-6
XFEstudio/SpaceNinjaServer
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
代码差异
2 个文件
+21
-10
@@ -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
@@ -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