// ==UserScript== // @name MH: Floating Islands HUD Enhancer // @author Warden Slayer - Warden Slayer#2302 // @namespace https://greasyfork.org/en/users/227259-wardenslayer // @version 1.0.3 // @description See more thing on your floating islands HUD! // @include https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js // @include http://www.mousehuntgame.com/* // @include https://www.mousehuntgame.com/* // @downloadURL none // ==/UserScript== $(document).ready(function() { const debug = localStorage.getItem('ws.debug'); if (user.environment_name == 'Floating Islands') { if (debug == true) { console.log('FI Script Started'); } loadFunction() } else { if (debug == true) { console.log('Not in the FI'); } } }); function loadFunction() { updateAndRender() watchTheHUD() watchThePopup(); } function watchTheHUD() { const hudWatcher = new MutationObserver(callbackHUD); const hudWatcherOptions = { childList: false, attributes: true, subtree: false, }; hudWatcher.observe($('.floatingIslandsHUD').get(0), hudWatcherOptions); } function callbackHUD(mutationList, observer) { const mutation = $(mutationList).get(0); if (mutation.type == 'attributes') { updateAndRender() } } //HUD Code function updateAndRender() { localStorage.setItem('ws.fi.ocLevel', user.quests.QuestFloatingIslands.airship.oculus_level); hg.utils.UserInventory.getItem('sky_pirate_seal_stat_item', function(data) { localStorage.setItem('ws.fi.numSeals', data.quantity); hg.utils.UserInventory.getItem('floating_trap_upgrade_stat_item', function(data) { localStorage.setItem('ws.fi.numJewels', data.quantity); hg.utils.UserInventory.getItem('floating_islands_cloud_gem_stat_item', function(data) { localStorage.setItem('ws.fi.numGlass', data.quantity); hg.utils.UserInventory.getItem('floating_islands_sky_ore_stat_item', function(data) { localStorage.setItem('ws.fi.numOre', data.quantity); buildHUD() }); }); }); }); } function buildHUD() { let body = $('.floatingIslandsHUD-statItemContainer'); $(body).css({ 'width': '350px', }); if ($('.floatingIslandsHUD-statItem-separator').get(0)) { $('.floatingIslandsHUD-statItem-separator').hide(); } let bangles = $('.floatingIslandsHUD-statItem.mousehuntTooltipParent[data-item-type="cloudstone_bangle_stat_item"]'); //Seals let pirateSeals = ""; if ($("[data-item-type=pirate_seals]").get(0)) { pirateSeals = $("[data-item-type=pirate_seals]"); } else { pirateSeals = $(bangles).clone().prependTo(body); } pirateSeals.attr('data-item-type', 'pirate_seals'); $(pirateSeals).find('.floatingIslandsHUD-item-image.cloudstone_bangle_stat_item').removeClass('cloudstone_bangle_stat_item').addClass('pirate_seals'); $('.floatingIslandsHUD-item-image.pirate_seals').css({ 'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/db3bb7de0241624283b99481f7c7a6b8.gif?cv=247)', }); $(pirateSeals).find('.floatingIslandsHUD-statItem-quantity.quantity').attr('data-item-type', 'pirate_seals').text(localStorage.getItem('ws.fi.numSeals')); $(pirateSeals).find('.mousehuntTooltip.tight.top.noEvents').text('Sky Pirate Seals').css({ 'font-weight': 'bold', }); //Jewels let jewels = ""; if ($("[data-item-type=jewels]").get(0)) { jewels = $("[data-item-type=jewels]"); } else { jewels = $(bangles).clone().appendTo(body); } jewels.attr('data-item-type', 'jewels'); $(jewels).find('.floatingIslandsHUD-item-image.cloudstone_bangle_stat_item').removeClass('cloudstone_bangle_stat_item').addClass('jewels'); $('.floatingIslandsHUD-item-image.jewels').css({ 'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/964b5aeaac26714cac2ffa7194e55176.gif?cv=247)', }); $(jewels).find('.floatingIslandsHUD-statItem-quantity.quantity').attr('data-item-type', 'jewels').text(parseInt(localStorage.getItem('ws.fi.numJewels'), 10)); $(jewels).find('.mousehuntTooltip.tight.top.noEvents').text('Adorned Empyrean Jewel').css({ 'font-weight': 'bold', }); //Hide Wind on islands not launchpad if ($('.floatingIslandsHUD.launch_pad_island ').length == 0) { $('[data-item-type=bottled_wind_stat_item]:not(.floatingIslandsHUD-fuel-quantity)').hide(); } //Ore/Glass const oculusLevel = localStorage.getItem('ws.fi.ocLevel'); const skyGlass = $('.floatingIslandsHUD-craftingItem.floating_islands_cloud_gem_stat_item').find("[data-item-type=floating_islands_cloud_gem_stat_item]") const skyGlassQty = parseInt(localStorage.getItem('ws.fi.numGlass'), 10) const skyOre = $('.floatingIslandsHUD-craftingItem.floating_islands_sky_ore_stat_item').find("[data-item-type=floating_islands_sky_ore_stat_item]") const skyOreQty = parseInt(localStorage.getItem('ws.fi.numOre'), 10) let upgradeCost = 0; if (oculusLevel == 1) { upgradeCost = 35; } else if (oculusLevel == 2) { upgradeCost = 150; } else if (oculusLevel == 3) { upgradeCost = 500; } else if (oculusLevel == 4) { upgradeCost = '1.2k'; } else if (oculusLevel == 5) { upgradeCost = '2k'; } else if (oculusLevel == 6) { upgradeCost = '3.5k'; } else if (oculusLevel == 7) { upgradeCost = '8k'; } else if (oculusLevel == 8) { upgradeCost = '10k'; } else if (oculusLevel == 9) { upgradeCost = '2.5k'; } $(skyGlass).text(skyGlassQty + '/' + upgradeCost); $(skyOre).text(skyOreQty + '/' + upgradeCost); //Warden/Paragon Progress const allRemainingHunts = user.quests.QuestFloatingIslands.hunting_site_atts.enemy_encounter_hunts_remaining; let warGons = 'Paragon: '; if (user.quests.QuestFloatingIslands.hunting_site_atts.has_enemy == null) { warGons = 'Enemy: '; } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_high_altitude == null) { warGons = 'Warden: '; } $('.floatingIslandsHUD-enemy-state.enemyApproaching:not(.enemyActive)').text(warGons + allRemainingHunts); //wind on maybe const useWind = localStorage.getItem('ws.fi.useWind'); if (useWind == 'yes') { if (user.quests.QuestFloatingIslands.hunting_site_atts.is_fuel_enabled == null) { const numWind = parseInt($('.floatingIslandsHUD-statItem-quantity.quantity').filter('[data-item-type=bottled_wind_stat_item]').text(),10); if (numWind > 0 ) { hg.views.HeadsUpDisplayFloatingIslandsView.toggleFuel(); } } } } $(document).on('click', '.floatingIslandsHUD-fuel-button', function() { if (user.quests.QuestFloatingIslands.hunting_site_atts.is_fuel_enabled == null) { localStorage.setItem('ws.fi.useWind', 'yes'); } else { localStorage.setItem('ws.fi.useWind', 'no'); } }) function watchTheHunts() { const huntWatcher = new MutationObserver(callbackHunt); const huntWatcherOptions = { childList: false, attributes: true, subtree: false, }; huntWatcher.observe($('.floatingIslandsHUD-modPanel-progress-pip').get(0), huntWatcherOptions); } function callbackHunt(mutationList, observer) { mutationList.forEach(mutation => { if (mutation.type == 'attributes') { updateAndRender(); } }) } //Paragon Overlay function watchThePopup() { const popupWatcher = new MutationObserver(callbackPopup); const popupWatcherOptons = { childList: false, attributes: true, subtree: false, }; popupWatcher.observe($('#overlayPopup').get(0), popupWatcherOptons); } function callbackPopup(mutationList, observer) { const mutation = $(mutationList).get(0); if (mutation.type == 'attributes') { if ($('.floatingIslandsAdventureBoard-container').get(0)) { observer.disconnect(); setTimeout(renderSkyMap, 100); } } } function renderSkyMap() { drawParagons() //cycleTracker() const body = $('.floatingIslandsAdventureBoard-trapLibrary'); $(body).removeAttr("href").removeAttr("onclick"); const trapLibrary = $('.floatingIslandsAdventureBoard-trapLibrary-text:not(.wind)'); let useWindDiv = $('.floatingIslandsAdventureBoard-trapLibrary-text.wind'); if ($(useWindDiv).length == 0) { useWindDiv = $(trapLibrary).clone().appendTo(body); $(useWindDiv).addClass('wind'); } let useWindCb = $(useWindDiv).find('.floatingIslandsAdventureBoard-trapLibrary-checkbox'); $(useWindCb).addClass('wind'); $(useWindDiv).children().empty().append(useWindCb).append("Use Wind"); forceWind() } function forceWind() { const windBox = $('.floatingIslandsAdventureBoard-trapLibrary-checkbox.wind'); const useWind = localStorage.getItem('ws.fi.useWind'); if (useWind == 'yes') { $(windBox).prop('checked',true) } else { $(windBox).prop('checked',false) } } $(document).on('click', '.floatingIslandsAdventureBoard-trapLibrary-text:not(.wind)', function() { if ($('.floatingIslandsAdventureBoard-trapLibrary').hasClass('disabled')){ } else { hg.views.FloatingIslandsAdventureBoardView.toggleUseSavedSetup() setTimeout(forceWind, 500) } }) $(document).on('click', '.floatingIslandsAdventureBoard-trapLibrary-text.wind', function() { const windBox = $('.floatingIslandsAdventureBoard-trapLibrary-checkbox.wind'); const useWind = localStorage.getItem('ws.fi.useWind'); if ($('.floatingIslandsAdventureBoard-trapLibrary').hasClass('disabled')){ } else { if (useWind == 'yes') { $(windBox).prop('checked',false) localStorage.setItem('ws.fi.useWind', 'no') } else { $(windBox).prop('checked',true) localStorage.setItem('ws.fi.useWind', 'yes') } } }) //to do function cycleTracker() { $('.floatingIslandsAdventureBoard-rerollImage').text('1234').css({ 'font-size': '14x', 'font-weight': 'bold', 'color': 'red', }); } function drawParagons() { const overlayCont = $('.floatingIslandsAdventureBoard-container'); const physicalParagon = $('.floatingIslandsHUD-powerType.physical:not(.fipcmask)'); const physicalCatch = hg.utils.MouseUtil.getMouse('physical_paragon', function(resp) { return resp.num_catches; }); const tacticalParagon = $('.floatingIslandsHUD-powerType.tactical:not(.fipcmask)'); const tacticalCatch = hg.utils.MouseUtil.getMouse('tactical_paragon', function(resp) { return resp.num_catches; }); const lawParagon = $('.floatingIslandsHUD-powerType.law:not(.fipcmask)'); const lawCatch = hg.utils.MouseUtil.getMouse('law_paragon', function(resp) { return resp.num_catches; }); const draconicParagon = $('.floatingIslandsHUD-powerType.draconic:not(.fipcmask)'); const draconicCatch = hg.utils.MouseUtil.getMouse('draconic_paragon', function(resp) { return resp.num_catches; }); const arcaneParagon = $('.floatingIslandsHUD-powerType.arcane:not(.fipcmask)'); const arcaneCatch = hg.utils.MouseUtil.getMouse('arcane_paragon', function(resp) { return resp.num_catches; }); const forgottenParagon = $('.floatingIslandsHUD-powerType.forgotten:not(.fipcmask)'); const forgottenCatch = hg.utils.MouseUtil.getMouse('forgotten_paragon', function(resp) { return resp.num_catches; }); const hydroParagon = $('.floatingIslandsHUD-powerType.hydro:not(.fipcmask)'); const hydroCatch = hg.utils.MouseUtil.getMouse('hydro_paragon', function(resp) { return resp.num_catches; }); const shadowParagon = $('.floatingIslandsHUD-powerType.shadow:not(.fipcmask)'); const shadowCatch = hg.utils.MouseUtil.getMouse('shadow_paragon', function(resp) { return resp.num_catches; }); $(physicalParagon).text(physicalCatch); $(tacticalParagon).text(tacticalCatch); $(lawParagon).text(lawCatch); $(draconicParagon).text(draconicCatch); $(arcaneParagon).text(arcaneCatch); $(forgottenParagon).text(forgottenCatch); $(hydroParagon).text(hydroCatch); $(shadowParagon).text(shadowCatch); $('.floatingIslandsHUD-powerType').css({ 'font-size': '14x', 'font-weight': 'bold', 'color': 'blue', }); watchThePopup(); } $(document).ajaxStop(function(){ loadFunction() });