返回提交历史
Modified
src/services/missionInventoryUpdateService.ts
+15
-11
XFEstudio/XFESpaceNinjaServer
fix: respect VaultsCracked when rolling droptable for level key rewards (#1639)
Fixes #1638 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1639 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
a10c3b06
代码差异
1 个文件
+15
-11
@@ -55,7 +55,7 @@ import { Loadout } from "../models/inventoryModels/loadoutModel";
55
55
import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes";
56
56
import { getWorldState } from "./worldStateService";
57
57
58
const getRotations = (rewardInfo: IRewardInfo, tierOverride: number | undefined): number[] => {
58
const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
59
59
// For Spy missions, e.g. 3 vaults cracked = A, B, C
60
60
if (rewardInfo.VaultsCracked) {
61
61
const rotations: number[] = [];
@@ -587,7 +587,7 @@ export const addMissionRewards = async (
587
587
const fixedLevelRewards = getLevelKeyRewards(levelKeyName);
588
588
//logger.debug(`fixedLevelRewards ${fixedLevelRewards}`);
589
589
if (fixedLevelRewards.levelKeyRewards) {
590
addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards);
590
addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, MissionRewards, rewardInfo);
591
591
}
592
592
if (fixedLevelRewards.levelKeyRewards2) {
593
593
for (const reward of fixedLevelRewards.levelKeyRewards2) {
@@ -627,7 +627,7 @@ export const addMissionRewards = async (
627
627
}
628
628
629
629
if (node.missionReward) {
630
missionCompletionCredits += addFixedLevelRewards(node.missionReward, inventory, MissionRewards);
630
missionCompletionCredits += addFixedLevelRewards(node.missionReward, inventory, MissionRewards, rewardInfo);
631
631
}
632
632
}
633
633
@@ -870,7 +870,8 @@ export const addCredits = (
870
870
export const addFixedLevelRewards = (
871
871
rewards: IMissionRewardExternal,
872
872
inventory: TInventoryDatabaseDocument,
873
MissionRewards: IMissionReward[]
873
MissionRewards: IMissionReward[],
874
rewardInfo?: IRewardInfo
874
875
): number => {
875
876
let missionBonusCredits = 0;
876
877
if (rewards.credits) {
@@ -900,13 +901,16 @@ export const addFixedLevelRewards = (
900
901
}
901
902
if (rewards.droptable) {
902
903
if (rewards.droptable in ExportRewards) {
903
logger.debug(`rolling ${rewards.droptable} for level key rewards`);
904
const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][0]);
905
if (reward) {
906
MissionRewards.push({
907
StoreItem: reward.type,
908
ItemCount: reward.itemCount
909
});
904
const rotations: number[] = rewardInfo ? getRotations(rewardInfo) : [0];
905
logger.debug(`rolling ${rewards.droptable} for level key rewards`, { rotations });
906
for (const tier of rotations) {
907
const reward = getRandomRewardByChance(ExportRewards[rewards.droptable][tier]);
908
if (reward) {
909
MissionRewards.push({
910
StoreItem: reward.type,
911
ItemCount: reward.itemCount
912
});
913
}
910
914
}
911
915
} else {
912
916
logger.error(`unknown droptable ${rewards.droptable}`);