From 3165d9f459f586dcb23a778bc897e03d71b06e50 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 15 Apr 2025 10:47:38 -0700 Subject: [PATCH] fix: respect rewardTier for rescue missions (#1650) Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1650 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/services/missionInventoryUpdateService.ts | 25 +++++++++++++------ src/types/requestTypes.ts | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 2a9dda9a..87a17190 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -55,7 +55,22 @@ import { Loadout } from "../models/inventoryModels/loadoutModel"; import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes"; import { getWorldState } from "./worldStateService"; -const getRotations = (rotationCount: number, tierOverride: number | undefined): number[] => { +const getRotations = (rewardInfo: IRewardInfo, tierOverride: number | undefined): number[] => { + // For Spy missions, e.g. 3 vaults cracked = A, B, C + if (rewardInfo.VaultsCracked) { + const rotations: number[] = []; + for (let i = 0; i != rewardInfo.VaultsCracked; ++i) { + rotations.push(i); + } + return rotations; + } + + // For Rescue missions + if (rewardInfo.rewardTier) { + return [rewardInfo.rewardTier]; + } + + const rotationCount = rewardInfo.rewardQualifications?.length || 0; if (rotationCount === 0) return [0]; const rotationPattern = @@ -1062,14 +1077,8 @@ function getRandomMissionDrops(RewardInfo: IRewardInfo, tierOverride: number | u } else { logger.error(`Unknown syndicate or tier: ${RewardInfo.challengeMissionId}`); } - } else if (RewardInfo.VaultsCracked) { - // For Spy missions, e.g. 3 vaults cracked = A, B, C - for (let i = 0; i != RewardInfo.VaultsCracked; ++i) { - rotations.push(i); - } } else { - const rotationCount = RewardInfo.rewardQualifications?.length || 0; - rotations = getRotations(rotationCount, tierOverride); + rotations = getRotations(RewardInfo, tierOverride); } if (rewardManifests.length != 0) { logger.debug(`generating random mission rewards`, { rewardManifests, rotations }); diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index fff164a8..77e7f322 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -130,7 +130,7 @@ export type IMissionInventoryUpdateRequest = { export interface IRewardInfo { node: string; VaultsCracked?: number; // for Spy missions - rewardTier?: number; + rewardTier?: number; // for Rescue missions nightmareMode?: boolean; useVaultManifest?: boolean; EnemyCachesFound?: number;