fix: correctly add kubrow eggs to inventory (#875)

This commit is contained in:
Sainan 2025-01-31 17:02:46 +01:00 committed by GitHub
parent 9de87f0959
commit 3a7cb5d9b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 68 additions and 20 deletions

View File

@ -58,7 +58,9 @@ import {
equipmentKeys, equipmentKeys,
IKubrowPetDetailsDatabase, IKubrowPetDetailsDatabase,
ITraits, ITraits,
IKubrowPetDetailsClient IKubrowPetDetailsClient,
IKubrowPetEggDatabase,
IKubrowPetEggClient
} from "../../types/inventoryTypes/inventoryTypes"; } from "../../types/inventoryTypes/inventoryTypes";
import { IOid } from "../../types/commonTypes"; import { IOid } from "../../types/commonTypes";
import { import {
@ -378,6 +380,26 @@ StepSequencersSchema.set("toJSON", {
} }
}); });
const kubrowPetEggSchema = new Schema<IKubrowPetEggDatabase>(
{
ItemType: String
},
{ id: false }
);
kubrowPetEggSchema.set("toJSON", {
virtuals: true,
transform(_document, obj) {
const client = obj as IKubrowPetEggClient;
const db = obj as IKubrowPetEggDatabase;
client.ExpirationDate = { $date: { $numberLong: "2000000000000" } };
client.ItemId = toOid(db._id);
delete obj._id;
delete obj.__v;
}
});
const affiliationsSchema = new Schema<IAffiliation>( const affiliationsSchema = new Schema<IAffiliation>(
{ {
Initiated: Boolean, Initiated: Boolean,
@ -910,7 +932,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
//The Mandachord(Octavia) is a step sequencer //The Mandachord(Octavia) is a step sequencer
StepSequencers: [StepSequencersSchema], StepSequencers: [StepSequencersSchema],
KubrowPetEggs: [Schema.Types.Mixed], KubrowPetEggs: [kubrowPetEggSchema],
//Prints Cat(3 Prints)\Kubrow(2 Prints) Pets //Prints Cat(3 Prints)\Kubrow(2 Prints) Pets
KubrowPetPrints: [Schema.Types.Mixed], KubrowPetPrints: [Schema.Types.Mixed],

View File

@ -20,7 +20,9 @@ import {
TEquipmentKey, TEquipmentKey,
IFusionTreasure, IFusionTreasure,
IDailyAffiliations, IDailyAffiliations,
IInventoryDatabase IInventoryDatabase,
IKubrowPetEggDatabase,
IKubrowPetEggClient
} from "@/src/types/inventoryTypes/inventoryTypes"; } from "@/src/types/inventoryTypes/inventoryTypes";
import { IGenericUpdate } from "../types/genericUpdate"; import { IGenericUpdate } from "../types/genericUpdate";
import { import {
@ -46,6 +48,7 @@ import {
import { createShip } from "./shipService"; import { createShip } from "./shipService";
import { creditBundles, fusionBundles } from "@/src/services/missionInventoryUpdateService"; import { creditBundles, fusionBundles } from "@/src/services/missionInventoryUpdateService";
import { IGiveKeyChainTriggeredItemsRequest } from "@/src/controllers/api/giveKeyChainTriggeredItemsController"; import { IGiveKeyChainTriggeredItemsRequest } from "@/src/controllers/api/giveKeyChainTriggeredItemsController";
import { toOid } from "../helpers/inventoryHelpers";
export const createInventory = async ( export const createInventory = async (
accountOwnerId: Types.ObjectId, accountOwnerId: Types.ObjectId,
@ -209,7 +212,20 @@ export const addItem = async (
}; };
} }
if (typeName in ExportResources) { if (typeName in ExportResources) {
if (ExportResources[typeName].productCategory == "Ships") { if (ExportResources[typeName].productCategory == "MiscItems") {
const miscItemChanges = [
{
ItemType: typeName,
ItemCount: quantity
} satisfies IMiscItem
];
addMiscItems(inventory, miscItemChanges);
return {
InventoryChanges: {
MiscItems: miscItemChanges
}
};
} else if (ExportResources[typeName].productCategory == "Ships") {
const oid = await createShip(inventory.accountOwnerId, typeName); const oid = await createShip(inventory.accountOwnerId, typeName);
inventory.Ships.push(oid); inventory.Ships.push(oid);
return { return {
@ -238,17 +254,24 @@ export const addItem = async (
ShipDecorations: changes ShipDecorations: changes
} }
}; };
} else { } else if (ExportResources[typeName].productCategory == "KubrowPetEggs") {
const miscItemChanges = [ const changes: IKubrowPetEggClient[] = [];
{ for (let i = 0; i != quantity; ++i) {
ItemType: typeName, const egg: IKubrowPetEggDatabase = {
ItemCount: quantity ItemType: "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg",
} satisfies IMiscItem _id: new Types.ObjectId()
]; };
addMiscItems(inventory, miscItemChanges); inventory.KubrowPetEggs ??= [];
inventory.KubrowPetEggs.push(egg);
changes.push({
ItemType: egg.ItemType,
ExpirationDate: { $date: { $numberLong: "2000000000000" } },
ItemId: toOid(egg._id)
});
}
return { return {
InventoryChanges: { InventoryChanges: {
MiscItems: miscItemChanges KubrowPetEggs: changes
} }
}; };
} }

View File

@ -33,6 +33,7 @@ export interface IInventoryDatabase
| "KahlLoadOuts" | "KahlLoadOuts"
| "InfestedFoundry" | "InfestedFoundry"
| "DialogueHistory" | "DialogueHistory"
| "KubrowPetEggs"
| TEquipmentKey | TEquipmentKey
> { > {
accountOwnerId: Types.ObjectId; accountOwnerId: Types.ObjectId;
@ -54,6 +55,7 @@ export interface IInventoryDatabase
KahlLoadOuts: IOperatorConfigDatabase[]; KahlLoadOuts: IOperatorConfigDatabase[];
InfestedFoundry?: IInfestedFoundryDatabase; InfestedFoundry?: IInfestedFoundryDatabase;
DialogueHistory?: IDialogueHistoryDatabase; DialogueHistory?: IDialogueHistoryDatabase;
KubrowPetEggs?: IKubrowPetEggDatabase[];
Suits: IEquipmentDatabase[]; Suits: IEquipmentDatabase[];
LongGuns: IEquipmentDatabase[]; LongGuns: IEquipmentDatabase[];
@ -271,7 +273,7 @@ export interface IInventoryClient extends IDailyAffiliations {
TauntHistory?: ITaunt[]; TauntHistory?: ITaunt[];
StoryModeChoice: string; StoryModeChoice: string;
PeriodicMissionCompletions: IPeriodicMissionCompletionDatabase[]; PeriodicMissionCompletions: IPeriodicMissionCompletionDatabase[];
KubrowPetEggs: IKubrowPetEgg[]; KubrowPetEggs?: IKubrowPetEggClient[];
LoreFragmentScans: ILoreFragmentScan[]; LoreFragmentScans: ILoreFragmentScan[];
EquippedEmotes: string[]; EquippedEmotes: string[];
PendingTrades: IPendingTrade[]; PendingTrades: IPendingTrade[];
@ -613,21 +615,22 @@ export interface IInvasionChainProgress {
count: number; count: number;
} }
export interface IKubrowPetEgg { export interface IKubrowPetEggClient {
ItemType: KubrowPetEggItemType; ItemType: string;
ExpirationDate: IMongoDate; ExpirationDate: IMongoDate; // seems to be set to 7 days ahead @ 0 UTC
ItemId: IOid; ItemId: IOid;
} }
export enum KubrowPetEggItemType { export interface IKubrowPetEggDatabase {
LotusTypesGameKubrowPetEggsKubrowEgg = "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg" ItemType: string;
_id: Types.ObjectId;
} }
export interface IKubrowPetPrint { export interface IKubrowPetPrint {
ItemType: KubrowPetPrintItemType; ItemType: KubrowPetPrintItemType;
Name: string; Name: string;
IsMale: boolean; IsMale: boolean;
Size: number; Size: number; // seems to be 0.7 to 1.0
DominantTraits: ITraits; DominantTraits: ITraits;
RecessiveTraits: ITraits; RecessiveTraits: ITraits;
ItemId: IOid; ItemId: IOid;