返回提交历史
Modified
config.json.example
+1
-0
Modified
src/controllers/api/abortDojoComponentController.ts
+1
-2
Added
src/controllers/api/abortDojoComponentDestructionController.ts
+12
-0
Modified
src/controllers/api/changeDojoRootController.ts
+1
-1
Modified
src/controllers/api/contributeToDojoComponentController.ts
+1
-1
Modified
src/controllers/api/destroyDojoDecoController.ts
+1
-2
Modified
src/controllers/api/dojoComponentRushController.ts
+1
-1
Modified
src/controllers/api/getGuildDojoController.ts
+1
-1
Modified
src/controllers/api/placeDecoInComponentController.ts
+1
-1
Modified
src/controllers/api/queueDojoComponentDestructionController.ts
+6
-3
Modified
src/controllers/api/setDojoComponentMessageController.ts
+1
-1
Modified
src/controllers/api/startDojoRecipeController.ts
+1
-1
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
XFEstudio/XFESpaceNinjaServer
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
代码差异
19 个文件
+64
-18
@@ -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
@@ -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 {
@@ -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
};
@@ -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 {
@@ -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
};
@@ -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 {
@@ -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
};
@@ -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
};
@@ -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 {
@@ -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
};
@@ -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 };
@@ -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
};