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: implement syndicateStandingBonus endpoint (#583)

52c0a312
Sainan <sainan@calamity.inc>
提交于

代码差异

2 个文件 +63 -0
Added src/controllers/api/syndicateStandingBonusController.ts +61 -0
@@ -0,0 +1,61 @@
1 import { RequestHandler } from "express";
2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 import { addMiscItems, getInventory } from "@/src/services/inventoryService";
4 import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
5 import { IOid } from "@/src/types/commonTypes";
6 import { ExportSyndicates } from "warframe-public-export-plus";
7
8 export const syndicateStandingBonusController: RequestHandler = async (req, res) => {
9 const accountId = await getAccountIdForRequest(req);
10 const request = JSON.parse(String(req.body)) as ISyndicateStandingBonusRequest;
11
12 let gainedStanding = 0;
13 request.Operation.Items.forEach(item => {
14 const medallion = (ExportSyndicates[request.Operation.AffiliationTag].medallions ?? []).find(
15 medallion => medallion.itemType == item.ItemType
16 );
17 if (medallion) {
18 gainedStanding += medallion.standing * item.ItemCount;
19 }
20
21 item.ItemCount *= -1;
22 });
23
24 const inventory = await getInventory(accountId);
25 addMiscItems(inventory, request.Operation.Items);
26
27 const syndicate = inventory.Affiliations.find(x => x.Tag == request.Operation.AffiliationTag);
28 if (syndicate !== undefined) {
29 syndicate.Standing += gainedStanding;
30 } else {
31 inventory.Affiliations.push({
32 Tag: request.Operation.AffiliationTag,
33 Standing: gainedStanding
34 });
35 }
36
37 // TODO: Subtract from daily limit bin; maybe also a cheat to skip that.
38
39 await inventory.save();
40
41 res.json({
42 InventoryChanges: {
43 MiscItems: request.Operation.Items
44 },
45 AffiliationMods: [
46 {
47 Tag: request.Operation.AffiliationTag,
48 Standing: gainedStanding
49 }
50 ]
51 });
52 };
53
54 interface ISyndicateStandingBonusRequest {
55 Operation: {
56 AffiliationTag: string;
57 AlternateBonusReward: ""; // ???
58 Items: IMiscItem[];
59 };
60 ModularWeaponId: IOid; // Seems to just be "000000000000000000000000", also note there's a "Category" query field
61 }
Modified src/routes/api.ts +2 -0
@@ -62,6 +62,7 @@ import { startRecipeController } from "@/src/controllers/api/startRecipeControll
62 62 import { stepSequencersController } from "@/src/controllers/api/stepSequencersController";
63 63 import { surveysController } from "@/src/controllers/api/surveysController";
64 64 import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController";
65 import { syndicateStandingBonusController } from "../controllers/api/syndicateStandingBonusController";
65 66 import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController";
66 67 import { trainingResultController } from "@/src/controllers/api/trainingResultController";
67 68 import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController";
@@ -139,6 +140,7 @@ apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);
139 140 apiRouter.post("/startRecipe.php", startRecipeController);
140 141 apiRouter.post("/stepSequencers.php", stepSequencersController);
141 142 apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController);
143 apiRouter.post("/syndicateStandingBonus.php", syndicateStandingBonusController);
142 144 apiRouter.post("/tauntHistory.php", tauntHistoryController);
143 145 apiRouter.post("/trainingResult.php", trainingResultController);
144 146 apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController);