forked from OpenWF/SpaceNinjaServer
		
	feat: Arcana Isolation Vault rewards (#2276)
Closes #388 Reviewed-on: OpenWF/SpaceNinjaServer#2276 Reviewed-by: Sainan <sainan@calamity.inc> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									e234af098d
								
							
						
					
					
						commit
						3a6e4ac2e1
					
				
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -21,7 +21,7 @@
 | 
			
		||||
        "ncp": "^2.0.0",
 | 
			
		||||
        "typescript": "^5.5",
 | 
			
		||||
        "undici": "^7.10.0",
 | 
			
		||||
        "warframe-public-export-plus": "^0.5.68",
 | 
			
		||||
        "warframe-public-export-plus": "^0.5.69",
 | 
			
		||||
        "warframe-riven-info": "^0.1.2",
 | 
			
		||||
        "winston": "^3.17.0",
 | 
			
		||||
        "winston-daily-rotate-file": "^5.0.0",
 | 
			
		||||
@ -3396,9 +3396,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/warframe-public-export-plus": {
 | 
			
		||||
      "version": "0.5.68",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.68.tgz",
 | 
			
		||||
      "integrity": "sha512-KMmwCVeQ4k+EN73UZqxnM+qQdPsST8geWoJCP7US5LT6JcRxa8ptmqYXwCzaLtckBLZyVbamsxKZAxPPJckxsA=="
 | 
			
		||||
      "version": "0.5.69",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.69.tgz",
 | 
			
		||||
      "integrity": "sha512-vTU1tUzqpihzpseUSJMrM82pYbCDZCfW40jXIi+Ol9B3a3Acz0DccfP7i4eoXf7Abahu4H/sjRt/nSHLNBvLHA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/warframe-riven-info": {
 | 
			
		||||
      "version": "0.1.2",
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@
 | 
			
		||||
    "ncp": "^2.0.0",
 | 
			
		||||
    "typescript": "^5.5",
 | 
			
		||||
    "undici": "^7.10.0",
 | 
			
		||||
    "warframe-public-export-plus": "^0.5.68",
 | 
			
		||||
    "warframe-public-export-plus": "^0.5.69",
 | 
			
		||||
    "warframe-riven-info": "^0.1.2",
 | 
			
		||||
    "winston": "^3.17.0",
 | 
			
		||||
    "winston-daily-rotate-file": "^5.0.0",
 | 
			
		||||
 | 
			
		||||
@ -1207,7 +1207,7 @@ export const addMissionRewards = async (
 | 
			
		||||
 | 
			
		||||
    if (rewardInfo.JobStage != undefined && rewardInfo.jobId) {
 | 
			
		||||
        // 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[] = [];
 | 
			
		||||
        if (syndicateMissionId) {
 | 
			
		||||
            pushClassicBounties(syndicateMissions, idToBountyCycle(syndicateMissionId));
 | 
			
		||||
@ -1216,12 +1216,27 @@ export const addMissionRewards = async (
 | 
			
		||||
        if (syndicateEntry && syndicateEntry.Jobs) {
 | 
			
		||||
            let currentJob = syndicateEntry.Jobs[rewardInfo.JobTier!];
 | 
			
		||||
            if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
			
		||||
                if (jobType.endsWith("VaultBounty")) {
 | 
			
		||||
                    const vault = syndicateEntry.Jobs.find(j => j.locationTag === locationTag);
 | 
			
		||||
                    if (vault) currentJob = vault;
 | 
			
		||||
                if (
 | 
			
		||||
                    [
 | 
			
		||||
                        "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 (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 (
 | 
			
		||||
                    ["DeimosEndlessAreaDefenseBounty", "DeimosEndlessExcavateBounty", "DeimosEndlessPurifyBounty"].some(
 | 
			
		||||
                        ending => jobType.endsWith(ending)
 | 
			
		||||
@ -1554,7 +1569,7 @@ function getRandomMissionDrops(
 | 
			
		||||
        if (RewardInfo.jobId) {
 | 
			
		||||
            if (RewardInfo.JobStage! >= 0) {
 | 
			
		||||
                // 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;
 | 
			
		||||
                if (syndicateMissionId) {
 | 
			
		||||
                    const syndicateMissions: ISyndicateMissionInfo[] = [];
 | 
			
		||||
@ -1566,21 +1581,30 @@ function getRandomMissionDrops(
 | 
			
		||||
                        let job = syndicateEntry.Jobs[RewardInfo.JobTier!];
 | 
			
		||||
 | 
			
		||||
                        if (syndicateEntry.Tag === "EntratiSyndicate") {
 | 
			
		||||
                            if (jobType.endsWith("VaultBounty")) {
 | 
			
		||||
                                const vault = syndicateEntry.Jobs.find(j => j.locationTag === locationTag);
 | 
			
		||||
                                if (vault) job = vault;
 | 
			
		||||
                            if (
 | 
			
		||||
                                [
 | 
			
		||||
                                    "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 (
 | 
			
		||||
                                [
 | 
			
		||||
                                    "DeimosEndlessAreaDefenseBounty",
 | 
			
		||||
@ -1657,10 +1681,10 @@ function getRandomMissionDrops(
 | 
			
		||||
                        }
 | 
			
		||||
                        if (
 | 
			
		||||
                            RewardInfo.Q &&
 | 
			
		||||
                            (RewardInfo.JobStage === job.xpAmounts.length - 1 || job.isVault) &&
 | 
			
		||||
                            (RewardInfo.JobStage === job.xpAmounts.length - 1 || jobType.endsWith("VaultBounty")) &&
 | 
			
		||||
                            !isEndlessJob
 | 
			
		||||
                        ) {
 | 
			
		||||
                            rotations.push(3);
 | 
			
		||||
                            rotations.push(ExportRewards[job.rewards].length - 1);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user