fix: acquisition of railjack (#629)
This commit is contained in:
parent
7dcb1f4fa4
commit
45cb9c6da0
@ -38,7 +38,14 @@ import {
|
||||
IPeriodicMissionCompletionResponse,
|
||||
ILoreFragmentScan,
|
||||
IEvolutionProgress,
|
||||
IEndlessXpProgress
|
||||
IEndlessXpProgress,
|
||||
ICrewShipPortGuns,
|
||||
ICrewShipCustomization,
|
||||
ICrewShipWeapon,
|
||||
ICrewShipMembers,
|
||||
ICrewShip,
|
||||
ICrewShipPilotWeapon,
|
||||
IShipExterior
|
||||
} from "../../types/inventoryTypes/inventoryTypes";
|
||||
import { IOid } from "../../types/commonTypes";
|
||||
import {
|
||||
@ -52,6 +59,7 @@ import {
|
||||
IArchonCrystalUpgrade
|
||||
} from "@/src/types/inventoryTypes/commonInventoryTypes";
|
||||
import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
|
||||
import { EquipmentSelectionSchema } from "./loadoutModel";
|
||||
|
||||
const typeCountSchema = new Schema<ITypeCount>({ ItemType: String, ItemCount: Number }, { _id: false });
|
||||
|
||||
@ -590,6 +598,85 @@ const endlessXpProgressSchema = new Schema<IEndlessXpProgress>(
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const crewShipPilotWeaponSchema = new Schema<ICrewShipPilotWeapon>(
|
||||
{
|
||||
PRIMARY_A: EquipmentSelectionSchema,
|
||||
SECONDARY_A: EquipmentSelectionSchema
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const crewShipPortGunsSchema = new Schema<ICrewShipPortGuns>(
|
||||
{
|
||||
PRIMARY_A: EquipmentSelectionSchema
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const crewShipWeaponSchema = new Schema<ICrewShipWeapon>(
|
||||
{
|
||||
PILOT: crewShipPilotWeaponSchema,
|
||||
PORT_GUNS: crewShipPortGunsSchema
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const shipExteriorSchema = new Schema<IShipExterior>(
|
||||
{
|
||||
SkinFlavourItem: String,
|
||||
Colors: colorSchema,
|
||||
ShipAttachments: { HOOD_ORNAMENT: String }
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const crewShipCustomizationSchema = new Schema<ICrewShipCustomization>(
|
||||
{
|
||||
CrewshipInterior: shipExteriorSchema
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const crewShipMembersSchema = new Schema<ICrewShipMembers>(
|
||||
{
|
||||
SLOT_A: Schema.Types.ObjectId,
|
||||
SLOT_B: Schema.Types.ObjectId,
|
||||
SLOT_C: Schema.Types.ObjectId
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
crewShipMembersSchema.set("toJSON", {
|
||||
virtuals: true,
|
||||
transform(_doc, ret) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
ret.SLOT_A = { ItemId: toOid(ret.SLOT_A) };
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
ret.SLOT_B = { ItemId: toOid(ret.SLOT_B) };
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
ret.SLOT_C = { ItemId: toOid(ret.SLOT_C) };
|
||||
}
|
||||
});
|
||||
|
||||
const crewShipSchema = new Schema<ICrewShip>({
|
||||
ItemType: { type: String, required: true },
|
||||
Configs: { type: [ItemConfigSchema], default: [] },
|
||||
Weapon: { type: crewShipWeaponSchema, default: undefined },
|
||||
Customization: { type: crewShipCustomizationSchema, default: undefined },
|
||||
ItemName: { type: String, default: "" },
|
||||
RailjackImage: { type: FlavourItemSchema, default: undefined },
|
||||
CrewMembers: { type: crewShipMembersSchema, default: undefined }
|
||||
});
|
||||
crewShipSchema.virtual("ItemId").get(function () {
|
||||
return { $oid: this._id.toString() };
|
||||
});
|
||||
crewShipSchema.set("toJSON", {
|
||||
virtuals: true,
|
||||
transform(_doc, ret, _options) {
|
||||
delete ret._id;
|
||||
delete ret.__v;
|
||||
}
|
||||
});
|
||||
|
||||
const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
{
|
||||
accountOwnerId: Schema.Types.ObjectId,
|
||||
@ -741,7 +828,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
CrewShipRawSalvage: [Schema.Types.Mixed],
|
||||
|
||||
//Default RailJack
|
||||
CrewShips: [Schema.Types.Mixed],
|
||||
CrewShips: [crewShipSchema],
|
||||
CrewShipAmmo: [typeCountSchema],
|
||||
CrewShipWeapons: [Schema.Types.Mixed],
|
||||
CrewShipWeaponSkins: [Schema.Types.Mixed],
|
||||
@ -1005,6 +1092,8 @@ type InventoryDocumentProps = {
|
||||
Hoverboards: Types.DocumentArray<IEquipmentDatabase>;
|
||||
MoaPets: Types.DocumentArray<IEquipmentDatabase>;
|
||||
WeaponSkins: Types.DocumentArray<IWeaponSkinDatabase>;
|
||||
CrewShips: Types.DocumentArray<ICrewShip>;
|
||||
CrewShipHarnesses: Types.DocumentArray<IEquipmentDatabase>;
|
||||
};
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||
|
@ -13,7 +13,7 @@ const oidSchema = new Schema<IOid>(
|
||||
);
|
||||
|
||||
//create a mongoose schema based on interface M
|
||||
const EquipmentSelectionSchema = new Schema<IEquipmentSelection>(
|
||||
export const EquipmentSelectionSchema = new Schema<IEquipmentSelection>(
|
||||
{
|
||||
ItemId: oidSchema,
|
||||
mod: Number,
|
||||
|
@ -145,6 +145,12 @@ export const addItem = async (
|
||||
]
|
||||
}
|
||||
};
|
||||
} else if (ExportResources[typeName].productCategory == "CrewShips") {
|
||||
return {
|
||||
InventoryChanges: {
|
||||
CrewShips: [await addCrewShip(typeName, accountId)]
|
||||
}
|
||||
};
|
||||
} else {
|
||||
const miscItemChanges = [
|
||||
{
|
||||
@ -597,6 +603,13 @@ export const addSkin = async (typeName: string, accountId: string): Promise<IWea
|
||||
return changedInventory.WeaponSkins[index].toJSON() as object as IWeaponSkinClient;
|
||||
};
|
||||
|
||||
const addCrewShip = async (typeName: string, accountId: string) => {
|
||||
const inventory = await getInventory(accountId);
|
||||
const index = inventory.CrewShips.push({ ItemType: typeName }) - 1;
|
||||
const changedInventory = await inventory.save();
|
||||
return changedInventory.CrewShips[index].toJSON();
|
||||
};
|
||||
|
||||
const addGearExpByCategory = (
|
||||
inventory: IInventoryDatabaseDocument,
|
||||
gearArray: IEquipmentClient[] | undefined,
|
||||
|
@ -420,28 +420,19 @@ export interface ICrewShipSalvagedWeaponSkin {
|
||||
_id?: Types.ObjectId;
|
||||
}
|
||||
|
||||
export interface ICrewShipWeapon {
|
||||
ItemType: string;
|
||||
UpgradeType?: string;
|
||||
UpgradeFingerprint?: string;
|
||||
Configs?: IItemConfig[];
|
||||
UpgradeVer?: number;
|
||||
ItemId: IOid;
|
||||
}
|
||||
|
||||
export interface ICrewShip {
|
||||
ItemType: string;
|
||||
Configs: IItemConfig[];
|
||||
Weapon: ICrewshipWeapon;
|
||||
Customization: ICustomization;
|
||||
Weapon?: ICrewShipWeapon;
|
||||
Customization?: ICrewShipCustomization;
|
||||
ItemName: string;
|
||||
RailjackImage: IFlavourItem;
|
||||
CrewMembers: ICrewMembers;
|
||||
RailjackImage?: IFlavourItem;
|
||||
CrewMembers?: ICrewShipMembers;
|
||||
ItemId: IOid;
|
||||
_id: Types.ObjectId;
|
||||
}
|
||||
|
||||
export interface ICrewMembers {
|
||||
export interface ICrewShipMembers {
|
||||
SLOT_A: ISlot;
|
||||
SLOT_B: ISlot;
|
||||
SLOT_C: ISlot;
|
||||
@ -451,7 +442,7 @@ export interface ISlot {
|
||||
ItemId: IOid;
|
||||
}
|
||||
|
||||
export interface ICustomization {
|
||||
export interface ICrewShipCustomization {
|
||||
CrewshipInterior: IShipExterior;
|
||||
}
|
||||
|
||||
@ -462,7 +453,7 @@ export interface IShipExterior {
|
||||
}
|
||||
|
||||
export interface IShipAttachments {
|
||||
HOOD_ORNAMENT: string; //TODO: Others are probably possible
|
||||
HOOD_ORNAMENT: string;
|
||||
}
|
||||
|
||||
export interface IFlavourItem {
|
||||
@ -474,17 +465,18 @@ export interface IMiscItem {
|
||||
ItemType: string;
|
||||
}
|
||||
|
||||
export interface ICrewshipWeapon {
|
||||
PILOT: IPilot;
|
||||
PORT_GUNS: IPortGuns;
|
||||
export interface ICrewShipWeapon {
|
||||
PILOT: ICrewShipPilotWeapon;
|
||||
PORT_GUNS: ICrewShipPortGuns;
|
||||
}
|
||||
|
||||
export interface IPortGuns {
|
||||
export interface ICrewShipPilotWeapon {
|
||||
PRIMARY_A: IEquipmentSelection;
|
||||
SECONDARY_A: IEquipmentSelection;
|
||||
}
|
||||
|
||||
export interface IPilot extends IPortGuns {
|
||||
SECONDARY_A: IEquipmentSelection;
|
||||
export interface ICrewShipPortGuns {
|
||||
PRIMARY_A: IEquipmentSelection;
|
||||
}
|
||||
|
||||
export interface IDiscoveredMarker {
|
||||
|
Loading…
x
Reference in New Issue
Block a user