// ==UserScript== // @name MouseHunt - Floting Islands Priority Calculator // @author MCS;Aaron;Tran Situ (tsitu) // @namespace https://greasyfork.org/zh-CN/users/164491-mirrorcubesquare // @version 0.0.3 // @description Floting Islands Priority Calculator // @grant GM_addStyle // @match http://www.mousehuntgame.com/* // @match https://www.mousehuntgame.com/* // @downloadURL none // ==/UserScript== const synergy_LAI=1.5; const synergy_HAI=2.5; const synergy_lootCache=1.1; const IslandStatusDefault= { Arcane:[], Forgotten:[], Hydro:[], Shadow:[], Draconic:[], Law:[], Tactical:[], Physical:[] }; const IslandIndexDefault= { Arcane:[0,1,2,3], Forgotten:[4,5,6,7], Hydro:[8,9,10,11], Shadow:[12,13,14,15], Draconic:[12,8,4,0], Law:[13,9,5,1], Physical:[14,10,6,2], Tactical:[15,11,7,3] }; const LAI_Index= { 'sky_cheese':[1.6,1.3,1.2,1.1], 'gem_bonus':[2,1.4,1.3,1.1], 'empty_sky':[1,1,1,1], 'ore_bonus':[2,1.4,1.3,1.1], 'paragon_cache':[7,3,2,1.5], 'shrine':[7,3,2,1.5], 'pirate':[1,1,1,1], 'loot_cache':[3,2.5,2,1.9] }; const HAI_Index= { 'sky_cheese':[2.2,2,1.5,1.5], 'gem_bonus':[2.7,2.6,2.5,2.4], 'empty_sky':[1,1,1,1], 'ore_bonus':[2.7,2.6,2.5,2.4], 'paragon_cache':[1.03,1.02,1.01,1], 'shrine':[1.03,1.02,1.01,1], 'pirate':[1,1,1,1], 'loot_cache':[6,5.95,5.9,5.85] }; const target_test=['sky_cheese','empty_sky','shrine','gem_bonus']; function CalculateIndex(target,is_high_altitude) { var result=1; var synergy=is_high_altitude?synergy_HAI:synergy_LAI; var gem_bonus_count=0; var ore_bonus_count=0; var loot_cache_count=0; if (target.length<4)return -1; var index=is_high_altitude?HAI_Index:LAI_Index; for(var i=0;i<4;i++) { if(target[i]=='gem_bonus')gem_bonus_count++; if(target[i]=='ore_bonus')ore_bonus_count++; if(target[i]=='loot_cache')loot_cache_count++; result=result*index[target[i]][i]; } result=Math.sqrt(result*(Math.max(1,Math.pow(synergy,Math.max(gem_bonus_count+loot_cache_count*synergy_lootCache,ore_bonus_count+loot_cache_count*synergy_lootCache)-1)))); return result; } function Render(islandStatus) { for (var powerType in islandStatus) { if(islandStatus[powerType].length==5) { var target=document.querySelector("."+powerType.toLowerCase()); target.title=target.title+" Score:"+islandStatus[powerType][4].toPrecision(4); } } } (function () { console.log("FI Calculator Start"); // var test_calculate=CalculateIndex(target_test,false); const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function () { this.addEventListener("load", function () { var islandStatus_Raw=[]; var is_high_altitude=user.quests.QuestFloatingIslands.hunting_site_atts.is_high_altitude; //console.log(this.responseURL); var islandStatus= { Arcane:[], Forgotten:[], Hydro:[], Shadow:[], Draconic:[], Law:[], Tactical:[], Physical:[] }; if ( this.responseURL === "https://www.mousehuntgame.com/managers/ajax/environment/floating_islands.php" ) { let data; try { data = JSON.parse(this.responseText).adventure_board.grid; if (data && data.length == 16) { console.log("Retrived Correct Data from floating_islands.php"); console.log(data); for(var i=0;i-1)temp="paragon_cache"; if(temp.indexOf("shrine")>-1)temp="shrine"; if(temp.indexOf("pirate")>-1)temp="pirate";//Experimental,Waiting for correct type islandStatus_Raw.push(temp); } console.log("Memorize Complete"); for (var powerType in islandStatus) { for (var j=0;j<4;j++) { //IslandIndexDefault islandStatus[powerType].push(islandStatus_Raw[IslandIndexDefault[powerType][j]]); } islandStatus[powerType].push(CalculateIndex(islandStatus[powerType],is_high_altitude)); } console.log(JSON.stringify(islandStatus)); Render(islandStatus); } } catch (error) { console.log( "Failed to process server response for floating_islands.php" ); console.error(error.stack); } } }); originalOpen.apply(this, arguments); };})();