// ==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/* // @downloadURL none // ==/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 = $('').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().replace(',', ''),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