From 8ac0c08592ca22209567b1ca1ae2c28a3f42514d Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:40:28 +0200 Subject: [PATCH] feat: additional operator appearance slots --- src/controllers/api/upgradeOperatorController.ts | 16 ++++++++++++++++ src/models/inventoryModels/inventoryModel.ts | 1 + src/routes/api.ts | 2 ++ src/types/inventoryTypes/inventoryTypes.ts | 1 + 4 files changed, 20 insertions(+) create mode 100644 src/controllers/api/upgradeOperatorController.ts diff --git a/src/controllers/api/upgradeOperatorController.ts b/src/controllers/api/upgradeOperatorController.ts new file mode 100644 index 00000000..4aedef6f --- /dev/null +++ b/src/controllers/api/upgradeOperatorController.ts @@ -0,0 +1,16 @@ +import { getInventory, updateCurrency } from "../../services/inventoryService.ts"; +import { getAccountIdForRequest } from "../../services/loginService.ts"; +import type { RequestHandler } from "express"; + +export const upgradeOperatorController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory( + accountId, + "OperatorCustomizationSlotPurchases PremiumCredits PremiumCreditsFree" + ); + inventory.OperatorCustomizationSlotPurchases ??= 0; + inventory.OperatorCustomizationSlotPurchases += 1; + const inventoryChanges = updateCurrency(inventory, 10, true); + await inventory.save(); + res.json({ InventoryChanges: inventoryChanges }); +}; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 0a39b701..ac17359e 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1564,6 +1564,7 @@ const inventorySchema = new Schema( OperatorLoadOuts: [operatorConfigSchema], //Drifter AdultOperatorLoadOuts: [operatorConfigSchema], + OperatorCustomizationSlotPurchases: Number, // Kahl KahlLoadOuts: [operatorConfigSchema], diff --git a/src/routes/api.ts b/src/routes/api.ts index 44d3cd1e..a9c84b84 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -162,6 +162,7 @@ import { updateQuestController } from "../controllers/api/updateQuestController. import { updateSessionGetController, updateSessionPostController } from "../controllers/api/updateSessionController.ts"; import { updateSongChallengeController } from "../controllers/api/updateSongChallengeController.ts"; import { updateThemeController } from "../controllers/api/updateThemeController.ts"; +import { upgradeOperatorController } from "../controllers/api/upgradeOperatorController.ts"; import { upgradesController } from "../controllers/api/upgradesController.ts"; import { valenceSwapController } from "../controllers/api/valenceSwapController.ts"; import { wishlistController } from "../controllers/api/wishlistController.ts"; @@ -229,6 +230,7 @@ apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetContr apiRouter.get("/surveys.php", surveysController); apiRouter.get("/trading.php", tradingController); apiRouter.get("/updateSession.php", updateSessionGetController); +apiRouter.get("/upgradeOperator.php", upgradeOperatorController); // post apiRouter.post("/abortDojoComponent.php", abortDojoComponentController); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 89f493f4..ffa0d533 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -374,6 +374,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu CrewMembers: ICrewMemberClient[]; LotusCustomization?: ILotusCustomization; UseAdultOperatorLoadout?: boolean; + OperatorCustomizationSlotPurchases?: number; NemesisAbandonedRewards: string[]; LastInventorySync?: IOid; NextRefill?: IMongoDate;