feat: implement Orokin Reactor

This commit is contained in:
Sainan 2024-05-05 15:31:22 +02:00
parent 1dd9f4ca4f
commit c0592672eb
4 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,29 @@
import { RequestHandler } from "express";
import { IUpgradesRequest } from "@/src/types/requestTypes";
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
import { addMiscItems, getInventory } from "@/src/services/inventoryService";
export const upgradesController: RequestHandler = async (req, res) => {
const accountId = req.query.accountId as string;
const payload = JSON.parse(req.body.toString()) as IUpgradesRequest;
const inventory = await getInventory(accountId);
for (const operation of payload.Operations) {
addMiscItems(inventory, [
{
ItemType: operation.UpgradeRequirement,
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;
}
}
}
}
await inventory.save();
res.end();
};

View File

@ -45,6 +45,7 @@ import { getGuildController } from "@/src/controllers/api/getGuildController";
import { addFriendImageController } from "@/src/controllers/api/addFriendImageController";
import { createGuildController } from "@/src/controllers/api/createGuildController";
import { sellController } from "@/src/controllers/api/sellController";
import { upgradesController } from "@/src/controllers/api/upgradesController";
const apiRouter = express.Router();
@ -100,5 +101,6 @@ apiRouter.post("/updateTheme.php", updateThemeController);
apiRouter.post("/addFriendImage.php", addFriendImageController);
apiRouter.post("/createGuild.php", createGuildController);
apiRouter.post("/sell.php", sellController);
apiRouter.post("/upgrades.php", upgradesController);
export { apiRouter };

View File

@ -211,7 +211,7 @@ const addGearExpByCategory = (
});
};
const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => {
export const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => {
const { MiscItems } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {

View File

@ -1,3 +1,4 @@
import { IOid } from "./commonTypes";
import {
IBooster,
IChallengeProgress,
@ -64,3 +65,19 @@ export interface IUpdateGlyphRequest {
AvatarImageType: string;
AvatarImage: string;
}
export interface IUpgradesRequest {
ItemCategory: string;
ItemId: IOid;
ItemFeatures: number;
UpgradeVersion: number;
Operations: IUpgradeOperation[];
}
export interface IUpgradeOperation {
OperationType: string;
UpgradeRequirement: string; // uniqueName of item being consumed
PolarizeSlot: number;
PolarizeValue: string; // polarity
PolarityRemap: {}[];
}