forked from OpenWF/SpaceNinjaServer
		
	fix: respect VaultsCracked when rolling droptable for level key rewards (#1639)
Fixes #1638 Reviewed-on: OpenWF/SpaceNinjaServer#1639 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									3165d9f459
								
							
						
					
					
						commit
						a10c3b061a
					
				@ -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}`);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user