schema for CrewShipSalvagedWeapons

This commit is contained in:
AMelonInsideLemon 2025-03-23 17:51:56 +01:00
parent 47d3008a6c
commit 095dc9fd9e
3 changed files with 50 additions and 14 deletions

View File

@ -1120,7 +1120,12 @@ const alignmentSchema = new Schema<IAlignment>(
const crewShipWeaponSchema2 = new Schema<ICrewShipWeaponDatabase>( const crewShipWeaponSchema2 = new Schema<ICrewShipWeaponDatabase>(
{ {
ItemType: String ItemType: String,
Configs: { type: [ItemConfigSchema], default: undefined },
UpgradeVer: { type: Number, default: undefined },
UpgradeType: { type: Number, default: undefined },
UpgradeFingerprint: { type: String, default: undefined },
IsNew: { type: Boolean, default: undefined }
}, },
{ id: false } { id: false }
); );
@ -1261,11 +1266,11 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
CrewShipAmmo: [typeCountSchema], CrewShipAmmo: [typeCountSchema],
CrewShipWeapons: [crewShipWeaponSchema2], CrewShipWeapons: [crewShipWeaponSchema2],
CrewShipWeaponSkins: [upgradeSchema], CrewShipWeaponSkins: [upgradeSchema],
CrewShipSalvagedWeapons: [crewShipWeaponSchema2],
//NPC Crew and weapon
CrewMembers: [Schema.Types.Mixed],
CrewShipSalvagedWeaponSkins: [upgradeSchema], CrewShipSalvagedWeaponSkins: [upgradeSchema],
CrewShipSalvagedWeapons: [upgradeSchema],
//RailJack Crew
CrewMembers: [Schema.Types.Mixed],
//Complete Mission\Quests //Complete Mission\Quests
Missions: [missionSchema], Missions: [missionSchema],
@ -1526,6 +1531,8 @@ export type InventoryDocumentProps = {
Drones: Types.DocumentArray<IDroneDatabase>; Drones: Types.DocumentArray<IDroneDatabase>;
CrewShipWeapons: Types.DocumentArray<ICrewShipWeaponDatabase>; CrewShipWeapons: Types.DocumentArray<ICrewShipWeaponDatabase>;
CrewShipWeaponSkins: Types.DocumentArray<IUpgradeDatabase>; CrewShipWeaponSkins: Types.DocumentArray<IUpgradeDatabase>;
CrewShipSalvagedWeapons: Types.DocumentArray<ICrewShipWeaponDatabase>;
CrewShipSalvagedWeaponsSkins: Types.DocumentArray<IUpgradeDatabase>;
} & { [K in TEquipmentKey]: Types.DocumentArray<IEquipmentDatabase> }; } & { [K in TEquipmentKey]: Types.DocumentArray<IEquipmentDatabase> };
// eslint-disable-next-line @typescript-eslint/ban-types // eslint-disable-next-line @typescript-eslint/ban-types

View File

