From 5d81e03e1a4a59b8bb5e499d96b272618a91d3d0 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 15 Apr 2025 00:13:57 +0200 Subject: [PATCH] fix: respect VaultsCracked when rolling droptable for level key rewards --- src/services/missionInventoryUpdateService.ts | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 87a17190..95b4e70d 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -587,7 +587,7 @@ export const addMissionRewards = async ( const fixedLevelRewards = getLevelKeyRewards(levelKeyName); //logger.debug(`fixedLevelRewards ${fixedLevelRewards}`); if (fixedLevelRewards.levelKeyRewards) { - addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards); + addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards, rewardInfo); } if (fixedLevelRewards.levelKeyRewards2) { for (const reward of fixedLevelRewards.levelKeyRewards2) { @@ -627,7 +627,7 @@ export const addMissionRewards = async ( } if (node.missionReward) { - missionCompletionCredits += addFixedLevelRewards(node.missionReward, inventory, MissionRewards); + missionCompletionCredits += addFixedLevelRewards(node.missionReward, inventory, MissionRewards, rewardInfo); } } @@ -870,7 +870,8 @@ export const addCredits = ( export const addFixedLevelRewards = ( rewards: IMissionRewardExternal, inventory: TInventoryDatabaseDocument, - MissionRewards: IMissionReward[] + MissionRewards: IMissionReward[], + rewardInfo: IRewardInfo ): number => { let missionBonusCredits = 0; if (rewards.credits) { @@ -900,13 +901,24 @@ export const addFixedLevelRewards = ( } if (rewards.droptable) { if (rewards.droptable in ExportRewards) { - logger.debug(`rolling ${rewards.droptable} for level key rewards`); - const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][0]); - if (reward) { - MissionRewards.push({ - StoreItem: reward.type, - ItemCount: reward.itemCount - }); + const rotations: number[] = []; + // This makes it so that /Lotus/Types/Keys/ProteaQuest/ProteaQuestMissionFour gives all 3 Xoris parts + if (rewardInfo.VaultsCracked) { + for (let i = 0; i != rewardInfo.VaultsCracked; ++i) { + rotations.push(i); + } + } else { + rotations.push(0); + } + logger.debug(`rolling ${rewards.droptable} for level key rewards`, { rotations }); + for (const tier of rotations) { + const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][tier]); + if (reward) { + MissionRewards.push({ + StoreItem: reward.type, + ItemCount: reward.itemCount + }); + } } } else { logger.error(`unknown droptable ${rewards.droptable}`);