返回提交历史
Added
src/controllers/api/playerSkillsController.ts
+31
-0
Modified
src/models/inventoryModels/inventoryModel.ts
+12
-13
Modified
src/routes/api.ts
+2
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+1
-2
XFEstudio/XFESpaceNinjaServer
feat: leveling up intrinsics (#725)
f56fc232
代码差异
4 个文件
+46
-15
@@ -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];
@@ -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,
@@ -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);
@@ -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;