@ -12,6 +12,8 @@ import {
ICrewShipMemberDatabase, ICrewShipMemberDatabase,
ICrewShipMembersClient, ICrewShipMembersClient,
ICrewShipMembersDatabase, ICrewShipMembersDatabase,
ICrewShipWeaponClient,
ICrewShipWeaponDatabase,
IDialogueClient, IDialogueClient,
IDialogueDatabase, IDialogueDatabase,
IDialogueHistoryClient, IDialogueHistoryClient,
@ -67,6 +69,22 @@ const convertEquipment = (client: IEquipmentClient): IEquipmentDatabase => {
}; };
}; };
const convertCrewShipWeapon = (client: ICrewShipWeaponClient): ICrewShipWeaponDatabase => {
const { ItemId, ...rest } = client;
return {
...rest,
_id: new Types.ObjectId(ItemId.$oid),
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
Configs: client.Configs
? client.Configs.map(obj =>
Object.fromEntries(
Object.entries(obj).filter(([_, value]) => !Array.isArray(value) || value.length > 0)
)
)
: []
};
};
const convertWeaponSkin = (client: IWeaponSkinClient): IWeaponSkinDatabase => { const convertWeaponSkin = (client: IWeaponSkinClient): IWeaponSkinDatabase => {
const { ItemId, ...rest } = client; const { ItemId, ...rest } = client;
return { return {
@ -185,6 +203,11 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
replaceArray<IUpgradeDatabase>(db[key], client[key].map(convertUpgrade)); replaceArray<IUpgradeDatabase>(db[key], client[key].map(convertUpgrade));
} }
} }
for (const key of ["CrewShipWeapons", "CrewShipSalvagedWeapons"] as const) {
if (client[key] !== undefined) {
replaceArray<ICrewShipWeaponDatabase>(db[key], client[key].map(convertCrewShipWeapon));
}
}
for (const key of [ for (const key of [
"RawUpgrades", "RawUpgrades",
"MiscItems", "MiscItems",

View File

@ -30,9 +30,10 @@ export interface IInventoryDatabase
| "Ships" | "Ships"
| "WeaponSkins" | "WeaponSkins"
| "Upgrades" | "Upgrades"
| "CrewShipSalvagedWeaponSkins"
| "CrewShipWeapons" | "CrewShipWeapons"
| "CrewShipWeaponSkins" | "CrewShipWeaponSkins"
| "CrewShipSalvagedWeapons"
| "CrewShipSalvagedWeaponSkins"
| "AdultOperatorLoadOuts" | "AdultOperatorLoadOuts"
| "OperatorLoadOuts" | "OperatorLoadOuts"
| "KahlLoadOuts" | "KahlLoadOuts"
@ -59,9 +60,10 @@ export interface IInventoryDatabase
Ships: Types.ObjectId[]; Ships: Types.ObjectId[];
WeaponSkins: IWeaponSkinDatabase[]; WeaponSkins: IWeaponSkinDatabase[];
Upgrades: IUpgradeDatabase[]; Upgrades: IUpgradeDatabase[];
CrewShipSalvagedWeaponSkins: IUpgradeDatabase[];
CrewShipWeapons: ICrewShipWeaponDatabase[]; CrewShipWeapons: ICrewShipWeaponDatabase[];
CrewShipWeaponSkins: IUpgradeDatabase[]; CrewShipWeaponSkins: IUpgradeDatabase[];
CrewShipSalvagedWeapons: ICrewShipWeaponDatabase[];
CrewShipSalvagedWeaponSkins: IUpgradeDatabase[];
AdultOperatorLoadOuts: IOperatorConfigDatabase[]; AdultOperatorLoadOuts: IOperatorConfigDatabase[];
OperatorLoadOuts: IOperatorConfigDatabase[]; OperatorLoadOuts: IOperatorConfigDatabase[];
KahlLoadOuts: IOperatorConfigDatabase[]; KahlLoadOuts: IOperatorConfigDatabase[];
@ -297,10 +299,10 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
PersonalTechProjects: IPersonalTechProject[]; PersonalTechProjects: IPersonalTechProject[];
PlayerSkills: IPlayerSkills; PlayerSkills: IPlayerSkills;
CrewShipAmmo: ITypeCount[]; CrewShipAmmo: ITypeCount[];
CrewShipSalvagedWeaponSkins: IUpgradeClient[];
CrewShipWeapons: ICrewShipWeaponClient[]; CrewShipWeapons: ICrewShipWeaponClient[];
CrewShipSalvagedWeapons: IEquipmentClient[];
CrewShipWeaponSkins: IUpgradeClient[]; CrewShipWeaponSkins: IUpgradeClient[];
CrewShipSalvagedWeapons: ICrewShipWeaponClient[];
CrewShipSalvagedWeaponSkins: IUpgradeClient[];
TradeBannedUntil?: IMongoDate; TradeBannedUntil?: IMongoDate;
PlayedParkourTutorial: boolean; PlayedParkourTutorial: boolean;
SubscribedToEmailsPersonalized: number; SubscribedToEmailsPersonalized: number;
@ -537,16 +539,20 @@ export interface ICrewShipWeapon {
} }
// inventory.CrewShipWeapons // inventory.CrewShipWeapons
export interface ICrewShipWeaponClient {
ItemType: string;
ItemId: IOid;
}
export interface ICrewShipWeaponDatabase { export interface ICrewShipWeaponDatabase {
ItemType: string; ItemType: string;
Configs?: IItemConfig[];
UpgradeVer?: number;
UpgradeType?: string;
UpgradeFingerprint?: string;
IsNew?: boolean;
_id: Types.ObjectId; _id: Types.ObjectId;
} }
export interface ICrewShipWeaponClient extends Omit<ICrewShipWeaponDatabase, "_Id"> {
ItemId: IOid;
}
export interface ICrewShipPilotWeapon { export interface ICrewShipPilotWeapon {
PRIMARY_A: IEquipmentSelection; PRIMARY_A: IEquipmentSelection;
SECONDARY_A: IEquipmentSelection; SECONDARY_A: IEquipmentSelection;