From a5be29159fa76fafdd054b3b57c48d817406687b Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 12 Sep 2025 00:40:48 -0700 Subject: [PATCH] fix: handle lab conquest keeping RewardInfo from previous missions (#2771) Closes #2768 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2771 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/missionInventoryUpdateService.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index c9fa0241f..5fa0a508a 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -92,11 +92,6 @@ import { handleGuildGoalProgress } from "./guildService.ts"; import { importLoadOutConfig } from "./importService.ts"; const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => { - // Disruption missions just tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599) - if (rewardInfo.rewardTierOverrides) { - return rewardInfo.rewardTierOverrides; - } - // For Spy missions, e.g. 3 vaults cracked = A, B, C if (rewardInfo.VaultsCracked) { const rotations: number[] = []; @@ -109,16 +104,26 @@ const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] const region = ExportRegions[rewardInfo.node] as IRegion | undefined; const missionType: TMissionType | undefined = region?.missionType; - if (missionType == "MT_RESCUE" && rewardInfo.rewardTier) { + // Disruption uses 'rewardTierOverrides' to tell us (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2599) + // Note that this may stick in lab conquest so we need to filter by mission type (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2768) + if (missionType == "MT_ARTIFACT") { + return rewardInfo.rewardTierOverrides ?? []; + } + + if (missionType == "MT_RESCUE" && rewardInfo.rewardTier !== undefined) { return [rewardInfo.rewardTier]; } - // 'rewardQualifications' is unreliable for non-endless railjack missions (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2586, https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2612) + // 'rewardQualifications' may stick from previous missions for non-endless missions done after them + // - via railjack (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2586, https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2612) + // - via lab conquest (https://onlyg.it/OpenWF/SpaceNinjaServer/issues/2768) switch (region?.missionName) { case "/Lotus/Language/Missions/MissionName_Railjack": case "/Lotus/Language/Missions/MissionName_RailjackVolatile": case "/Lotus/Language/Missions/MissionName_RailjackExterminate": case "/Lotus/Language/Missions/MissionName_RailjackAssassinate": + case "/Lotus/Language/Missions/MissionName_Assassination": + case "/Lotus/Language/Missions/MissionName_Exterminate": return [0]; }