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: cancel personal tech project (#1679)

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

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

代码差异

1 个文件 +33 -1
Modified src/controllers/api/guildTechController.ts +33 -1
@@ -28,7 +28,7 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
28 28 import { config } from "@/src/services/configService";
29 29 import { GuildPermission, ITechProjectClient } from "@/src/types/guildTypes";
30 30 import { GuildMember } from "@/src/models/guildModel";
31 import { toMongoDate } from "@/src/helpers/inventoryHelpers";
31 import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
32 32 import { logger } from "@/src/utils/logger";
33 33 import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
34 34
@@ -305,6 +305,38 @@ export const guildTechController: RequestHandler = async (req, res) => {
305 305 guild.ActiveDojoColorResearch = data.RecipeType;
306 306 await guild.save();
307 307 res.end();
308 } else if (data.Action == "Cancel" && data.CategoryItemId) {
309 const personalTechProjectIndex = inventory.PersonalTechProjects.findIndex(x =>
310 x.CategoryItemId?.equals(data.CategoryItemId)
311 );
312 const personalTechProject = inventory.PersonalTechProjects[personalTechProjectIndex];
313 inventory.PersonalTechProjects.splice(personalTechProjectIndex, 1);
314
315 const meta = ExportDojoRecipes.research[personalTechProject.ItemType];
316 const contributedCredits = meta.price - personalTechProject.ReqCredits;
317 const inventoryChanges = updateCurrency(inventory, contributedCredits * -1, false);
318 inventoryChanges.MiscItems = [];
319 for (const ingredient of meta.ingredients) {
320 const reqItem = personalTechProject.ReqItems.find(x => x.ItemType == ingredient.ItemType);
321 if (reqItem) {
322 const contributedItems = ingredient.ItemCount - reqItem.ItemCount;
323 inventoryChanges.MiscItems.push({
324 ItemType: ingredient.ItemType,
325 ItemCount: contributedItems
326 });
327 }
328 }
329 addMiscItems(inventory, inventoryChanges.MiscItems);
330
331 await inventory.save();
332 res.json({
333 action: "Cancel",
334 isPersonal: true,
335 inventoryChanges: inventoryChanges,
336 personalTech: {
337 ItemId: toOid(personalTechProject._id)
338 }
339 });
308 340 } else if (data.Action == "Rush" && data.CategoryItemId) {
309 341 const inventoryChanges: IInventoryChanges = {
310 342 ...updateCurrency(inventory, 20, true),