feat: rewards for enemy caches & rathuum (#384)
This commit is contained in:
		
							parent
							
								
									8aae246b48
								
							
						
					
					
						commit
						f106f6a1d7
					
				
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -12,7 +12,7 @@
 | 
				
			|||||||
        "copyfiles": "^2.4.1",
 | 
					        "copyfiles": "^2.4.1",
 | 
				
			||||||
        "express": "^5.0.0-beta.3",
 | 
					        "express": "^5.0.0-beta.3",
 | 
				
			||||||
        "mongoose": "^8.1.1",
 | 
					        "mongoose": "^8.1.1",
 | 
				
			||||||
        "warframe-public-export-plus": "^0.3.0",
 | 
					        "warframe-public-export-plus": "^0.3.2",
 | 
				
			||||||
        "warframe-riven-info": "^0.1.0",
 | 
					        "warframe-riven-info": "^0.1.0",
 | 
				
			||||||
        "winston": "^3.11.0",
 | 
					        "winston": "^3.11.0",
 | 
				
			||||||
        "winston-daily-rotate-file": "^4.7.1"
 | 
					        "winston-daily-rotate-file": "^4.7.1"
 | 
				
			||||||
@ -3669,9 +3669,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-public-export-plus": {
 | 
					    "node_modules/warframe-public-export-plus": {
 | 
				
			||||||
      "version": "0.3.0",
 | 
					      "version": "0.3.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.3.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-BYkTkCq9jsA8NzSiWsTW48ezK7kI/op2NrLf+j4j3bJi2cNjoSLf/D4bMEui6yCADjcoV89ramRTFbPjn6UpLA=="
 | 
					      "integrity": "sha512-0jAStLLrMaz0zm7wfY1/3SWLPmMJcYNNErVTPo8YqBZlot1aikVuDNu+crVmN+LWDDLrn01T7f83EYaw7TYo6w=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-riven-info": {
 | 
					    "node_modules/warframe-riven-info": {
 | 
				
			||||||
      "version": "0.1.0",
 | 
					      "version": "0.1.0",
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,7 @@
 | 
				
			|||||||
    "copyfiles": "^2.4.1",
 | 
					    "copyfiles": "^2.4.1",
 | 
				
			||||||
    "express": "^5.0.0-beta.3",
 | 
					    "express": "^5.0.0-beta.3",
 | 
				
			||||||
    "mongoose": "^8.1.1",
 | 
					    "mongoose": "^8.1.1",
 | 
				
			||||||
    "warframe-public-export-plus": "^0.3.0",
 | 
					    "warframe-public-export-plus": "^0.3.2",
 | 
				
			||||||
    "warframe-riven-info": "^0.1.0",
 | 
					    "warframe-riven-info": "^0.1.0",
 | 
				
			||||||
    "winston": "^3.11.0",
 | 
					    "winston": "^3.11.0",
 | 
				
			||||||
    "winston-daily-rotate-file": "^4.7.1"
 | 
					    "winston-daily-rotate-file": "^4.7.1"
 | 
				
			||||||
 | 
				
			|||||||
@ -23,33 +23,46 @@ const getRewards = ({
 | 
				
			|||||||
        return { InventoryChanges: {}, MissionRewards: [] };
 | 
					        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[] = [];
 | 
					    const drops: IReward[] = [];
 | 
				
			||||||
    rewardManifests
 | 
					    if (RewardInfo.node in ExportRegions) {
 | 
				
			||||||
        .map(name => ExportRewards[name])
 | 
					        const region = ExportRegions[RewardInfo.node];
 | 
				
			||||||
        .forEach(table => {
 | 
					        const rewardManifests = region.rewardManifests ?? [];
 | 
				
			||||||
            for (const rotation of rotations) {
 | 
					        if (rewardManifests.length == 0) {
 | 
				
			||||||
                const rotationRewards = table[rotation];
 | 
					            return { InventoryChanges: {}, MissionRewards: [] };
 | 
				
			||||||
                const drop = getRandomRewardByChance(rotationRewards);
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        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) {
 | 
					                if (drop) {
 | 
				
			||||||
                    drops.push(drop);
 | 
					                    drops.push(drop);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logger.debug("Mission rewards:", drops);
 | 
					    logger.debug("Mission rewards:", drops);
 | 
				
			||||||
    return formatRewardsToInventoryType(drops);
 | 
					    return formatRewardsToInventoryType(drops);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user