fix: respect VaultsCracked when rolling droptable for level key rewards #1639

Merged
Sainan merged 3 commits from xoris-fix into main 2025-04-15 14:58:15 -07:00

View File

@ -55,7 +55,7 @@ import { Loadout } from "../models/inventoryModels/loadoutModel";
import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes"; import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes";
import { getWorldState } from "./worldStateService"; import { getWorldState } from "./worldStateService";
const getRotations = (rewardInfo: IRewardInfo, tierOverride: number | undefined): number[] => { const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
// For Spy missions, e.g. 3 vaults cracked = A, B, C // For Spy missions, e.g. 3 vaults cracked = A, B, C
if (rewardInfo.VaultsCracked) { if (rewardInfo.VaultsCracked) {
const rotations: number[] = []; const rotations: number[] = [];
@ -587,7 +587,7 @@ export const addMissionRewards = async (
const fixedLevelRewards = getLevelKeyRewards(levelKeyName); const fixedLevelRewards = getLevelKeyRewards(levelKeyName);
//logger.debug(`fixedLevelRewards ${fixedLevelRewards}`); //logger.debug(`fixedLevelRewards ${fixedLevelRewards}`);
if (fixedLevelRewards.levelKeyRewards) { if (fixedLevelRewards.levelKeyRewards) {
addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards); addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards, rewardInfo);
} }
if (fixedLevelRewards.levelKeyRewards2) { if (fixedLevelRewards.levelKeyRewards2) {
for (const reward of fixedLevelRewards.levelKeyRewards2) { for (const reward of fixedLevelRewards.levelKeyRewards2) {
@ -627,7 +627,7 @@ export const addMissionRewards = async (
} }
if (node.missionReward) { 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 = ( export const addFixedLevelRewards = (
rewards: IMissionRewardExternal, rewards: IMissionRewardExternal,
inventory: TInventoryDatabaseDocument, inventory: TInventoryDatabaseDocument,
MissionRewards: IMissionReward[] MissionRewards: IMissionReward[],
rewardInfo?: IRewardInfo
): number => { ): number => {
let missionBonusCredits = 0; let missionBonusCredits = 0;
if (rewards.credits) { if (rewards.credits) {
@ -900,13 +901,16 @@ export const addFixedLevelRewards = (
} }
if (rewards.droptable) { if (rewards.droptable) {
if (rewards.droptable in ExportRewards) { if (rewards.droptable in ExportRewards) {
logger.debug(`rolling ${rewards.droptable} for level key rewards`); const rotations: number[] = rewardInfo ? getRotations(rewardInfo) : [0];
const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][0]); logger.debug(`rolling ${rewards.droptable} for level key rewards`, { rotations });
if (reward) { for (const tier of rotations) {
MissionRewards.push({ const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][tier]);
StoreItem: reward.type, if (reward) {
ItemCount: reward.itemCount MissionRewards.push({
}); StoreItem: reward.type,
ItemCount: reward.itemCount
});
}
} }
} else { } else {
logger.error(`unknown droptable ${rewards.droptable}`); logger.error(`unknown droptable ${rewards.droptable}`);