feat: Arcana Isolation Vault rewards #2276
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -21,7 +21,7 @@
 | 
				
			|||||||
        "ncp": "^2.0.0",
 | 
					        "ncp": "^2.0.0",
 | 
				
			||||||
        "typescript": "^5.5",
 | 
					        "typescript": "^5.5",
 | 
				
			||||||
        "undici": "^7.10.0",
 | 
					        "undici": "^7.10.0",
 | 
				
			||||||
        "warframe-public-export-plus": "^0.5.68",
 | 
					        "warframe-public-export-plus": "^0.5.69",
 | 
				
			||||||
        "warframe-riven-info": "^0.1.2",
 | 
					        "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
        "winston": "^3.17.0",
 | 
					        "winston": "^3.17.0",
 | 
				
			||||||
        "winston-daily-rotate-file": "^5.0.0",
 | 
					        "winston-daily-rotate-file": "^5.0.0",
 | 
				
			||||||
@ -3396,9 +3396,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-public-export-plus": {
 | 
					    "node_modules/warframe-public-export-plus": {
 | 
				
			||||||
      "version": "0.5.68",
 | 
					      "version": "0.5.69",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.68.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.69.tgz",
 | 
				
			||||||
      "integrity": "sha512-KMmwCVeQ4k+EN73UZqxnM+qQdPsST8geWoJCP7US5LT6JcRxa8ptmqYXwCzaLtckBLZyVbamsxKZAxPPJckxsA=="
 | 
					      "integrity": "sha512-vTU1tUzqpihzpseUSJMrM82pYbCDZCfW40jXIi+Ol9B3a3Acz0DccfP7i4eoXf7Abahu4H/sjRt/nSHLNBvLHA=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-riven-info": {
 | 
					    "node_modules/warframe-riven-info": {
 | 
				
			||||||
      "version": "0.1.2",
 | 
					      "version": "0.1.2",
 | 
				
			||||||
 | 
				
			|||||||
@ -33,7 +33,7 @@
 | 
				
			|||||||
    "ncp": "^2.0.0",
 | 
					    "ncp": "^2.0.0",
 | 
				
			||||||
    "typescript": "^5.5",
 | 
					    "typescript": "^5.5",
 | 
				
			||||||
    "undici": "^7.10.0",
 | 
					    "undici": "^7.10.0",
 | 
				
			||||||
    "warframe-public-export-plus": "^0.5.68",
 | 
					    "warframe-public-export-plus": "^0.5.69",
 | 
				
			||||||
    "warframe-riven-info": "^0.1.2",
 | 
					    "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
    "winston": "^3.17.0",
 | 
					    "winston": "^3.17.0",
 | 
				
			||||||
    "winston-daily-rotate-file": "^5.0.0",
 | 
					    "winston-daily-rotate-file": "^5.0.0",
 | 
				
			||||||
 | 
				
			|||||||
@ -1207,7 +1207,7 @@ export const addMissionRewards = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (rewardInfo.JobStage != undefined && rewardInfo.jobId) {
 | 
					    if (rewardInfo.JobStage != undefined && rewardInfo.jobId) {
 | 
				
			||||||
        // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
					        // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
        const [jobType, unkIndex, hubNode, syndicateMissionId, locationTag] = rewardInfo.jobId.split("_");
 | 
					        const [jobType, unkIndex, hubNode, syndicateMissionId] = rewardInfo.jobId.split("_");
 | 
				
			||||||
        const syndicateMissions: ISyndicateMissionInfo[] = [];
 | 
					        const syndicateMissions: ISyndicateMissionInfo[] = [];
 | 
				
			||||||
        if (syndicateMissionId) {
 | 
					        if (syndicateMissionId) {
 | 
				
			||||||
            pushClassicBounties(syndicateMissions, idToBountyCycle(syndicateMissionId));
 | 
					            pushClassicBounties(syndicateMissions, idToBountyCycle(syndicateMissionId));
 | 
				
			||||||
@ -1216,12 +1216,25 @@ export const addMissionRewards = async (
 | 
				
			|||||||
        if (syndicateEntry && syndicateEntry.Jobs) {
 | 
					        if (syndicateEntry && syndicateEntry.Jobs) {
 | 
				
			||||||
            let currentJob = syndicateEntry.Jobs[rewardInfo.JobTier!];
 | 
					            let currentJob = syndicateEntry.Jobs[rewardInfo.JobTier!];
 | 
				
			||||||
            if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
					            if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
				
			||||||
                if (jobType.endsWith("VaultBounty")) {
 | 
					                if (
 | 
				
			||||||
                    const vault = syndicateEntry.Jobs.find(j => j.locationTag === locationTag);
 | 
					                    [
 | 
				
			||||||
 | 
					                        "DeimosRuinsExterminateBounty",
 | 
				
			||||||
 | 
					                        "DeimosRuinsEscortBounty",
 | 
				
			||||||
 | 
					                        "DeimosRuinsMistBounty",
 | 
				
			||||||
 | 
					                        "DeimosRuinsPurifyBounty",
 | 
				
			||||||
 | 
					                        "DeimosRuinsSacBounty",
 | 
				
			||||||
 | 
					                        "VaultBounty"
 | 
				
			||||||
 | 
					                    ].some(ending => jobType.endsWith(ending))
 | 
				
			||||||
 | 
					                ) {
 | 
				
			||||||
 | 
					                    const vault = syndicateEntry.Jobs.find(j => j.locationTag == rewardInfo.jobId!.split("_").at(-1));
 | 
				
			||||||
                    if (vault) currentJob = vault;
 | 
					                    if (vault) currentJob = vault;
 | 
				
			||||||
 | 
					                    if (jobType.endsWith("VaultBounty")) {
 | 
				
			||||||
 | 
					                        currentJob.xpAmounts = [currentJob.xpAmounts.reduce((partialSum, a) => partialSum + a, 0)];
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                let medallionAmount = Math.floor(currentJob.xpAmounts[rewardInfo.JobStage] / (rewardInfo.Q ? 0.8 : 1));
 | 
					                let medallionAmount = Math.floor(
 | 
				
			||||||
 | 
					                    Math.min(rewardInfo.JobStage, currentJob.xpAmounts.length - 1) / (rewardInfo.Q ? 0.8 : 1)
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
                if (
 | 
					                if (
 | 
				
			||||||
                    ["DeimosEndlessAreaDefenseBounty", "DeimosEndlessExcavateBounty", "DeimosEndlessPurifyBounty"].some(
 | 
					                    ["DeimosEndlessAreaDefenseBounty", "DeimosEndlessExcavateBounty", "DeimosEndlessPurifyBounty"].some(
 | 
				
			||||||
                        ending => jobType.endsWith(ending)
 | 
					                        ending => jobType.endsWith(ending)
 | 
				
			||||||
@ -1554,7 +1567,7 @@ function getRandomMissionDrops(
 | 
				
			|||||||
        if (RewardInfo.jobId) {
 | 
					        if (RewardInfo.jobId) {
 | 
				
			||||||
            if (RewardInfo.JobStage! >= 0) {
 | 
					            if (RewardInfo.JobStage! >= 0) {
 | 
				
			||||||
                // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
					                // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
                const [jobType, unkIndex, hubNode, syndicateMissionId, locationTag] = RewardInfo.jobId.split("_");
 | 
					                const [jobType, unkIndex, hubNode, syndicateMissionId] = RewardInfo.jobId.split("_");
 | 
				
			||||||
                let isEndlessJob = false;
 | 
					                let isEndlessJob = false;
 | 
				
			||||||
                if (syndicateMissionId) {
 | 
					                if (syndicateMissionId) {
 | 
				
			||||||
                    const syndicateMissions: ISyndicateMissionInfo[] = [];
 | 
					                    const syndicateMissions: ISyndicateMissionInfo[] = [];
 | 
				
			||||||
@ -1566,21 +1579,30 @@ function getRandomMissionDrops(
 | 
				
			|||||||
                        let job = syndicateEntry.Jobs[RewardInfo.JobTier!];
 | 
					                        let job = syndicateEntry.Jobs[RewardInfo.JobTier!];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
					                        if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
				
			||||||
                            if (jobType.endsWith("VaultBounty")) {
 | 
					                            if (
 | 
				
			||||||
                                const vault = syndicateEntry.Jobs.find(j => j.locationTag === locationTag);
 | 
					                                [
 | 
				
			||||||
                                if (vault) job = vault;
 | 
					                                    "DeimosRuinsExterminateBounty",
 | 
				
			||||||
 | 
					                                    "DeimosRuinsEscortBounty",
 | 
				
			||||||
 | 
					                                    "DeimosRuinsMistBounty",
 | 
				
			||||||
 | 
					                                    "DeimosRuinsPurifyBounty",
 | 
				
			||||||
 | 
					                                    "DeimosRuinsSacBounty",
 | 
				
			||||||
 | 
					                                    "VaultBounty"
 | 
				
			||||||
 | 
					                                ].some(ending => jobType.endsWith(ending))
 | 
				
			||||||
 | 
					                            ) {
 | 
				
			||||||
 | 
					                                const vault = syndicateEntry.Jobs.find(
 | 
				
			||||||
 | 
					                                    j => j.locationTag === RewardInfo.jobId!.split("_").at(-1)
 | 
				
			||||||
 | 
					                                );
 | 
				
			||||||
 | 
					                                if (vault) {
 | 
				
			||||||
 | 
					                                    job = vault;
 | 
				
			||||||
 | 
					                                    if (jobType.endsWith("VaultBounty")) {
 | 
				
			||||||
 | 
					                                        job.rewards = job.rewards.replace(
 | 
				
			||||||
 | 
					                                            "/Lotus/Types/Game/MissionDecks/",
 | 
				
			||||||
 | 
					                                            "/Supplementals/"
 | 
				
			||||||
 | 
					                                        );
 | 
				
			||||||
 | 
					                                        job.xpAmounts = [job.xpAmounts.reduce((partialSum, a) => partialSum + a, 0)];
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            // if (
 | 
					 | 
				
			||||||
                            //     [
 | 
					 | 
				
			||||||
                            //         "DeimosRuinsExterminateBounty",
 | 
					 | 
				
			||||||
                            //         "DeimosRuinsEscortBounty",
 | 
					 | 
				
			||||||
                            //         "DeimosRuinsMistBounty",
 | 
					 | 
				
			||||||
                            //         "DeimosRuinsPurifyBounty",
 | 
					 | 
				
			||||||
                            //         "DeimosRuinsSacBounty"
 | 
					 | 
				
			||||||
                            //     ].some(ending => jobType.endsWith(ending))
 | 
					 | 
				
			||||||
                            // ) {
 | 
					 | 
				
			||||||
                            //     job.rewards = "TODO"; // Droptable for Arcana Isolation Vault
 | 
					 | 
				
			||||||
                            // }
 | 
					 | 
				
			||||||
                            if (
 | 
					                            if (
 | 
				
			||||||
                                [
 | 
					                                [
 | 
				
			||||||
                                    "DeimosEndlessAreaDefenseBounty",
 | 
					                                    "DeimosEndlessAreaDefenseBounty",
 | 
				
			||||||
@ -1657,10 +1679,10 @@ function getRandomMissionDrops(
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        if (
 | 
					                        if (
 | 
				
			||||||
                            RewardInfo.Q &&
 | 
					                            RewardInfo.Q &&
 | 
				
			||||||
                            (RewardInfo.JobStage === job.xpAmounts.length - 1 || job.isVault) &&
 | 
					                            (RewardInfo.JobStage === job.xpAmounts.length - 1 || jobType.endsWith("VaultBounty")) &&
 | 
				
			||||||
                            !isEndlessJob
 | 
					                            !isEndlessJob
 | 
				
			||||||
                        ) {
 | 
					                        ) {
 | 
				
			||||||
                            rotations.push(3);
 | 
					                            rotations.push(ExportRewards[job.rewards].length - 1);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user