From 90f05c477b4a28df54dd28d7634f7ddae31acc39 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 21 Jan 2025 20:05:28 +0100 Subject: [PATCH 1/3] fix: slight logic error in importService (#846) --- src/services/importService.ts | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/services/importService.ts b/src/services/importService.ts index 91857653..e1cbb9f3 100644 --- a/src/services/importService.ts +++ b/src/services/importService.ts @@ -129,18 +129,18 @@ const convertDialogueHistory = (client: IDialogueHistoryClient): IDialogueHistor export const importInventory = (db: TInventoryDatabaseDocument, client: Partial): void => { for (const key of equipmentKeys) { - if (client[key]) { + if (client[key] !== undefined) { replaceArray(db[key], client[key].map(convertEquipment)); } } - if (client.WeaponSkins) { + if (client.WeaponSkins !== undefined) { replaceArray(db.WeaponSkins, client.WeaponSkins.map(convertWeaponSkin)); } - if (client.Upgrades) { + if (client.Upgrades !== undefined) { replaceArray(db.Upgrades, client.Upgrades.map(convertUpgrade)); } for (const key of ["RawUpgrades", "MiscItems"] as const) { - if (client[key]) { + if (client[key] !== undefined) { db[key].splice(0, db[key].length); client[key].forEach(x => { db[key].push({ @@ -151,7 +151,7 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial< } } for (const key of ["OperatorLoadOuts", "AdultOperatorLoadOuts"] as const) { - if (client[key]) { + if (client[key] !== undefined) { replaceArray(db[key], client[key].map(convertOperatorConfig)); } } @@ -169,11 +169,11 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial< "OperatorAmpBin", "CrewShipSalvageBin" ] as const) { - if (client[key]) { + if (client[key] !== undefined) { replaceSlots(db[key], client[key]); } } - if (client.UseAdultOperatorLoadout) { + if (client.UseAdultOperatorLoadout !== undefined) { db.UseAdultOperatorLoadout = client.UseAdultOperatorLoadout; } for (const key of [ @@ -184,42 +184,42 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial< "FusionPoints", "PrimeTokens" ] as const) { - if (client[key]) { + if (client[key] !== undefined) { db[key] = client[key]; } } for (const key of ["ThemeStyle", "ThemeBackground", "ThemeSounds", "EquippedInstrument", "FocusAbility"] as const) { - if (client[key]) { + if (client[key] !== undefined) { db[key] = client[key]; } } for (const key of ["EquippedGear", "EquippedEmotes", "NodeIntrosCompleted"] as const) { - if (client[key]) { + if (client[key] !== undefined) { db[key] = client[key]; } } - if (client.XPInfo) { + if (client.XPInfo !== undefined) { db.XPInfo = client.XPInfo; } - if (client.CurrentLoadOutIds) { + if (client.CurrentLoadOutIds !== undefined) { db.CurrentLoadOutIds = client.CurrentLoadOutIds; } - if (client.Affiliations) { + if (client.Affiliations !== undefined) { db.Affiliations = client.Affiliations; } - if (client.FusionTreasures) { + if (client.FusionTreasures !== undefined) { db.FusionTreasures = client.FusionTreasures; } - if (client.FocusUpgrades) { + if (client.FocusUpgrades !== undefined) { db.FocusUpgrades = client.FocusUpgrades; } - if (client.CrewShips) { + if (client.CrewShips !== undefined) { replaceArray(db.CrewShips, client.CrewShips.map(convertCrewShip)); } - if (client.InfestedFoundry) { + if (client.InfestedFoundry !== undefined) { db.InfestedFoundry = convertInfestedFoundry(client.InfestedFoundry); } - if (client.DialogueHistory) { + if (client.DialogueHistory !== undefined) { db.DialogueHistory = convertDialogueHistory(client.DialogueHistory); } }; -- 2.47.2 From 8858b156933563a40618a262af621ec89d4bcab2 Mon Sep 17 00:00:00 2001 From: Sainan Date: Tue, 21 Jan 2025 20:07:15 +0100 Subject: [PATCH 2/3] fix: rectify CrewMembers import & typings (#845) --- src/models/inventoryModels/inventoryModel.ts | 33 +++++++++++++------- src/services/importService.ts | 15 +++++++-- src/types/inventoryTypes/inventoryTypes.ts | 26 +++++++++------ 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 75a094f6..276e2321 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -41,7 +41,6 @@ import { ICrewShipPortGuns, ICrewShipCustomization, ICrewShipWeapon, - ICrewShipMembersClient, ICrewShipPilotWeapon, IShipExterior, IHelminthFoodRecord, @@ -52,7 +51,9 @@ import { ICompletedDialogue, IDialogueClient, IUpgradeDatabase, - ICrewShipDatabase + ICrewShipDatabase, + ICrewShipMemberDatabase, + ICrewShipMemberClient } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; import { @@ -675,25 +676,33 @@ const crewShipCustomizationSchema = new Schema( { _id: false } ); -const crewShipMembersSchema = new Schema( +const crewShipMemberSchema = new Schema( { - SLOT_A: { type: Schema.Types.ObjectId, required: false }, - SLOT_B: { type: Schema.Types.ObjectId, required: false }, - SLOT_C: { type: Schema.Types.ObjectId, required: false } + ItemId: { type: Schema.Types.ObjectId, required: false }, + NemesisFingerprint: { type: Number, required: false } }, { _id: false } ); -crewShipMembersSchema.set("toJSON", { +crewShipMemberSchema.set("toJSON", { virtuals: true, transform(_doc, obj) { - const db = obj as ICrewShipMembersDatabase; - const client = obj as ICrewShipMembersClient; - client.SLOT_A = db.SLOT_A ? { ItemId: toOid(db.SLOT_A) } : undefined; - client.SLOT_B = db.SLOT_B ? { ItemId: toOid(db.SLOT_B) } : undefined; - client.SLOT_C = db.SLOT_C ? { ItemId: toOid(db.SLOT_C) } : undefined; + const db = obj as ICrewShipMemberDatabase; + const client = obj as ICrewShipMemberClient; + if (db.ItemId) { + client.ItemId = toOid(db.ItemId); + } } }); +const crewShipMembersSchema = new Schema( + { + SLOT_A: { type: crewShipMemberSchema, required: false }, + SLOT_B: { type: crewShipMemberSchema, required: false }, + SLOT_C: { type: crewShipMemberSchema, required: false } + }, + { _id: false } +); + const crewShipSchema = new Schema({ ItemType: { type: String, required: true }, Configs: { type: [ItemConfigSchema], default: [] }, diff --git a/src/services/importService.ts b/src/services/importService.ts index e1cbb9f3..225f3898 100644 --- a/src/services/importService.ts +++ b/src/services/importService.ts @@ -10,6 +10,8 @@ import { equipmentKeys, ICrewShipClient, ICrewShipDatabase, + ICrewShipMemberClient, + ICrewShipMemberDatabase, ICrewShipMembersClient, ICrewShipMembersDatabase, IDialogueClient, @@ -85,11 +87,18 @@ const replaceSlots = (db: ISlots, client: ISlots): void => { db.Slots = client.Slots; }; +const convertCrewShipMember = (client: ICrewShipMemberClient): ICrewShipMemberDatabase => { + return { + ...client, + ItemId: client.ItemId ? new Types.ObjectId(client.ItemId.$oid) : undefined + }; +}; + const convertCrewShipMembers = (client: ICrewShipMembersClient): ICrewShipMembersDatabase => { return { - SLOT_A: client.SLOT_A ? new Types.ObjectId(client.SLOT_A.ItemId.$oid) : undefined, - SLOT_B: client.SLOT_B ? new Types.ObjectId(client.SLOT_B.ItemId.$oid) : undefined, - SLOT_C: client.SLOT_C ? new Types.ObjectId(client.SLOT_C.ItemId.$oid) : undefined + SLOT_A: client.SLOT_A ? convertCrewShipMember(client.SLOT_A) : undefined, + SLOT_B: client.SLOT_B ? convertCrewShipMember(client.SLOT_B) : undefined, + SLOT_C: client.SLOT_C ? convertCrewShipMember(client.SLOT_C) : undefined }; }; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index e0e446f9..3c2cf582 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -471,19 +471,25 @@ export interface ICrewShipDatabase extends Omit Date: Wed, 22 Jan 2025 09:02:20 +0100 Subject: [PATCH 3/3] fix: exclude riven buffs from being a curse --- src/controllers/api/rerollRandomModController.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/api/rerollRandomModController.ts b/src/controllers/api/rerollRandomModController.ts index 42fdf337..ba72dc43 100644 --- a/src/controllers/api/rerollRandomModController.ts +++ b/src/controllers/api/rerollRandomModController.ts @@ -67,7 +67,9 @@ const randomiseStats = (randomModType: string, fingerprint: IUnveiledRivenFinger fingerprint.curses = []; if (Math.random() < 0.5) { - const entry = getRandomElement(meta.upgradeEntries!.filter(x => x.canBeCurse)); + const entry = getRandomElement( + meta.upgradeEntries!.filter(x => x.canBeCurse && !fingerprint.buffs.find(y => y.Tag == x.tag)) + ); fingerprint.curses.push({ Tag: entry.tag, Value: Math.trunc(Math.random() * 0x40000000) }); } }; -- 2.47.2