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: leveling up intrinsics (#725)

f56fc232
Sainan <sainan@calamity.inc>
提交于

代码差异

4 个文件 +46 -15
Added src/controllers/api/playerSkillsController.ts +31 -0
@@ -0,0 +1,31 @@
1 import { getJSONfromString } from "@/src/helpers/stringHelpers";
2 import { getInventory } from "@/src/services/inventoryService";
3 import { getAccountIdForRequest } from "@/src/services/loginService";
4 import { IPlayerSkills } from "@/src/types/inventoryTypes/inventoryTypes";
5 import { RequestHandler } from "express";
6
7 export const playerSkillsController: RequestHandler = async (req, res) => {
8 const accountId = await getAccountIdForRequest(req);
9 const inventory = await getInventory(accountId);
10 const request = getJSONfromString(String(req.body)) as IPlayerSkillsRequest;
11
12 const oldRank: number = inventory.PlayerSkills[request.Skill as keyof IPlayerSkills];
13 const cost = (request.Pool == "LPP_DRIFTER" ? drifterCosts[oldRank] : 1 << oldRank) * 1000;
14 inventory.PlayerSkills[request.Pool as keyof IPlayerSkills] -= cost;
15 inventory.PlayerSkills[request.Skill as keyof IPlayerSkills]++;
16 await inventory.save();
17
18 res.json({
19 Pool: request.Pool,
20 PoolInc: -cost,
21 Skill: request.Skill,
22 Rank: oldRank + 1
23 });
24 };
25
26 interface IPlayerSkillsRequest {
27 Pool: string;
28 Skill: string;
29 }
30
31 const drifterCosts = [20, 25, 30, 45, 65, 90, 125, 160, 205, 255];
Modified src/models/inventoryModels/inventoryModel.ts +12 -13
@@ -439,18 +439,17 @@ const seasonChallengeHistorySchema = new Schema<ISeasonChallenge>(
439 439 //TODO: check whether this is complete
440 440 const playerSkillsSchema = new Schema<IPlayerSkills>(
441 441 {
442 LPP_SPACE: Number,
443 LPP_DRIFTER: Number,
444 LPS_NONE: Number,
445 LPS_PILOTING: Number,
446 LPS_GUNNERY: Number,
447 LPS_TACTICAL: Number,
448 LPS_ENGINEERING: Number,
449 LPS_COMMAND: Number,
450 LPS_DRIFT_COMBAT: Number,
451 LPS_DRIFT_RIDING: Number,
452 LPS_DRIFT_OPPORTUNITY: Number,
453 LPS_DRIFT_ENDURANCE: Number
442 LPP_SPACE: { type: Number, default: 0 },
443 LPS_PILOTING: { type: Number, default: 0 },
444 LPS_GUNNERY: { type: Number, default: 0 },
445 LPS_TACTICAL: { type: Number, default: 0 },
446 LPS_ENGINEERING: { type: Number, default: 0 },
447 LPS_COMMAND: { type: Number, default: 0 },
448 LPP_DRIFTER: { type: Number, default: 0 },
449 LPS_DRIFT_COMBAT: { type: Number, default: 0 },
450 LPS_DRIFT_RIDING: { type: Number, default: 0 },
451 LPS_DRIFT_OPPORTUNITY: { type: Number, default: 0 },
452 LPS_DRIFT_ENDURANCE: { type: Number, default: 0 }
454 453 },
455 454 { _id: false }
456 455 );
@@ -1018,7 +1017,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
1018 1017
1019 1018 //Modulars lvl and exp(Railjack|Duviri)
1020 1019 //https://warframe.fandom.com/wiki/Intrinsics
1021 PlayerSkills: playerSkillsSchema,
1020 PlayerSkills: { type: playerSkillsSchema, default: {} },
1022 1021
1023 1022 //TradeBannedUntil data
1024 1023 TradeBannedUntil: Schema.Types.Mixed,
Modified src/routes/api.ts +2 -0
@@ -46,6 +46,7 @@ import { missionInventoryUpdateController } from "@/src/controllers/api/missionI
46 46 import { modularWeaponCraftingController } from "@/src/controllers/api/modularWeaponCraftingController";
47 47 import { modularWeaponSaleController } from "@/src/controllers/api/modularWeaponSaleController";
48 48 import { nameWeaponController } from "@/src/controllers/api/nameWeaponController";
49 import { playerSkillsController } from "@/src/controllers/api/playerSkillsController";
49 50 import { projectionManagerController } from "../controllers/api/projectionManagerController";
50 51 import { purchaseController } from "@/src/controllers/api/purchaseController";
51 52 import { queueDojoComponentDestructionController } from "@/src/controllers/api/queueDojoComponentDestructionController";
@@ -134,6 +135,7 @@ apiRouter.post("/login.php", loginController);
134 135 apiRouter.post("/missionInventoryUpdate.php", missionInventoryUpdateController);
135 136 apiRouter.post("/modularWeaponCrafting.php", modularWeaponCraftingController);
136 137 apiRouter.post("/nameWeapon.php", nameWeaponController);
138 apiRouter.post("/playerSkills.php", playerSkillsController);
137 139 apiRouter.post("/projectionManager.php", projectionManagerController);
138 140 apiRouter.post("/purchase.php", purchaseController);
139 141 apiRouter.post("/rerollRandomMod.php", rerollRandomModController);
Modified src/types/inventoryTypes/inventoryTypes.ts +1 -2
@@ -819,13 +819,12 @@ export interface IPersonalTechProject {
819 819
820 820 export interface IPlayerSkills {
821 821 LPP_SPACE: number;
822 LPP_DRIFTER: number;
823 LPS_NONE: number;
824 822 LPS_PILOTING: number;
825 823 LPS_GUNNERY: number;
826 824 LPS_TACTICAL: number;
827 825 LPS_ENGINEERING: number;
828 826 LPS_COMMAND: number;
827 LPP_DRIFTER: number;
829 828 LPS_DRIFT_COMBAT: number;
830 829 LPS_DRIFT_RIDING: number;
831 830 LPS_DRIFT_OPPORTUNITY: number;