返回提交历史
Modified
src/controllers/api/guildTechController.ts
+26
-2
XFEstudio/SpaceNinjaServer
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
代码差异
1 个文件
+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