Greasy Fork

MH: Valour Rift HUD Enhancer

Changes the text that appears in the Valour Rift hud tooltips to give you the info you actually want to see

目前为 2019-11-21 提交的版本。查看 最新版本

// ==UserScript==
// @name         MH: Valour Rift HUD Enhancer
// @author       Warden Slayer - Warden Slayer#2302
// @namespace    https://greasyfork.org/en/users/227259-wardenslayer
// @version      1.0
// @description  Changes the text that appears in the Valour Rift hud tooltips to give you the info you actually want to see
// @include      https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @include      http://www.mousehuntgame.com/*
// @include      https://www.mousehuntgame.com/*
// ==/UserScript==
$(document).ready(function() {
    let page = hg.utils.PageUtil.getCurrentPageTemplateType();
    var observer = new MutationObserver(callback);
    var observerOptions = {
        childList: true,
        attributes: true,
        subtree: true,
        characterData: true
    };
    if ($(".hudLocationContent.rift_valour").get(0)) {
        if ($('.valourRiftHUD-huntsRemaining-value').get(0)) {
            observer.observe($('.valourRiftHUD-huntsRemaining-value').get(0), observerOptions);
        }
        updateHUD();
    }
});

function callback(mutationList, observer) {
    mutationList.forEach(mutation => {
        switch (mutation.type) {
            case "childList":
                console.log('Child list changed');
                updateHUD()
                break;
            case "characterData":
                console.log('Number of hunts changed');
                updateHUD()
                break;
        }
    });
}

