From 1c078d3a7aa67638c464085fe2cbc8bf2c358375 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 6 May 2025 15:08:11 +0200 Subject: [PATCH] fix: handle "skip prologue" to visit orbiter in U14 --- src/controllers/api/inventoryController.ts | 10 ++++++++++ src/routes/api.ts | 1 + src/types/inventoryTypes/inventoryTypes.ts | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 8febdcf7..2a6a3ef0 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -25,6 +25,9 @@ import { logger } from "@/src/utils/logger"; import { catBreadHash } from "@/src/helpers/stringHelpers"; import { Types } from "mongoose"; import { isNemesisCompatibleWithVersion } from "@/src/helpers/nemesisHelpers"; +import { version_compare } from "@/src/services/worldStateService"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { IPersonalRoomsClient } from "@/src/types/personalRoomsTypes"; export const inventoryController: RequestHandler = async (request, response) => { const account = await getAccountForRequest(request); @@ -312,6 +315,13 @@ export const getInventoryResponse = async ( inventoryResponse.Nemesis = undefined; } + if (buildLabel && version_compare(buildLabel, "2014.10.29.18.19") < 0) { + // U14 + const personalRoomsDb = await getPersonalRooms(inventory.accountOwnerId.toString()); + const personalRooms = personalRoomsDb.toJSON(); + inventoryResponse.Ship = personalRooms.Ship; + } + return inventoryResponse; }; diff --git a/src/routes/api.ts b/src/routes/api.ts index 56602f4a..7800a97c 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -225,6 +225,7 @@ apiRouter.post("/changeDojoRoot.php", changeDojoRootController); apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController); apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController); +apiRouter.post("/commitStoryModeDecision.php", (_req, res) => { res.end(); }); // U14 apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController); apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationPostController); apiRouter.post("/contributeGuildClass.php", contributeGuildClassController); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 92b6973e..dafb50bf 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -11,6 +11,7 @@ import { IOperatorConfigDatabase } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IFingerprintStat, RivenFingerprint } from "@/src/helpers/rivenHelper"; +import { IOrbiter } from "../personalRoomsTypes"; export type InventoryDatabaseEquipment = { [_ in TEquipmentKey]: IEquipmentDatabase[]; @@ -373,6 +374,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu BrandedSuits?: IOid[]; LockedWeaponGroup?: ILockedWeaponGroupClient; HubNpcCustomizations?: IHubNpcCustomization[]; + Ship?: IOrbiter; // U14 (response only) } export interface IAffiliation {