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: rush repair drones (#1733)

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

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

代码差异

1 个文件 +26 -2
Modified src/controllers/api/guildTechController.ts +26 -2
@@ -360,6 +360,22 @@ export const guildTechController: RequestHandler = async (req, res) => {
360 360 res.json({
361 361 inventoryChanges: inventoryChanges
362 362 });
363 } else if (data.Action == "InstantFinish") {
364 if (data.TechProductCategory != "CrewShipWeapons" && data.TechProductCategory != "CrewShipWeaponSkins") {
365 throw new Error(`unexpected TechProductCategory: ${data.TechProductCategory}`);
366 }
367 const inventoryChanges = finishComponentRepair(inventory, data.TechProductCategory, data.CategoryItemId!);
368 inventoryChanges.MiscItems = [
369 {
370 ItemType: "/Lotus/Types/Items/MiscItems/InstantSalvageRepairItem",
371 ItemCount: -1
372 }
373 ];
374 addMiscItems(inventory, inventoryChanges.MiscItems);
375 await inventory.save();
376 res.json({
377 inventoryChanges: inventoryChanges
378 });
363 379 } else {
364 380 logger.debug(`data provided to ${req.path}: ${String(req.body)}`);
365 381 throw new Error(`unhandled guildTech request`);
@@ -372,7 +388,7 @@ type TGuildTechRequest =
372 388 | IGuildTechContributeRequest;
373 389
374 390 interface IGuildTechBasicRequest {
375 Action: "Start" | "Fabricate" | "Pause" | "Unpause" | "Cancel" | "Rush";
391 Action: "Start" | "Fabricate" | "Pause" | "Unpause" | "Cancel" | "Rush" | "InstantFinish";
376 392 Mode: "Guild" | "Personal";
377 393 RecipeType: string;
378 394 TechProductCategory?: string;
@@ -406,11 +422,19 @@ const claimSalvagedComponent = (inventory: TInventoryDatabaseDocument, itemId: s
406 422 inventory.PersonalTechProjects.splice(personalTechProjectIndex, 1);
407 423
408 424 const category = personalTechProject.ProductCategory! as "CrewShipWeapons" | "CrewShipWeaponSkins";
425 return finishComponentRepair(inventory, category, itemId);
426 };
427
428 const finishComponentRepair = (
429 inventory: TInventoryDatabaseDocument,
430 category: "CrewShipWeapons" | "CrewShipWeaponSkins",
431 itemId: string
432 ): IInventoryChanges => {
409 433 const salvageCategory = getSalvageCategory(category);
410 434
411 435 // find salved part & delete it
412 436 const salvageIndex = inventory[salvageCategory].findIndex(x => x._id.equals(itemId));
413 const salvageItem = inventory[category][salvageIndex];
437 const salvageItem = inventory[salvageCategory][salvageIndex];
414 438 inventory[salvageCategory].splice(salvageIndex, 1);
415 439
416 440 // add final item