MH: Floating Islands HUD Enhancer

See more thing on your floating islands HUD!

Install this script?
Author's suggested script

You may also like MH: Profile+.

Install this script
// ==UserScript==
// @name         MH: Floating Islands HUD Enhancer
// @author       Warden Slayer
// @namespace    https://greasyfork.org/en/users/227259-wardenslayer
// @version      1.7.1
// @description  See more thing on your floating islands HUD!
// @icon         https://www.mousehuntgame.com/images/items/weapons/974151e440f297f1b6d55385310ac63c.jpg?cv=2
// @include      https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
// @include      http://www.mousehuntgame.com/*
// @include      https://www.mousehuntgame.com/*
// ==/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();
    setTimeout(renderSkyMap, 100);
}

$(document).ajaxComplete(function(event,xhr,options){
    //console.log(options.url);
    if (options.url == 'https://www.mousehuntgame.com/managers/ajax/mice/getstat.php') {
        //console.log('mice');
    } else if (options.url == 'https://www.mousehuntgame.com/managers/ajax/users/userInventory.php') {
        //console.log('items');
    } else {
        // console.log('some other ajax');
        if (user.environment_name == 'Floating Islands') {
            loadFunction();
        }
    }
});

//HUD Code
function updateAndRender() {
    hg.utils.UserInventory.getItem('empyrean_codex_page_stat_item', function(data) {
        localStorage.setItem('ws.fi.numPages', 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);
                renderHUD();
            }, true);
        }, true);
    }, true);
}

function renderHUD() {
    const ShowPages = localStorage.getItem('ws.fi.showPages');
    let empyreanPages = $('.floatingIslandsHUD-statItem[data-item-type="empyrean_codex_page_stat_item"]');
    if (empyreanPages.length > 0 ) {
    } else {
        const itemContainer = $('.floatingIslandsHUD-statItemContainer');
        const statItem = $(itemContainer).find('.floatingIslandsHUD-statItem[data-item-type="bottled_wind_stat_item"]');
        let empyreanPages = $(statItem ).clone().appendTo(itemContainer);
        $(empyreanPages).find('.floatingIslandsHUD-item-image.bottled_wind_stat_item').removeClass('bottled_wind_stat_item').addClass('empyrean_codex_page_stat_item');
        $(empyreanPages).find('*').removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
        $(empyreanPages).removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
        $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-name').text('Empyrean Codex Page');
        const pageCount = parseInt(localStorage.getItem('ws.fi.numPages'),10);
        $(empyreanPages).find('.floatingIslandsHUD-statItem-quantity.quantity').text(pageCount);
        empyreanPages.removeAttr("href").removeAttr("onclick");
        $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').css({
            'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/5d8cf4e7ab765abc5b4a72c44bae6b98.gif?cv=2)',
        });
        $(empyreanPages).find('.floatingIslandsHUD-state.floatingIslandsHUD-island').text('Empyrean Codex Page');
    }
    if (ShowPages == "Y") {
        $(empyreanPages).removeClass('hidden');
    } else {
        $(empyreanPages).addClass('hidden');
    }
    //Hide Wind on islands not launchpad
    if (user.quests.QuestFloatingIslands.hunting_site_atts.hunts_remaining != null) {
        $('.floatingIslandsHUD-statItem.mousehuntTooltipParent').filter('[data-item-type=bottled_wind_stat_item]').hide();
    }
    //wind on maybe
    const useWind = localStorage.getItem('ws.fi.useWind');
    const numWind = parseInt($('.floatingIslandsHUD-statItem-quantity.quantity').filter('[data-item-type=bottled_wind_stat_item]').text(),10);
    if (useWind == 'yes') {
        if (user.quests.QuestFloatingIslands.hunting_site_atts.is_fuel_enabled) {
            localStorage.setItem('ws.fi.useWind', 'no');
        } else {
            if (numWind > 0 ) {
                hg.views.HeadsUpDisplayFloatingIslandsView.toggleFuel();
            }
        }
    }
    //Hide retreat button if the warden/paragon is not caught already
    if (user.quests.QuestFloatingIslands.hunting_site_atts.has_defeated_enemy) {
        $('.floatingIslandsHUD-retreatButton').show();
    } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_enemy_encounter) {
        $('.floatingIslandsHUD-retreatButton').hide();
    } else if (user.quests.QuestFloatingIslands.hunting_site_atts.has_encountered_enemy) {
        $('.floatingIslandsHUD-retreatButton').show();
    } else {
        $('.floatingIslandsHUD-retreatButton').hide();
    }
    showOreGlass();
    showBossProgress();
}
$(document).on('click', '.floatingIslandsHUD-statItem[data-item-type="empyrean_codex_page_stat_item"]', function() {
    hg.views.ItemView.show('empyrean_codex_page_stat_item');
    //hg.views.ItemView.show($(this).attr('data-type'))
})

