返回提交历史
Added
src/controllers/api/clearNewEpisodeRewardController.ts
+6
-0
Modified
src/controllers/api/syndicateSacrificeController.ts
+23
-3
Modified
src/routes/api.ts
+2
-0
Modified
src/services/itemDataService.ts
+4
-0
XFEstudio/SpaceNinjaServer
feat: nightwave rank up rewards (#1320)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1320
bfcd928f
代码差异
4 个文件
+35
-3
@@ -0,0 +1,6 @@
1
import { RequestHandler } from "express";
2
3
// example req.body: {"NewEpisodeReward":true,"crossPlaySetting":"ENABLED"}
4
export const clearNewEpisodeRewardController: RequestHandler = (_req, res) => {
5
res.status(200).end();
6
};
@@ -1,10 +1,17 @@
1
1
import { getJSONfromString } from "@/src/helpers/stringHelpers";
2
2
import { RequestHandler } from "express";
3
3
import { getAccountIdForRequest } from "@/src/services/loginService";
4
import { ExportSyndicates, ISyndicateSacrifice } from "warframe-public-export-plus";
4
import { ExportNightwave, ExportSyndicates, ISyndicateSacrifice } from "warframe-public-export-plus";
5
5
import { handleStoreItemAcquisition } from "@/src/services/purchaseService";
6
import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService";
6
import {
7
addItem,
8
addMiscItems,
9
combineInventoryChanges,
10
getInventory,
11
updateCurrency
12
} from "@/src/services/inventoryService";
7
13
import { IInventoryChanges } from "@/src/types/purchaseTypes";
14
import { fromStoreItem, isStoreItem } from "@/src/services/itemDataService";
8
15
9
16
export const syndicateSacrificeController: RequestHandler = async (request, response) => {
10
17
const accountId = await getAccountIdForRequest(request);
@@ -22,7 +29,7 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
22
29
InventoryChanges: {},
23
30
Level: data.SacrificeLevel,
24
31
LevelIncrease: level <= 0 ? 1 : level,
25
NewEpisodeReward: syndicate.Tag == "RadioLegionIntermission9Syndicate"
32
NewEpisodeReward: false
26
33
};
27
34
28
35
const manifest = ExportSyndicates[data.AffiliationTag];
@@ -64,6 +71,19 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
64
71
);
65
72
}
66
73
74
if (data.AffiliationTag == ExportNightwave.affiliationTag) {
75
const index = syndicate.Title - 1;
76
if (index < ExportNightwave.rewards.length) {
77
res.NewEpisodeReward = true;
78
const reward = ExportNightwave.rewards[index];
79
let rewardType = reward.uniqueName;
80
if (isStoreItem(rewardType)) {
81
rewardType = fromStoreItem(rewardType);
82
}
83
combineInventoryChanges(res.InventoryChanges, await addItem(inventory, rewardType, reward.itemCount ?? 1));
84
}
85
}
86
67
87
await inventory.save();
68
88
69
89
response.json(res);
@@ -15,6 +15,7 @@ import { checkDailyMissionBonusController } from "@/src/controllers/api/checkDai
15
15
import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController";
16
16
import { claimLibraryDailyTaskRewardController } from "@/src/controllers/api/claimLibraryDailyTaskRewardController";
17
17
import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
18
import { clearNewEpisodeRewardController } from "@/src/controllers/api/clearNewEpisodeRewardController";
18
19
import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
19
20
import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController";
20
21
import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController";
@@ -175,6 +176,7 @@ apiRouter.post("/artifactTransmutation.php", artifactTransmutationController);
175
176
apiRouter.post("/changeDojoRoot.php", changeDojoRootController);
176
177
apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
177
178
apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
179
apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController);
178
180
apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
179
181
apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
180
182
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
@@ -250,6 +250,10 @@ export const convertInboxMessage = (message: IInboxMessage): IMessage => {
250
250
} satisfies IMessage;
251
251
};
252
252
253
export const isStoreItem = (type: string): boolean => {
254
return type.startsWith("/Lotus/StoreItems/");
255
};
256
253
257
export const toStoreItem = (type: string): string => {
254
258
return "/Lotus/StoreItems/" + type.substring("/Lotus/".length);
255
259
};