XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat: dojo room destruction stage (#1089)

Closes #1074 Based on what I could find, apparently only rooms need 2 hours to destroy and decos are removed instantly. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1089

77aa1caa
Sainan <sainan@calamity.inc>
提交于

代码差异

19 个文件 +64 -18
Modified config.json.example +1 -0
@@ -33,6 +33,7 @@
33 33 "noDailyStandingLimits": true,
34 34 "instantResourceExtractorDrones": false,
35 35 "noDojoRoomBuildStage": true,
36 "fastDojoRoomDestruction": true,
36 37 "noDojoResearchCosts": true,
37 38 "noDojoResearchTime": true,
38 39 "spoofMasteryRank": -1
Modified src/controllers/api/abortDojoComponentController.ts +1 -2
@@ -9,7 +9,6 @@ export const abortDojoComponentController: RequestHandler = async (req, res) =>
9 9 const guild = await getGuildForRequestEx(req, inventory);
10 10 const request = JSON.parse(String(req.body)) as IAbortDojoComponentRequest;
11 11
12 // TODO: Move already-contributed credits & items to the clan vault
13 12 if (request.DecoId) {
14 13 removeDojoDeco(guild, request.ComponentId, request.DecoId);
15 14 } else {
@@ -17,7 +16,7 @@ export const abortDojoComponentController: RequestHandler = async (req, res) =>
17 16 }
18 17
19 18 await guild.save();
20 res.json(getDojoClient(guild, 0, request.ComponentId));
19 res.json(await getDojoClient(guild, 0, request.ComponentId));
21 20 };
22 21
23 22 interface IAbortDojoComponentRequest {
Added src/controllers/api/abortDojoComponentDestructionController.ts +12 -0
@@ -0,0 +1,12 @@
1 import { getDojoClient, getGuildForRequest } from "@/src/services/guildService";
2 import { RequestHandler } from "express";
3
4 export const abortDojoComponentDestructionController: RequestHandler = async (req, res) => {
5 const guild = await getGuildForRequest(req);
6 const componentId = req.query.componentId as string;
7
8 guild.DojoComponents.id(componentId)!.DestructionTime = undefined;
9
10 await guild.save();
11 res.json(await getDojoClient(guild, 0, componentId));
12 };
Modified src/controllers/api/changeDojoRootController.ts +1 -1
@@ -58,7 +58,7 @@ export const changeDojoRootController: RequestHandler = async (req, res) => {
58 58
59 59 await guild.save();
60 60
61 res.json(getDojoClient(guild, 0));
61 res.json(await getDojoClient(guild, 0));
62 62 };
63 63
64 64 interface INode {
Modified src/controllers/api/contributeToDojoComponentController.ts +1 -1
@@ -50,7 +50,7 @@ export const contributeToDojoComponentController: RequestHandler = async (req, r
50 50 await guild.save();
51 51 await inventory.save();
52 52 res.json({
53 ...getDojoClient(guild, 0, component._id),
53 ...(await getDojoClient(guild, 0, component._id)),
54 54 InventoryChanges: inventoryChanges
55 55 });
56 56 };
Modified src/controllers/api/destroyDojoDecoController.ts +1 -2
@@ -6,10 +6,9 @@ export const destroyDojoDecoController: RequestHandler = async (req, res) => {
6 6 const request = JSON.parse(String(req.body)) as IDestroyDojoDecoRequest;
7 7
8 8 removeDojoDeco(guild, request.ComponentId, request.DecoId);
9 // TODO: The client says this is supposed to refund the resources to the clan vault, so we should probably do that.
10 9
11 10 await guild.save();
12 res.json(getDojoClient(guild, 0, request.ComponentId));
11 res.json(await getDojoClient(guild, 0, request.ComponentId));
13 12 };
14 13
15 14 interface IDestroyDojoDecoRequest {
Modified src/controllers/api/dojoComponentRushController.ts +1 -1
@@ -35,7 +35,7 @@ export const dojoComponentRushController: RequestHandler = async (req, res) => {
35 35 await guild.save();
36 36 await inventory.save();
37 37 res.json({
38 ...getDojoClient(guild, 0, component._id),
38 ...(await getDojoClient(guild, 0, component._id)),
39 39 InventoryChanges: inventoryChanges
40 40 });
41 41 };
Modified src/controllers/api/getGuildDojoController.ts +1 -1
@@ -24,5 +24,5 @@ export const getGuildDojoController: RequestHandler = async (req, res) => {
24 24 await guild.save();
25 25 }
26 26
27 res.json(getDojoClient(guild, 0));
27 res.json(await getDojoClient(guild, 0));
28 28 };
Modified src/controllers/api/placeDecoInComponentController.ts +1 -1
@@ -30,7 +30,7 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) =
30 30 }
31 31
32 32 await guild.save();
33 res.json(getDojoClient(guild, 0, component._id));
33 res.json(await getDojoClient(guild, 0, component._id));
34 34 };
35 35
36 36 interface IPlaceDecoInComponentRequest {
Modified src/controllers/api/queueDojoComponentDestructionController.ts +6 -3
@@ -1,12 +1,15 @@
1 import { getDojoClient, getGuildForRequest, removeDojoRoom } from "@/src/services/guildService";
1 import { config } from "@/src/services/configService";
2 import { getDojoClient, getGuildForRequest } from "@/src/services/guildService";
2 3 import { RequestHandler } from "express";
3 4
4 5 export const queueDojoComponentDestructionController: RequestHandler = async (req, res) => {
5 6 const guild = await getGuildForRequest(req);
6 7 const componentId = req.query.componentId as string;
7 8
8 removeDojoRoom(guild, componentId);
9 guild.DojoComponents.id(componentId)!.DestructionTime = new Date(
10 Date.now() + (config.fastDojoRoomDestruction ? 5_000 : 2 * 3600_000)
11 );
9 12
10 13 await guild.save();
11 res.json(getDojoClient(guild, 1));
14 res.json(await getDojoClient(guild, 0, componentId));
12 15 };
Modified src/controllers/api/setDojoComponentMessageController.ts +1 -1
@@ -12,7 +12,7 @@ export const setDojoComponentMessageController: RequestHandler = async (req, res
12 12 component.Message = payload.Message;
13 13 }
14 14 await guild.save();
15 res.json(getDojoClient(guild, 0, component._id));
15 res.json(await getDojoClient(guild, 0, component._id));
16 16 };
17 17
18 18 type SetDojoComponentMessageRequest = { Name: string } | { Message: string };
Modified src/controllers/api/startDojoRecipeController.ts +1 -1
@@ -37,5 +37,5 @@ export const startDojoRecipeController: RequestHandler = async (req, res) => {
37 37 component.CompletionTime = new Date(Date.now());
38 38 }
39 39 await guild.save();
40 res.json(getDojoClient(guild, 0));
40 res.json(await getDojoClient(guild, 0));
41 41 };
Modified src/routes/api.ts +2 -0
Modified src/services/configService.ts +1 -0
Modified src/services/guildService.ts +26 -4
Modified static/webui/index.html +4 -0
Modified static/webui/translations/en.js +1 -0
Modified static/webui/translations/fr.js +1 -0
Modified static/webui/translations/ru.js +1 -0