function showOreGlass() {
    const oculusLevel = user.quests.QuestFloatingIslands.airship.oculus_level;
    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);
}

function showBossProgress() {
    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: ';
    } else if (user.quests.QuestFloatingIslands.hunting_site_atts.is_vault_island != null) {
        warGons = 'Empress: ';
    }
    $('.floatingIslandsHUD-enemy-state.enemyApproaching:not(.enemyActive)').text(warGons + allRemainingHunts);
}

function renderItemBag() {
    const itemBagBody = $('.floatingIslandsHUD-inventoryBag-itemContainer');
    const empyreanTroves = $('.floatingIslandsHUD-inventoryBag-item[data-item-type="empyrean_floating_loot_cache_convertible"]');
    let empyreanPages = "";
    empyreanPages = $(empyreanTroves).clone().appendTo(itemBagBody)
    $(empyreanPages).removeClass('active').removeClass('inactive');
    const ShowPages = localStorage.getItem('ws.fi.showPages');
    if (ShowPages == "Y") {
        $(empyreanPages).addClass('active');
    } else {
        $(empyreanPages).addClass('inactive');
    }
    $(empyreanPages).find('.floatingIslandsHUD-item-image.empyrean_floating_loot_cache_convertible').removeClass('empyrean_floating_loot_cache_convertible').addClass('empyrean_codex_page_stat_item');
    $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').find('*').removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
    $(empyreanPages).removeAttr('data-item-type').attr('data-item-type', 'empyrean_codex_page_stat_item');
    $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-name').text('Empyrean Codex Page');
    const pageCount = parseInt(localStorage.getItem('ws.fi.numPages'),10);
    $(empyreanPages).find('.floatingIslandsHUD-inventoryBag-item-quantity.quantity').text(pageCount);
    $('.floatingIslandsHUD-item-image.empyrean_codex_page_stat_item').css({
        'background-image': 'url(https://www.mousehuntgame.com/images/items/stats/5d8cf4e7ab765abc5b4a72c44bae6b98.gif?cv=2)',
    });
    //
    itemBagBody.children().on('click', function () {hg.views.ItemView.show($(this).attr('data-item-type'))});
}

$(document).on('click', '.floatingIslandsHUD-inventoryBagButton.mousehuntTooltipParent', function() {
    renderItemBag();
})
$(document).on('click', '.floatingIslandsHUD-inventoryBag-item-toggleButton[data-item-type="empyrean_codex_page_stat_item"]', function() {
    const empyreanPages = $('.floatingIslandsHUD-inventoryBag-item[data-item-type="empyrean_codex_page_stat_item"]');
    if (empyreanPages.hasClass('inactive')) {
        empyreanPages.removeClass('inactive').addClass('active');
        localStorage.setItem('ws.fi.showPages',"Y");
    } else if (empyreanPages.hasClass('active')) {
        empyreanPages.removeClass('active').addClass('inactive');
        localStorage.setItem('ws.fi.showPages',"");
    } else {
        empyreanPages.addClass('active');
        localStorage.setItem('ws.fi.showPages',"Y");
    }
})

//Paragon Overlay
function renderSkyMap() {
    drawParagons()
    //         const body = $('.floatingIslandsAdventureBoard-container.paragon.loading.skyMap');
    //          $(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')
//         }
//     }
// })

function drawParagons() {
    const overlayCont = $('.floatingIslandsAdventureBoard-container');
    if (overlayCont.length == 1) {
        const allParagons = $('.floatingIslandsHUD-powerType:not(.fipcmask)');
        $(allParagons).each(function(e){
            const thisParagon = $(this);
            hg.utils.MouseUtil.getMouse(thisParagon.context.classList[1]+'_paragon', function(resp,) {
                setTimeout(function(){thisParagon.text(resp.num_catches); }, (10-e)*35);
            })
        })
    }
    $('.floatingIslandsHUD-powerType').css({
        'font-size': '14x',
        'font-weight': 'bold',
        'color': 'blue',
    });
}