// ==UserScript==
// @name MH Region Quick Travel
// @author Warden Slayer - Warden Slayer#2010
// @namespace https://greasyfork.org/en/users/227259-wardenslayer
// @version 1.6.2
// @description Adds a travel toolbar to the HUD to make traveling between areas in the same region quicker and easier
// @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 (debug == true) {
console.log('Region Quick Travel Started');
}
loadFunction();
});
$(document).ajaxComplete(function(event,xhr,options){
//console.log(options.url);
let properties = JSON.parse(localStorage.getItem('ws.mh.travel.props'));
if (options.url == 'https://www.mousehuntgame.com/managers/ajax/users/userData.php') {
} else if (options.url == 'https://www.mousehuntgame.com/managers/ajax/mice/getstat.php') {
} else if (options.url == 'https://www.mousehuntgame.com/managers/ajax/users/userInventory.php') {
} else if (options.url == 'https://www.mousehuntgame.com/managers/ajax/users/changeenvironment.php') {
properties.previousLocation = properties.currentLocation;
localStorage.setItem('ws.mh.travel.props',JSON.stringify(properties));
loadFunction();
} else {
loadFunction();
}
});
function loadFunction() {
getData();
setTimeout(buildTravelBar, 500);
}
function getData() {
const debug = localStorage.getItem('ws.debug');
let properties = JSON.parse(localStorage.getItem('ws.mh.travel.props'));
if (properties) {
} else {
properties = {};
}
const userID = user.sn_user_id;
const dataItemOfInterest = ['region_name','not_a_real_field'];
hg.utils.User.getUserData([userID],dataItemOfInterest,function(data) {
properties.currentRegion = data[0].region_name;
properties.currentLocation = user.environment_type;
localStorage.setItem('ws.mh.travel.props',JSON.stringify(properties));
if (debug == true) {
console.log(properties);
}
});
}
function buildTravelBar() {
if ($('.travelBarContainer').length > 0) {
$('.travelBarContainer').remove();
}
const mousehuntHud = $('#hudLocationContent');
const travelBarContainer = document.createElement("div");
travelBarContainer.classList.add('travelBarContainer');
$(travelBarContainer).css({
'float': 'left',
'text-align': 'left',
'width': '97%',
'height': '25px',
'margin': '5px',
'padding': '2px',
'background': 'linear-gradient(90deg, rgba(215,215,215,1) 2%, rgba(213,213,215,1) 71%, rgba(228,228,228,1) 100%)',
'border': '2px solid black',
});
mousehuntHud.after(travelBarContainer);
let properties = JSON.parse(localStorage.getItem('ws.mh.travel.props'));
const regionAreas = getRegionLocations(properties.currentRegion,properties.previousLocation);
regionAreas.forEach(function(array) {
let thisTag = Object.keys(array)[0];
let thisName = array[thisTag];
if (thisTag == properties.currentLocation) {
} else {
const thisButton = document.createElement("button");
thisButton.id = 'regionTravelButton';
$(thisButton).attr('destination', thisTag);
$(thisButton).addClass('mousehuntActionButton small');
const title = 'Travel to '+thisName;
$(thisButton).attr('title', title);
const travelText = document.createElement('span');
$(travelText).addClass('travelText').text(thisName).css({
'font-size': '12px',
});
$(thisButton).css({
'marginRight': "4px",
});
$(thisButton).append(travelText);
travelBarContainer.append(thisButton);
}
});
if (properties.previousLocation) {
const returnButton = document.createElement("button");
returnButton.id = 'returnButton';
if (properties.previousLocation) {
$(returnButton).attr('destination', properties.previousLocation);
}
$(returnButton).addClass('mousehuntActionButton small');
const title = 'Return to previous location: '+getLocationNames(properties.previousLocation);
$(returnButton).attr('title', title);
const returnText = document.createElement('span');
$(returnText).addClass('travelText').text('Go Back').css({
'font-size': '12px',
});
$(returnButton).css({
'marginRight': "4px",
'float': 'right',
});
$(returnButton).append(returnText);
travelBarContainer.append(returnButton);
}
}
$(document).on('click', '#regionTravelButton, #returnButton', function() {
const debug = localStorage.getItem('ws.debug');
let properties = JSON.parse(localStorage.getItem('ws.mh.travel.props'));
properties.previousLocation = user.environment_type;
localStorage.setItem('ws.mh.travel.props',JSON.stringify(properties));
if (debug == true) {
console.log(properties);
}
app.pages.TravelPage.travel($(this).attr('destination'));
});
function getRegionLocations(currentRegion) {
let regionAreas = [];
let tags = [];
if (currentRegion == 'Gnawnia') {
tags = ['meadow','town_of_gnawnia','windmill','harbour','mountain'];
} else if (currentRegion == 'Valour') {
tags = ['kings_arms','tournament_hall','kings_gauntlet'];
} else if (currentRegion == 'Whisker Woods') {
tags = ['calm_clearing','great_gnarled_tree','lagoon'];
} else if (currentRegion == 'Burroughs') {
tags = ['laboratory','mousoleum','town_of_digby','bazaar','pollution_outbreak'];
} else if (currentRegion == 'Furoma') {
tags = ['training_grounds','dojo','meditation_room','pinnacle_chamber'];
} else if (currentRegion == 'Bristle Woods') {
tags = ['catacombs','forbidden_grove'];
} else if (currentRegion == 'Tribal Isles') {
tags = ['cape_clawed','elub_shore','nerg_plains','derr_dunes','jungle_of_dread','dracano','balacks_cove'];
} else if (currentRegion == 'Varmint Valley') {
tags = ['claw_shot_city','train_station','fort_rox'];
} else if (currentRegion == 'Queso Canyon') {
tags = ['queso_river','queso_plains','queso_quarry','queso_geyser'];
} else if (currentRegion == 'Rodentia') {
tags = ['ss_huntington_ii','seasonal_garden','zugzwang_tower','zugzwang_library','slushy_shoreline','iceberg','sunken_city'];
} else if (currentRegion == 'Sandtail Desert') {
tags = ['desert_warpath','desert_city','desert_oasis','lost_city','sand_dunes'];
} else if (currentRegion == 'Hollow Heights') {
tags = ['fungal_cavern','labyrinth','ancient_city','moussu_picchu','floating_islands'];
} else if (currentRegion == 'Folklore Forest') {
tags = ['foreword_farm','prologue_pond','table_of_contents'];
} else if (currentRegion == 'Rift Plane') {
tags = ['rift_gnawnia','rift_burroughs','rift_whisker_woods','rift_furoma','rift_bristle_woods','rift_valour'];
} else if (currentRegion == 'Great Winter Taiga') {
tags = ['winter_hunt_grove','winter_hunt_workshop','winter_hunt_fortress'];
}
tags.forEach(function(loc) {
const thisLocation = {};
thisLocation[loc] = getLocationNames(loc);
regionAreas.push(thisLocation);
});
return regionAreas;
}
function getLocationNames(tag) {
const locNames = {
'meadow':'Meadow',
'town_of_gnawnia':'Town of Gnawnia',
'windmill':'Windmill',
'harbour':'Harbour',
'mountain':'Mountain',
'kings_arms':"King's Arms",
'tournament_hall':'Tournament Hall',
'kings_gauntlet':"King's Gauntlet",
'calm_clearing':'Calm Clearing',
'great_gnarled_tree':'Great Gnarled Tree',
'lagoon':'Lagoon',
'laboratory':'Laboratory',
'mousoleum':'Mousoleum',
'town_of_digby':'Town of Digby',
'bazaar':'Bazaar',
'pollution_outbreak':'Toxic Spill',
'training_grounds':'Training Grounds',
'dojo':'Dojo',
'meditation_room':'Meditation Room',
'pinnacle_chamber':'Pinnacle Chamber',
'catacombs':'Catacombs',
'forbidden_grove':'Forbidden Grove',
'cape_clawed':'Cape Clawed',
'elub_shore':'Elub Shore',
'nerg_plains':'Nerg Plains',
'derr_dunes':'Derr Dunes',
'jungle_of_dread':'Jungle of Dread',
'dracano':'Dracano',
'balacks_cove':"Balack's Cove",
'claw_shot_city':'Claw Shot City',
'train_station':'Gnawnian Express Station',
'fort_rox':'Fort Rox',
'queso_river':'Queso River',
'queso_plains':'Prickly Plains',
'queso_quarry':'Cantera Quarry',
'queso_geyser':'Queso Geyser',
'ss_huntington_ii':'SSH IV',
'seasonal_garden':'Seasonal Garden',
'zugzwang_tower':"Zugzwang's Tower",
'zugzwang_library':'Crystal Library',
'slushy_shoreline':'Slushy Shoreline',
'iceberg':'Iceberg','sunken_city':'Sunken City',
'desert_warpath':'Fiery Warpath',
'desert_city':'Muridae Market',
'desert_oasis':'Living Garden',
'lost_city':'Lost City',
'sand_dunes':'Sand Dunes',
'fungal_cavern':'Fungal Cavern',
'labyrinth':'Labyrinth',
'ancient_city':'Zokor',
'moussu_picchu':'Moussu Picchu',
'floating_islands':'Floating Islands',
'foreword_farm':'Foreword Farm',
'prologue_pond':'Prologue Pond',
'table_of_contents':'Table of Contents',
'rift_gnawnia':'Gnawnia Rift',
'rift_burroughs':'Burroughs Rift',
'rift_whisker_woods':'Whisker Woods Rift',
'rift_furoma':'Furoma Rift',
'rift_bristle_woods':'Bristle Woods Rift',
'rift_valour':'Valour Rift',
'winter_hunt_grove': 'Cinnamon Hill',
'winter_hunt_workshop': 'Golem Workshop',
'winter_hunt_fortress': 'Ice Fortress',
};
return locNames[tag];
}