feat: rewards for enemy caches & rathuum #384
@ -23,33 +23,46 @@ const getRewards = ({
 | 
			
		||||
        return { InventoryChanges: {}, MissionRewards: [] };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const rewardManifests = ExportRegions[RewardInfo.node]?.rewardManifests ?? [];
 | 
			
		||||
    if (rewardManifests.length == 0) {
 | 
			
		||||
        return { InventoryChanges: {}, MissionRewards: [] };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let rotations: number[] = [];
 | 
			
		||||
    if (RewardInfo.VaultsCracked) {
 | 
			
		||||
        // For Spy missions, e.g. 3 vaults cracked = A, B, C
 | 
			
		||||
        for (let i = 0; i != RewardInfo.VaultsCracked; ++i) {
 | 
			
		||||
            rotations.push(i);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        const rotationCount = RewardInfo.rewardQualifications?.length || 0;
 | 
			
		||||
        rotations = getRotations(rotationCount);
 | 
			
		||||
    }
 | 
			
		||||
    const drops: IReward[] = [];
 | 
			
		||||
    rewardManifests
 | 
			
		||||
        .map(name => ExportRewards[name])
 | 
			
		||||
        .forEach(table => {
 | 
			
		||||
            for (const rotation of rotations) {
 | 
			
		||||
                const rotationRewards = table[rotation];
 | 
			
		||||
                const drop = getRandomRewardByChance(rotationRewards);
 | 
			
		||||
    if (RewardInfo.node in ExportRegions) {
 | 
			
		||||
        const region = ExportRegions[RewardInfo.node];
 | 
			
		||||
        const rewardManifests = region.rewardManifests ?? [];
 | 
			
		||||
        if (rewardManifests.length == 0) {
 | 
			
		||||
            return { InventoryChanges: {}, MissionRewards: [] };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let rotations: number[] = [];
 | 
			
		||||
        if (RewardInfo.VaultsCracked) {
 | 
			
		||||
            // For Spy missions, e.g. 3 vaults cracked = A, B, C
 | 
			
		||||
            for (let i = 0; i != RewardInfo.VaultsCracked; ++i) {
 | 
			
		||||
                rotations.push(i);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            const rotationCount = RewardInfo.rewardQualifications?.length || 0;
 | 
			
		||||
            rotations = getRotations(rotationCount);
 | 
			
		||||
        }
 | 
			
		||||
        rewardManifests
 | 
			
		||||
            .map(name => ExportRewards[name])
 | 
			
		||||
            .forEach(table => {
 | 
			
		||||
                for (const rotation of rotations) {
 | 
			
		||||
                    const rotationRewards = table[rotation];
 | 
			
		||||
                    const drop = getRandomRewardByChance(rotationRewards);
 | 
			
		||||
                    if (drop) {
 | 
			
		||||
                        drops.push(drop);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        if (region.cacheRewardManifest && RewardInfo.EnemyCachesFound) {
 | 
			
		||||
            const deck = ExportRewards[region.cacheRewardManifest];
 | 
			
		||||
            for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
 | 
			
		||||
                const drop = getRandomRewardByChance(deck[rotation]);
 | 
			
		||||
                if (drop) {
 | 
			
		||||
                    drops.push(drop);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    logger.debug("Mission rewards:", drops);
 | 
			
		||||
    return formatRewardsToInventoryType(drops);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user