fix: respect VaultsCracked when rolling droptable for level key rewards #1639
@ -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,14 +901,17 @@ 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 });
|
||||||
|
for (const tier of rotations) {
|
||||||
|
const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][tier]);
|
||||||
if (reward) {
|
if (reward) {
|
||||||
MissionRewards.push({
|
MissionRewards.push({
|
||||||
StoreItem: reward.type,
|
StoreItem: reward.type,
|
||||||
ItemCount: reward.itemCount
|
ItemCount: reward.itemCount
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.error(`unknown droptable ${rewards.droptable}`);
|
logger.error(`unknown droptable ${rewards.droptable}`);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user