返回提交历史
Modified
src/controllers/api/fusionTreasuresController.ts
+2
-10
Modified
src/controllers/api/sellController.ts
+9
-1
Modified
src/helpers/inventoryHelpers.ts
+10
-0
XFEstudio/XFESpaceNinjaServer
chore: handle sale of fusion treasures (#2542)
Closes #2541 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2542 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
695dcf98
代码差异
3 个文件
+21
-11
@@ -2,22 +2,14 @@ import { RequestHandler } from "express";
2
2
import { ExportResources } from "warframe-public-export-plus";
3
3
import { getAccountIdForRequest } from "@/src/services/loginService";
4
4
import { addFusionTreasures, addMiscItems, getInventory } from "@/src/services/inventoryService";
5
import { IFusionTreasure, IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
5
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
6
import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers";
6
7
7
8
interface IFusionTreasureRequest {
8
9
oldTreasureName: string;
9
10
newTreasureName: string;
10
11
}
11
12
12
const parseFusionTreasure = (name: string, count: number): IFusionTreasure => {
13
const arr = name.split("_");
14
return {
15
ItemType: arr[0],
16
Sockets: parseInt(arr[1], 16),
17
ItemCount: count
18
};
19
};
20
21
13
export const fusionTreasuresController: RequestHandler = async (req, res) => {
22
14
const accountId = await getAccountIdForRequest(req);
23
15
const inventory = await getInventory(accountId);
@@ -10,13 +10,15 @@ import {
10
10
combineInventoryChanges,
11
11
addCrewShipRawSalvage,
12
12
addFusionPoints,
13
addCrewShipFusionPoints
13
addCrewShipFusionPoints,
14
addFusionTreasures
14
15
} from "@/src/services/inventoryService";
15
16
import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes";
16
17
import { ExportDojoRecipes } from "warframe-public-export-plus";
17
18
import { IInventoryChanges } from "@/src/types/purchaseTypes";
18
19
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
19
20
import { sendWsBroadcastEx } from "@/src/services/wsService";
21
import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers";
20
22
21
23
export const sellController: RequestHandler = async (req, res) => {
22
24
const payload = JSON.parse(String(req.body)) as ISellRequest;
@@ -295,6 +297,11 @@ export const sellController: RequestHandler = async (req, res) => {
295
297
]);
296
298
});
297
299
}
300
if (payload.Items.FusionTreasures) {
301
payload.Items.FusionTreasures.forEach(sellItem => {
302
addFusionTreasures(inventory, [parseFusionTreasure(sellItem.String, sellItem.Count * -1)]);
303
});
304
}
298
305
299
306
await inventory.save();
300
307
res.json({
@@ -327,6 +334,7 @@ interface ISellRequest {
327
334
CrewMembers?: ISellItem[];
328
335
CrewShipWeapons?: ISellItem[];
329
336
CrewShipWeaponSkins?: ISellItem[];
337
FusionTreasures?: ISellItem[];
330
338
};
331
339
SellPrice: number;
332
340
SellCurrency:
@@ -1,6 +1,7 @@
1
1
import { IMongoDate, IOid, IOidWithLegacySupport } from "@/src/types/commonTypes";
2
2
import { Types } from "mongoose";
3
3
import { TRarity } from "warframe-public-export-plus";
4
import { IFusionTreasure } from "@/src/types/inventoryTypes/inventoryTypes";
4
5
5
6
export const version_compare = (a: string, b: string): number => {
6
7
const a_digits = a
@@ -51,6 +52,15 @@ export const fromMongoDate = (date: IMongoDate): Date => {
51
52
return new Date(parseInt(date.$date.$numberLong));
52
53
};
53
54
55
export const parseFusionTreasure = (name: string, count: number): IFusionTreasure => {
56
const arr = name.split("_");
57
return {
58
ItemType: arr[0],
59
Sockets: parseInt(arr[1], 16),
60
ItemCount: count
61
};
62
};
63
54
64
export type TTraitsPool = Record<
55
65
"Colors" | "EyeColors" | "FurPatterns" | "BodyTypes" | "Heads" | "Tails",
56
66
{ type: string; rarity: TRarity }[]