From 005690daa4d065fccd8d7a8e758c93382a1dc184 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 6 May 2025 07:37:30 -0700 Subject: [PATCH] fix: handle "skip prologue" to visit orbiter in U14 (#1999) Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1999 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/controllers/api/inventoryController.ts | 9 +++++++++ src/routes/api.ts | 1 + src/types/inventoryTypes/inventoryTypes.ts | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 8febdcf7..10d1364a 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,12 @@ export const getInventoryResponse = async ( inventoryResponse.Nemesis = undefined; } + if (buildLabel && version_compare(buildLabel, "2018.02.22.14.34") < 0) { + 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..787164d9 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 (maybe wanna actually unlock the ship features?) 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..23b8ec38 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; // U22 and below, response only } export interface IAffiliation {