返回提交历史
Modified
src/controllers/api/upgradesController.ts
+18
-8
Modified
src/types/inventoryTypes/commonInventoryTypes.ts
+1
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+2
-1
Modified
src/types/requestTypes.ts
+3
-2
XFEstudio/XFESpaceNinjaServer
feat: gravimag installation (#366)
e34cb305
代码差异
4 个文件
+24
-11
@@ -1,7 +1,7 @@
1
1
import { RequestHandler } from "express";
2
2
import { IUpgradesRequest } from "@/src/types/requestTypes";
3
3
import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes";
4
import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes";
4
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
5
5
import { getAccountIdForRequest } from "@/src/services/loginService";
6
6
import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService";
7
7
@@ -29,7 +29,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
29
29
switch (operation.UpgradeRequirement) {
30
30
case "/Lotus/Types/Items/MiscItems/OrokinReactor":
31
31
case "/Lotus/Types/Items/MiscItems/OrokinCatalyst":
32
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
32
for (const item of inventory[payload.ItemCategory]) {
33
33
if (item._id.toString() == payload.ItemId.$oid) {
34
34
item.Features ??= 0;
35
35
item.Features |= EquipmentFeatures.DOUBLE_CAPACITY;
@@ -39,7 +39,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
39
39
break;
40
40
case "/Lotus/Types/Items/MiscItems/UtilityUnlocker":
41
41
case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker":
42
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
42
for (const item of inventory[payload.ItemCategory]) {
43
43
if (item._id.toString() == payload.ItemId.$oid) {
44
44
item.Features ??= 0;
45
45
item.Features |= EquipmentFeatures.UTILITY_SLOT;
@@ -47,10 +47,20 @@ export const upgradesController: RequestHandler = async (req, res) => {
47
47
}
48
48
}
49
49
break;
50
case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst":
51
console.assert(payload.ItemCategory == "SpaceGuns");
52
for (const item of inventory[payload.ItemCategory]) {
53
if (item._id.toString() == payload.ItemId.$oid) {
54
item.Features ??= 0;
55
item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED;
56
break;
57
}
58
}
59
break;
50
60
case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker":
51
61
case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker":
52
62
case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker":
53
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
63
for (const item of inventory[payload.ItemCategory]) {
54
64
if (item._id.toString() == payload.ItemId.$oid) {
55
65
item.Features ??= 0;
56
66
item.Features |= EquipmentFeatures.ARCANE_SLOT;
@@ -62,7 +72,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
62
72
case "/Lotus/Types/Items/MiscItems/FormaUmbra":
63
73
case "/Lotus/Types/Items/MiscItems/FormaAura":
64
74
case "/Lotus/Types/Items/MiscItems/FormaStance":
65
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
75
for (const item of inventory[payload.ItemCategory]) {
66
76
if (item._id.toString() == payload.ItemId.$oid) {
67
77
item.XP = 0;
68
78
setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue);
@@ -73,7 +83,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
73
83
}
74
84
break;
75
85
case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker":
76
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
86
for (const item of inventory[payload.ItemCategory]) {
77
87
if (item._id.toString() == payload.ItemId.$oid) {
78
88
item.ModSlotPurchases ??= 0;
79
89
item.ModSlotPurchases += 1;
@@ -88,7 +98,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
88
98
}
89
99
break;
90
100
case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker":
91
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
101
for (const item of inventory[payload.ItemCategory]) {
92
102
if (item._id.toString() == payload.ItemId.$oid) {
93
103
item.CustomizationSlotPurchases ??= 0;
94
104
item.CustomizationSlotPurchases += 1;
@@ -104,7 +114,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
104
114
break;
105
115
case "":
106
116
console.assert(operation.OperationType == "UOT_SWAP_POLARITY");
107
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) {
117
for (const item of inventory[payload.ItemCategory]) {
108
118
if (item._id.toString() == payload.ItemId.$oid) {
109
119
for (let i = 0; i != operation.PolarityRemap.length; ++i) {
110
120
if (operation.PolarityRemap[i].Slot != i) {
@@ -85,6 +85,7 @@ export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id"> {
85
85
export enum EquipmentFeatures {
86
86
DOUBLE_CAPACITY = 1,
87
87
UTILITY_SLOT = 2,
88
GRAVIMAG_INSTALLED = 4,
88
89
ARCANE_SLOT = 32,
89
90
INCARNON_GENESIS = 512
90
91
}
@@ -66,7 +66,8 @@ export type TEquipmentKey =
66
66
| "Melee"
67
67
| "SpecialItems"
68
68
| "Sentinels"
69
| "SentinelWeapons";
69
| "SentinelWeapons"
70
| "SpaceGuns";
70
71
71
72
export interface IDuviriInfo {
72
73
Seed: number;
@@ -10,7 +10,8 @@ import {
10
10
ITypeCount,
11
11
IMission,
12
12
IRawUpgrade,
13
ISeasonChallenge
13
ISeasonChallenge,
14
TEquipmentKey
14
15
} from "./inventoryTypes/inventoryTypes";
15
16
16
17
export interface IArtifactsRequest {
@@ -85,7 +86,7 @@ export interface IUpdateGlyphRequest {
85
86
}
86
87
87
88
export interface IUpgradesRequest {
88
ItemCategory: string;
89
ItemCategory: TEquipmentKey;
89
90
ItemId: IOid;
90
91
ItemFeatures: number;
91
92
UpgradeVersion: number;