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: gravimag installation (#366)

e34cb305
Sainan <sainan@calamity.gg>
提交于

代码差异

4 个文件 +24 -11
Modified src/controllers/api/upgradesController.ts +18 -8
@@ -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) {
Modified src/types/inventoryTypes/commonInventoryTypes.ts +1 -0
@@ -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 }
Modified src/types/inventoryTypes/inventoryTypes.ts +2 -1
@@ -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;
Modified src/types/requestTypes.ts +3 -2
@@ -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;