From cdcf3f83d16152f75a759bda302601b90572aa6b Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 5 May 2024 15:41:39 +0200 Subject: [PATCH] feat: implement Orokin Catalyst --- src/controllers/api/upgradesController.ts | 21 +++++++++++++-------- src/types/inventoryTypes/inventoryTypes.ts | 6 ++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 49105522..af45cec4 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IGenericItemDatabase, IMiscItem, TGenericItemKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { addMiscItems, getInventory } from "@/src/services/inventoryService"; export const upgradesController: RequestHandler = async (req, res) => { @@ -14,14 +14,19 @@ export const upgradesController: RequestHandler = async (req, res) => { ItemCount: -1 } satisfies IMiscItem ]); - if (operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/OrokinReactor") { - for (const suit of inventory.Suits) { - if (suit._id.toString() == payload.ItemId.$oid) { - suit.Features ??= 0; - suit.Features |= 1; - break; + switch (operation.UpgradeRequirement) { + case "/Lotus/Types/Items/MiscItems/OrokinReactor": + case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.Features ??= 0; + item.Features |= 1; + break; + } } - } + break; + default: + throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); } } await inventory.save(); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 0bec69da..99792a20 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -95,6 +95,12 @@ export interface IGenericItem { Features?: number; //space suit has this } +export interface IGenericItemDatabase extends Omit { + _id: Types.ItemId; +} + +export type TGenericItemKey = "Suits" | "LongGuns" | "Pistols" | "Melee"; + export interface IDuviriInfo { Seed: number; NumCompletions: number;