XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

1 个文件 +15 -11
Modified src/services/missionInventoryUpdateService.ts +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}`);