From 781f01520f40922660909952819c36bd2160c2c2 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sat, 26 Apr 2025 11:56:22 -0700 Subject: [PATCH] feat: save lotus customization (#1864) Closes #768 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1864 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/models/inventoryModels/inventoryModel.ts | 9 +++++++-- src/services/saveLoadoutService.ts | 5 +++++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- src/types/saveLoadoutTypes.ts | 4 +++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c9dd4be8..ad1b06ad 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -96,7 +96,8 @@ import { IInvasionProgressDatabase, IInvasionProgressClient, IAccolades, - IHubNpcCustomization + IHubNpcCustomization, + ILotusCustomization } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; import { @@ -780,6 +781,10 @@ const loreFragmentScansSchema = new Schema( { _id: false } ); +const lotusCustomizationSchema = new Schema().add(ItemConfigSchema).add({ + Persona: String +}); + const evolutionProgressSchema = new Schema( { Progress: Number, @@ -1628,7 +1633,7 @@ const inventorySchema = new Schema( //Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter. //https://warframe.fandom.com/wiki/Lotus#The_New_War - LotusCustomization: Schema.Types.Mixed, + LotusCustomization: { type: lotusCustomizationSchema, default: undefined }, //Progress+Rank+ItemType(ZarimanPumpShotgun) //https://warframe.fandom.com/wiki/Incarnon diff --git a/src/services/saveLoadoutService.ts b/src/services/saveLoadoutService.ts index 1f860433..0676d113 100644 --- a/src/services/saveLoadoutService.ts +++ b/src/services/saveLoadoutService.ts @@ -161,6 +161,11 @@ export const handleInventoryItemConfigChange = async ( } break; } + case "LotusCustomization": { + logger.debug(`saved LotusCustomization`, equipmentChanges.LotusCustomization); + inventory.LotusCustomization = equipmentChanges.LotusCustomization; + break; + } default: { if (equipmentKeys.includes(equipmentName as TEquipmentKey) && equipmentName != "ValidNewLoadoutId") { logger.debug(`general Item config saved of type ${equipmentName}`, { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 153021fc..2cec4037 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -328,7 +328,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu BlessingCooldown?: IMongoDate; CrewShipRawSalvage: ITypeCount[]; CrewMembers: ICrewMemberClient[]; - LotusCustomization: ILotusCustomization; + LotusCustomization?: ILotusCustomization; UseAdultOperatorLoadout?: boolean; NemesisAbandonedRewards: string[]; LastInventorySync: IOid; diff --git a/src/types/saveLoadoutTypes.ts b/src/types/saveLoadoutTypes.ts index dcd1f1b8..18d692c1 100644 --- a/src/types/saveLoadoutTypes.ts +++ b/src/types/saveLoadoutTypes.ts @@ -6,7 +6,8 @@ import { ICrewShipMembersClient, ICrewShipWeapon, IFlavourItem, - ILoadoutConfigClient + ILoadoutConfigClient, + ILotusCustomization } from "./inventoryTypes/inventoryTypes"; export interface ISaveLoadoutRequest { @@ -43,6 +44,7 @@ export interface ISaveLoadoutRequest { EquippedEmotes: string[]; UseAdultOperatorLoadout: boolean; WeaponSkins: IItemEntry; + LotusCustomization: ILotusCustomization; } export type ISaveLoadoutRequestNoUpgradeVer = Omit;