function updateHUD() {
    //How far is the next eclipse floor?
    let floorProg = $('.valourRiftHUD-floorProgress.mousehuntTooltipParent');
    let towerStateA = floorProg.find('.valourRiftHUD-state.tower');
    let stepsTillBoss = calculateSteps('steps');
    let bossProgress = "";
    if ($('.bossProgress').length > 0) {
        bossProgress = $('.bossProgress');
        if (stepsTillBoss == 0) {
        bossProgress.text(" You are on the eclipse floor. Turn on your champion's fire");
        } else if (stepsTillBoss == 1) {
        bossProgress.text('   '+stepsTillBoss+' step untill the next eclipse floor');
        } else {
        bossProgress.text('   '+stepsTillBoss+' steps untill the next eclipse floor');
        }
    } else {
        bossProgress = $('<span />').addClass('bossProgress');
        if (stepsTillBoss == 0) {
        bossProgress.text(" You are on the eclipse floor. Turn on your champion's fire");
        } else if (stepsTillBoss == 1) {
        bossProgress.text('   '+stepsTillBoss+' step untill the next eclipse floor');
        } else {
        bossProgress.text('   '+stepsTillBoss+' steps untill the next eclipse floor');
        }
        towerStateA.children().remove();
        towerStateA.text('');
        towerStateA.append(bossProgress);
    }
    //
    //Can I make it to the next eclipse floor?
    let huntsRem = $('.valourRiftHUD-huntsRemaining.mousehuntTooltipParent');
    let towerStateB = huntsRem.find('.valourRiftHUD-state.tower');
    let numHuntsRem = parseInt(towerStateB.find('.valourRiftHUD-huntsRemaining-value').text(),10);
    let SPH = ((stepsTillBoss)/numHuntsRem).toFixed(2);
    let huntToolTip = huntsRem.find('.mousehuntTooltip.tight.right.noEvents');
    let ToolTipText = "";
    if (stepsTillBoss == 0) {
        ToolTipText = 'You are on the eclipse floor now. Good Luck!';
    } else {
        ToolTipText = 'To get to the next eclipse floor, you need a minimum of '+SPH+' steps per hunt';
    }
    huntToolTip.text(ToolTipText);
    //
    //What will my tower loot pool look like if I retreat now?
    let lootCont = $('.valourRiftHUD-towerLootContainer');
    let sigils = $("[data-item-type|='rift_gaunt_upgrade_a_stat_item']");
    let secrets = $("[data-item-type|='rift_gaunt_upgrade_b_stat_item']");
    let numSigils = parseInt(sigils.first().text(),10);
    let numSecrets = parseInt(secrets.first().text(),10);
    let cacheSigils = 0;
    let cacheSecrets = 0;
    let retreat = $('.valourRiftHUD-dialog-state.retreat');
    let rewardCache = retreat.find('.valourRiftHUD-dialog-item-name');
    rewardCache.each(function(){
        if($(this).text() == 'Tower Sigil') {
            cacheSigils = cacheSigils+parseInt($(this).siblings().text(),10);
        } else if ($(this).text() == 'Tower Secrets') {
            cacheSecrets = cacheSecrets+parseInt($(this).siblings().text(),10);
        }
    });
    let sigilString = (cacheSigils+numSigils)+' total sigils including cache';
    let secretsString = (cacheSecrets+numSecrets)+' total secrets including cache';
    let nextFrags = calculateSteps('loot');
    let fragString = 'The next shade drops '+nextFrags+' fragments';
    let coreString = 'The next total eclipse drops '+nextFrags+' cores';
    $("[title|='Tower Sigil']").mouseover(function() {
        $("[title|='Tower Sigil']").attr('title', sigilString);
    });
    $("[title|='Tower Secrets']").mouseover(function() {
        $("[title|='Tower Secrets']").attr('title', secretsString);
    })
    $("[title|='Fragment of the Eclipse']").mouseover(function() {
        $("[title|='Fragment of the Eclipse']").attr('title', fragString);
    })
    $("[title|='Core of the Eclipse']").mouseover(function() {
        $("[title|='Core of the Eclipse']").attr('title', coreString );
    })
    //Some social commentary courtesy of Warden Slayer
    let retreatButton = $('.valourRiftHUD-retreatButton.mousehuntTooltipParent');
    retreatButton.find('.valourRiftHUD-state.tower').text('  Only mice retreat! Upward to Victory!')



}
function calculateSteps(hinge) {
    let towerState = $('.valourRiftHUD-state.tower');
    let huntsRem = parseInt(towerState.find('.valourRiftHUD-huntsRemaining-value').text(),10);
    let stepsTaken = parseInt(towerState.find('.valourRiftHUD-stepsTaken-value').text(),10);
    let stepsRem = 0;
    let nextFrags = 0;
    if (stepsTaken < 140) {
        stepsRem = 140-stepsTaken;
        nextFrags = 1;
    } else if (stepsTaken == 140) {
        nextFrags = 1;
    } else if (stepsTaken < 351) {
        stepsRem = 351-stepsTaken;
        nextFrags = 3;
    } else if (stepsTaken == 351) {
        nextFrags = 3;
    } else if (stepsTaken < 632) {
        stepsRem = 632-stepsTaken;
        nextFrags = 5;
    } else if (stepsTaken == 632) {
        nextFrags = 5;
    } else if (stepsTaken < 983) {
        stepsRem = 983-stepsTaken;
        nextFrags = 7;
    } else if (stepsTaken == 983) {
        nextFrags = 7;
    } else if (stepsTaken < 1404) {
        stepsRem = 1404-stepsTaken;
        nextFrags = 9;
    } else if (stepsTaken == 1404) {
        nextFrags = 9;
    } else if (stepsTaken < 1895) {
        stepsRem = 1895-stepsTaken;
        nextFrags = 11;
    } else if (stepsTaken == 1895) {
        nextFrags = 11;
    } else if (stepsTaken < 2456) {
        stepsRem = 2456-stepsTaken;
        nextFrags = 13;
    } else if (stepsTaken == 2456) {
        nextFrags = 13;
    } else if (stepsTaken < 3087) {
        stepsRem = 3087-stepsTaken;
        nextFrags = 15;
    } else if (stepsTaken == 3087) {
        nextFrags = 15;
    } else if (stepsTaken < 3788) {
        stepsRem = 3788-stepsTaken;
        nextFrags = 17;
    } else if (stepsTaken == 3788) {
        nextFrags = 17;
    } else if (stepsTaken < 4559) {
        stepsRem = 4559-stepsTaken;
        nextFrags = 19;
    } else if (stepsTaken == 4559) {
        nextFrags = 19;
    } else if (stepsTaken < 5400) {
        stepsRem = 5400-stepsTaken;
        nextFrags = 22;
    } else if (stepsTaken == 5400) {
        nextFrags = 22;
    } else if (stepsTaken < 6311) {
        stepsRem = 6311-stepsTaken;
        nextFrags = 25;
    } else if (stepsTaken == 6311) {
        nextFrags = 25;
    } else if (stepsTaken < 7292) {
        stepsRem = 7292-stepsTaken;
        nextFrags = 28;
    } else if (stepsTaken == 7292) {
        nextFrags = 28;
    } else if (stepsTaken < 8343) {
        stepsRem = 8343-stepsTaken;
        nextFrags = 31;
    } else if (stepsTaken == 8343) {
        nextFrags = 31;
    } else if (stepsTaken < 9464) {
        stepsRem = 9464-stepsTaken;
        nextFrags = 34;
    } else if (stepsTaken == 9464) {
        nextFrags = 34;
    } else if (stepsTaken < 10655) {
        stepsRem = 10655-stepsTaken;
        nextFrags = 37;
    } else if (stepsTaken == 10655) {
        nextFrags = 37;
    } else if (stepsTaken < 11916) {
        stepsRem = 11916-stepsTaken;
        nextFrags = 40;
    } else if (stepsTaken == 11916) {
        nextFrags = 40;
    } else if (stepsTaken < 13247) {
        stepsRem = 13247-stepsTaken;
        nextFrags = 43;
    } else if (stepsTaken == 13247) {
        nextFrags = 43;
    } else if (stepsTaken < 14648) {
        stepsRem = 14648-stepsTaken;
        nextFrags = 46;
    } else if (stepsTaken == 14648) {
        nextFrags = 43;
    } else if (stepsTaken < 16119) {
        stepsRem = 16119-stepsTaken;
        nextFrags = 46;
    } else if (stepsTaken == 16119) {
        nextFrags = 46;
    } else if (stepsTaken < 17660) {
        stepsRem = 17660-stepsTaken;
        nextFrags = 49;
    } else if (stepsTaken == 17660) {
        nextFrags = 49;
    } else if (stepsTaken < 19271) {
        stepsRem = 19271-stepsTaken;
        nextFrags = 52;
    } else if (stepsTaken == 19271) {
        nextFrags = 52;
    } else if (stepsTaken < 20952) {
        stepsRem = 20952-stepsTaken;
        nextFrags = 55;
    } else if (stepsTaken == 20952) {
        nextFrags = 55;
    } else if (stepsTaken < 22703) {
        stepsRem = 22703-stepsTaken;
        nextFrags = 58;
    } else if (stepsTaken == 22703) {
        nextFrags = 58;
    } else if (stepsTaken < 24524) {
        stepsRem = 24524-stepsTaken;
        nextFrags = 61;
    } else if (stepsTaken == 24524) {
        nextFrags = 61;
    }
    if (hinge == 'steps') {
        return stepsRem
    } else {
        return nextFrags
    }
}


//to do
//fix mutation observer to be less generic, triggered on a hunt
// determine a way to know if UU mode is active so the hover text only cares about the eclipse loot you can actually get from the run
//high five friends