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

chore: add historic rhino recipe data (#3979)

Closes #3901 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3979 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

43960dd0
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

4 个文件 +92 -4
Modified src/constants/gameToBuildVersion.ts +1 -0
@@ -4,6 +4,7 @@ const gameToBuildVersion = {
4 4 "41.0.0": "2025.12.09.14.18",
5 5 "40.0.0": "2025.09.25.17.01",
6 6 "39.1.0": "2025.08.26.09.49",
7 "39.0.0": "2025.06.23.11.39",
7 8 "38.6.0": "2025.05.20.10.18",
8 9 "38.5.0": "2025.03.18.09.51",
9 10 "38.0.8": "2025.02.05.11.19",
Modified src/controllers/api/claimCompletedRecipeController.ts +1 -1
@@ -68,7 +68,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
68 68
69 69 inventory.PendingRecipes.pull(pendingRecipe._id);
70 70
71 const recipe = getRecipe(pendingRecipe.ItemType);
71 const recipe = getRecipe(pendingRecipe.ItemType, account.BuildLabel);
72 72 if (!recipe) {
73 73 throw new Error(`no completed item found for recipe ${pendingRecipe._id.toString()}`);
74 74 }
Modified src/controllers/api/startRecipeController.ts +1 -1
@@ -38,7 +38,7 @@ export const startRecipeController: RequestHandler = async (req, res) => {
38 38 const modernItemType = U5ToModernRecipes[recipeName];
39 39 if (modernItemType) recipeName = modernItemType;
40 40 }
41 const recipe = getRecipe(recipeName);
41 const recipe = getRecipe(recipeName, account.BuildLabel);
42 42
43 43 if (!recipe) {
44 44 throw new Error(`unknown recipe ${recipeName}`);
Modified src/services/itemDataService.ts +89 -2
@@ -1300,8 +1300,95 @@ const getLegacySolarMapData = async (target: string, buildLabel: string): Promis
1300 1300 return json;
1301 1301 };
1302 1302
1303 export const getRecipe = (uniqueName: string): IRecipe | undefined => {
1304 return ExportRecipes[uniqueName] ?? supplementalRecipes[uniqueName];
1303 export const getRecipe = (uniqueName: string, buildLabel?: string): IRecipe | undefined => {
1304 let data = ExportRecipes[uniqueName] ?? supplementalRecipes[uniqueName];
1305 if (buildLabel) {
1306 if (uniqueName == "/Lotus/Types/Recipes/WarframeRecipes/RhinoBlueprint") {
1307 if (version_compare(buildLabel, gameToBuildVersion["39.0.0"]) < 0) {
1308 data = {
1309 ...data,
1310 ingredients: [
1311 data.ingredients[0],
1312 data.ingredients[1],
1313 data.ingredients[2],
1314 {
1315 ItemType: "/Lotus/Types/Items/MiscItems/Gallium",
1316 ItemCount: 1
1317 }
1318 ]
1319 };
1320 if (version_compare(buildLabel, gameToBuildVersion["38.5.0"]) < 0) {
1321 data.buildTime = 259200;
1322 // Update 19.13 (2017-03-09)
1323 if (version_compare(buildLabel, "2017.03.09.00.00") < 0) {
1324 data.ingredients[3].ItemType = "/Lotus/Types/Items/MiscItems/OrokinCell";
1325 }
1326 }
1327 }
1328 } else if (uniqueName == "/Lotus/Types/Recipes/WarframeRecipes/RhinoChassisBlueprint") {
1329 if (version_compare(buildLabel, gameToBuildVersion["39.0.0"]) < 0) {
1330 data = {
1331 ...data,
1332 ingredients: [
1333 {
1334 ItemType: "/Lotus/Types/Items/MiscItems/Morphic",
1335 ItemCount: 1
1336 },
1337 data.ingredients[1],
1338 data.ingredients[2]
1339 ]
1340 };
1341 }
1342 } else if (uniqueName == "/Lotus/Types/Recipes/WarframeRecipes/RhinoHelmetBlueprint") {
1343 if (version_compare(buildLabel, gameToBuildVersion["39.0.0"]) < 0) {
1344 data = {
1345 ...data,
1346 ingredients: [
1347 data.ingredients[0],
1348 {
1349 ItemType: "/Lotus/Types/Items/MiscItems/Morphic",
1350 ItemCount: 1
1351 },
1352 data.ingredients[2],
1353 data.ingredients[3]
1354 ]
1355 };
1356 // Update 19.13 (2017-03-09)
1357 if (version_compare(buildLabel, "2017.03.09.00.00") < 0) {
1358 data.ingredients[1].ItemType = "/Lotus/Types/Items/MiscItems/NeuralSensor";
1359 }
1360 }
1361 } else if (uniqueName == "/Lotus/Types/Recipes/WarframeRecipes/RhinoSystemsBlueprint") {
1362 if (version_compare(buildLabel, gameToBuildVersion["39.0.0"]) < 0) {
1363 data = {
1364 ...data,
1365 ingredients: [
1366 {
1367 ItemType: "/Lotus/Types/Items/MiscItems/Gallium",
1368 ItemCount: 1
1369 },
1370 {
1371 ItemType: "/Lotus/Types/Items/MiscItems/Morphic",
1372 ItemCount: 1
1373 },
1374 {
1375 ItemType: "/Lotus/Types/Items/MiscItems/Salvage",
1376 ItemCount: 500
1377 },
1378 {
1379 ItemType: "/Lotus/Types/Items/MiscItems/Plastids",
1380 ItemCount: 600
1381 }
1382 ]
1383 };
1384 // Hotfix 30.0.6 (2021-04-20) Swapped the crafting requirement of Control Module for Gallium in Rhino Systems Blueprint to ease early player acquisition.
1385 if (version_compare(buildLabel, "2021.04.20.00.00") < 0) {
1386 data.ingredients[0].ItemType = "/Lotus/Types/Items/MiscItems/ControlModule";
1387 }
1388 }
1389 }
1390 }
1391 return data;
1305 1392 };
1306 1393
1307 1394 export const getSyndicate = (tag: string, buildLabel: string | undefined): ISyndicate | undefined => {