diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index efd33917..1b18511f 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -10,7 +10,10 @@ export const upgradesController: RequestHandler = async (req, res) => { const inventory = await getInventory(accountId); const InventoryChanges: any = {}; for (const operation of payload.Operations) { - if (operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker") { + if ( + operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker" || + operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker" + ) { updateCurrency(10, true, accountId); } else { addMiscItems(inventory, [ @@ -83,6 +86,21 @@ export const upgradesController: RequestHandler = async (req, res) => { } } break; + case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": + for (const item of inventory[payload.ItemCategory as TGenericItemKey] as IGenericItemDatabase[]) { + if (item._id.toString() == payload.ItemId.$oid) { + item.CustomizationSlotPurchases ??= 0; + item.CustomizationSlotPurchases += 1; + InventoryChanges[payload.ItemCategory] = { + ItemId: { + $oid: payload.ItemId.$oid + }, + CustomizationSlotPurchases: item.CustomizationSlotPurchases + }; + break; + } + } + break; default: throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); } diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 43f15819..fdb3a636 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -193,6 +193,7 @@ const WeaponSchema = new Schema( Polarity: [polaritySchema], FocusLens: String, ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, UpgradeType: Schema.Types.Mixed, //todo UpgradeFingerprint: String, ItemName: String, @@ -275,6 +276,7 @@ const suitSchema = new Schema( Polarity: [polaritySchema], Polarized: Number, ModSlotPurchases: Number, + CustomizationSlotPurchases: Number, FocusLens: String, UnlockLevel: Number }, diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 22b543a8..8fe48081 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -17,6 +17,7 @@ export interface ISuitDatabase { Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; FocusLens?: string; UnlockLevel?: number; _id: Types.ObjectId; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 6d9ce1ca..8bf01538 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -95,6 +95,7 @@ export interface IGenericItem { Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; } export interface IGenericItemDatabase extends Omit { diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 7cc390f3..46d11d01 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -17,6 +17,7 @@ export interface IWeaponDatabase { Polarity?: IPolarity[]; FocusLens?: string; ModSlotPurchases?: number; + CustomizationSlotPurchases?: number; UpgradeType?: string; UpgradeFingerprint?: string; ItemName?: string;