// ==UserScript==
// @name MH King's Crowns+
// @author Ben Loll - Warden Slayer#2302
// @namespace https://greasyfork.org/en/users/227259-wardenslayer
// @version 1.2
// @description Platinum Corwns, Locked Favorites, and More!
// @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() {
var observer = new MutationObserver(callback);
var observerOptions = {
childList: true,
attributes: false,
subtree: false,
};
observer.observe($("#tabbarContent_page_2").get(0), observerOptions);
});
//
function callback(mutationList, observer) {
mutationList.forEach((mutation) => {
switch(mutation.type) {
case 'childList':
console.log("Mutation",localStorage.getItem('haltCode'))
if (localStorage.getItem('haltCode') == "Y") {
localStorage.setItem('haltCode', "N")
break;
}
buildToolbar()
if (localStorage.getItem('ShowAllCrowns') == "Y") {
buildCrownHeaders();
sortCrowns();
localStorage.setItem('haltCode', "Y");
}
break;
}
})
};
//
function buildToolbar(){
//If we already have an hideLe Section, do not make another
if ($('.toolBar').length > 0)
return;
var toolBar = document.createElement("div");
toolBar.classList.add('toolBar')
//Lock Favs Cb
var lockFavs = document.createElement('input');
lockFavs.type = "checkbox";
lockFavs.name = "lockFavs";
lockFavs.value = "";
lockFavs.id = "lockFavs";
if (localStorage.getItem('LockFavs') == "Y") {
lockFavs.checked = "Yes";
} else {
lockFavs.checked = "";
}
var lockFavsLabel = document.createElement('label')
lockFavsLabel.htmlFor = "lockFavsLabel";
lockFavsLabel.appendChild(document.createTextNode('Lock Favorites'));
toolBar.appendChild(lockFavs);
toolBar.appendChild(lockFavsLabel);
//All Crowns Cb
var showAllCrowns = document.createElement('input');
showAllCrowns.type = "checkbox";
showAllCrowns.name = "showAllCrowns";
showAllCrowns.value = "";
showAllCrowns.id = "showAllCrowns";
showAllCrowns.checked = "";
if (localStorage.getItem('ShowAllCrowns') == "Y") {
showAllCrowns.checked = "Yes";
} else {
showAllCrowns.checked = "";
}
var showAllCrownsLabel = document.createElement('label')
showAllCrownsLabel.htmlFor = "showAllCrownsLabel";
showAllCrownsLabel.appendChild(document.createTextNode('Show Community Crowns'));
toolBar.appendChild(showAllCrowns);
toolBar.appendChild(showAllCrownsLabel);
//last
var crownBreak = $(".crownbreak").first();
if ($(".crownheader.crownheadertop").length < 1) {
var header = $(".crownbreak").last().clone();
header.insertBefore($(".crownheader.crownheadergold"))
crownBreak = $(header);
}
crownBreak.append(toolBar)
$(".toolBar").css({"float":"right"})
};
//================================= Lock Favs ====================================
//
$(document).on('change', '#lockFavs', function() {
if ((window.location.href).includes("profile.php")&&$("#tabbarContent_page_2").hasClass("active")) {
//
//check to see if the cb was JUST checked
if(this.checked) {
// Put the checked value into storage
localStorage.setItem('LockFavs', "Y");
lockFavs.checked = "Yes";
lockFavorites();
} else {
// Put the checked value into storage
localStorage.setItem('LockFavs', "N");
lockFavs.checked = "";
unlockFavorites();
}
}
});
//
function lockFavorites(){
var allMice = $(".favoriteCrownToggle.crownAction");
//var cloneMice = allMice.clone(true)
allMice.off("click");
}
function unlockFavorites(){
var allMice = $(".favoriteCrownToggle.crownAction");
allMice.on("click");
}
//================================== Crowns =====================================
//
$(document).on('change', '#showAllCrowns', function() {
if ((window.location.href).includes("profile.php")&&$("#tabbarContent_page_2").hasClass("active")) {
//
//check to see if the cb was JUST checked
if(this.checked) {
// Put the checked value into storage
localStorage.setItem('ShowAllCrowns', "Y");
showAllCrowns.checked = "Yes";
buildCrownHeaders();
sortCrowns();
} else {
// Put the checked value into storage
localStorage.setItem('ShowAllCrowns', "N");
showAllCrowns.checked = "";
hideCrowns();
}
}
});
//
function buildCrownHeaders () {
var crownBreak = $(".crownbreak").first();
var spacer1 = $(".crownbreak").last().clone().attr('id', 'spacer1');
var spacer2 = spacer1.clone().attr('id', 'spacer2');
var spacer3 = spacer1.clone().attr('id', 'spacer3');
var platinumHeader = $("<div class='crownheader crownheaderplatinum'>Platinum Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 1000 catches</div></div>")
var diamondHeader = $("<div class='crownheader crownheaderdiamond'>Diamond Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 2500 catches</div></div>")
var masterHeader = $("<div class='crownheader crownheadermaster'>Master Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 5000 catches</div></div>")
//Add Larry Later <10
//
//Plat
var allMice = $(".mousebox");
var allGold = allMice.find(".numcatches.gold");
if (allGold.filter(function(index){
if($(this).text() >= 600){
return true;
} else {
return false;
}
}).length > 0 && $(".crownheader.crownheaderplatinum").length < 1) {
platinumHeader.insertAfter(crownBreak);
spacer3.insertAfter(platinumHeader);
}
//Diamond
if (allGold.filter(function(index){
if($(this).text() >= 800){
return true;
} else {
return false;
}
}).length > 0 && $(".crownheader.crownheaderdiamond").length < 1) {
diamondHeader.insertAfter(crownBreak);
spacer1.insertAfter(diamondHeader);
}
//Master
if (allGold.filter(function(index){
if($(this).text() >= 900){
return true;
} else {
return false;
}
}).length > 0 && $(".crownheader.crownheadermaster").length < 1) {
masterHeader.insertAfter(crownBreak);
spacer2.insertAfter(masterHeader);
}
}
function sortCrowns() {
//Plat
if ($(".crownheader.crownheaderplatinum").length > 0) {
sortPlatinum()
}
//Diamond
if ($(".crownheader.crownheaderdiamond").length > 0) {
sortDiamond()
}
//Master
if ($(".crownheader.crownheadermaster").length > 0) {
sortMaster()
}
//Favorites
if ($(".crownheader.crownheadertop").length > 0) {
sortFavotitesAfterSort()
}
//================
}
function sortPlatinum() {
var allMice = $(".mousebox");
var allGold = allMice.find(".numcatches.gold");
var allPlatinum = allGold.filter(function(index) {
if ($(this).text() >= 600 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
return true;
} else if ($(this).text() >= 600 && $(".mousebox").length > 0) {
return true;
} else {
return false;
}
})
if($(".mousebox").length > 0) {
allPlatinum = allPlatinum.parent().parent().not(".mousebox.favorite");
} else {
allPlatinum = allPlatinum.parent().parent().parent();
}
var platinumHeader = $(".crownheader.crownheaderplatinum")
var goldHeader = $(".crownheader.crownheadergold")
allPlatinum.insertAfter(platinumHeader);
allPlatinum.find(".numcatches.gold").removeClass("numcatches gold").addClass("numcatches plat");
localStorage.setItem('PlatCrownCount', allPlatinum.length);
var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-localStorage.getItem('PlatCrownCount'))+")")
platinumHeader.find(".crownquantity").text("("+localStorage.getItem('PlatCrownCount')+")")
//var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
platinumHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat left top");
$(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
}
function sortDiamond() {
var allMice = $(".mousebox");
var allPlat = allMice.find(".numcatches.plat");
var allDiamond = allPlat.filter(function(index) {
if ($(this).text() >= 800 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
return true;
} else if ($(this).text() >= 800 && $(".mousebox").length > 0) {
return true;
} else {
return false;
}
})
if($(".mousebox").length > 0) {
allDiamond = allDiamond.parent().parent().not(".mousebox.favorite");
} else {
allDiamond = allDiamond.parent().parent().parent();
}
var diamondHeader = $(".crownheader.crownheaderdiamond")
var platinumHeader = $(".crownheader.crownheaderplatinum")
allDiamond.insertAfter(diamondHeader);
allDiamond.find(".numcatches.plat").removeClass("numcatches plat").addClass("numcatches diamond");
localStorage.setItem('DiamondCrownCount', allDiamond.length);
localStorage.setItem('PlatCrownCount',parseInt(localStorage.getItem('PlatCrownCount'),10)-allDiamond.length);
platinumHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('PlatCrownCount'),10)+")")
diamondHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('DiamondCrownCount'),10)+")")
//var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
diamondHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat left top");
$(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
}
function sortMaster() {
var allMice = $(".mousebox");
var allDiamond = allMice.find(".numcatches.diamond");
var allMaster = allDiamond.filter(function(index) {
if ($(this).text() >= 900 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
return true;
} else if ($(this).text() >= 900 && $(".mousebox").length > 0) {
return true;
} else {
return false;
}
});
if($(".mousebox").length > 0) {
allMaster = allMaster.parent().parent().not(".mousebox.favorite");
} else {
allMaster = allMaster.parent().parent().parent();
};
var masterHeader = $(".crownheader.crownheadermaster")
var diamondHeader = $(".crownheader.crownheaderdiamond")
allMaster.insertAfter(masterHeader);
allMaster.find(".numcatches.diamond").removeClass("numcatches diamond").addClass("numcatches master");
localStorage.setItem('MasterCrownCount', allMaster.length);
localStorage.setItem('DiamondCrownCount',parseInt(localStorage.getItem('DiamondCrownCount'),10)-allMaster.length);
diamondHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('DiamondCrownCount'),10)+")")
masterHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('MasterCrownCount'),10)+")")
//var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
masterHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat left top");
$(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
}
function sortFavotitesAfterSort() {
var topHeader = $(".crownheader.crownheadertop")
var allMice = $(".mousebox.favorite");
var allFavorites = allMice.find(".numcatches.gold");
var nonFavs = $(".mousebox").not(".mousebox favorite");
var goldHeader = $(".crownheader.crownheadergold")
var platinumHeader = $(".crownheader.crownheaderplatinum")
var diamondHeader = $(".crownheader.crownheaderdiamond")
var masterHeader = $(".crownheader.crownheadermaster")
var seen = {};
allFavorites.each(function() {
var txt = $(this).text();
if (seen[txt]) {
//move fav to new crown class
if (txt >= 900) {
$(this).parent().parent().insertAfter(masterHeader)
$(this).removeClass("numcatches gold").addClass("numcatches master")
localStorage.setItem('MasterCrownCount', parseInt(localStorage.getItem('MasterCrownCount'),10)+1);
var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
masterHeader.find(".crownquantity").text("("+localStorage.getItem('MasterCrownCount')+")");
$(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
var masterResult = filterOutTopFavs($(".numcatches.master").parent().find(".name"))
masterResult = masterResult.parent().find(".numcatches.master")
var masterArray = sortAcsending(masterResult);
masterArray.every(function(cell) {
$(cell).parent().parent().detach().insertAfter(masterHeader);
return true;
})
} else if (txt >= 800) {
$(this).parent().parent().insertAfter(diamondHeader)
$(this).removeClass("numcatches gold").addClass("numcatches diamond")
localStorage.setItem('DiamondCrownCount', parseInt(localStorage.getItem('DiamondCrownCount'),10)+1);
var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
diamondHeader.find(".crownquantity").text("("+localStorage.getItem('DiamondCrownCount')+")");
$(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
var diamondResult = filterOutTopFavs($(".numcatches.diamond").parent().find(".name"))
diamondResult = diamondResult.parent().find(".numcatches.diamond")
var diamondArray = sortAcsending(diamondResult);
diamondArray.every(function(cell) {
$(cell).parent().parent().detach().insertAfter(diamondHeader);
return true;
})
} else if (txt >= 600) {
$(this).parent().parent().insertAfter(platinumHeader)
$(this).removeClass("numcatches gold").addClass("numcatches plat")
localStorage.setItem('PlatCrownCount', parseInt(localStorage.getItem('PlatCrownCount'),10)+1);
var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
platinumHeader.find(".crownquantity").text("("+localStorage.getItem('PlatCrownCount')+")");
$(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
var platResult = filterOutTopFavs($(".numcatches.plat").parent().find(".name"))
platResult = platResult.parent().find(".numcatches.plat")
var platArray = sortAcsending(platResult);
platArray.every(function(cell) {
$(cell).parent().parent().detach().insertAfter(platinumHeader);
return true;
})
}
} else {
//change top fav to new crown class only
if (txt >= 900) {
$(this).removeClass("numcatches gold").addClass("numcatches master")
$(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
} else if (txt >= 800) {
$(this).removeClass("numcatches gold").addClass("numcatches diamond")
$(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
} else if (txt >= 600) {
$(this).removeClass("numcatches gold").addClass("numcatches plat")
$(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png') no-repeat right top");
}
seen[txt] = true;
}
});
}
//================================================================ HIDE
function hideCrowns() {
var allMice = $(".mousebox");
var allPlat = allMice.find(".numcatches.plat");
var allDiamond = allMice.find(".numcatches.diamond");
var allMaster = allMice.find(".numcatches.master");
var goldHeader = $(".crownheader.crownheadergold")
var platinumHeader = $(".crownheader.crownheaderplatinum")
var diamondHeader = $(".crownheader.crownheaderdiamond")
var masterHeader = $(".crownheader.crownheadermaster")
removeTheseCrowns(allMaster);
removeTheseCrowns(allDiamond);
removeTheseCrowns(allPlat);
allPlat.removeClass("numcatches plat").addClass("numcatches gold");
allDiamond.removeClass("numcatches diamond").addClass("numcatches gold");
allMaster.removeClass("numcatches master").addClass("numcatches gold");
var result = filterOutTopFavs($(".numcatches.gold").parent().find(".name"))
result = result.parent().find(".numcatches.gold")
var array = sortAcsending(result);
array.every(function(cell) {
$(cell).parent().parent().detach().insertAfter(goldHeader);
return true;
})
goldHeader.find(".crownquantity").text("("+result.length+")")
$(".crownheader.crownheaderplatinum").remove();
$(".crownheader.crownheaderdiamond").remove();
$(".crownheader.crownheadermaster").remove();
$("#spacer1").remove();
$("#spacer2").remove();
$("#spacer3").remove();
}
function removeTheseCrowns(elements) {
var goldHeader = $(".crownheader.crownheadergold")
var crown = elements.attr("class")
if (crown == "numcatches plat") {
crown = ".numcatches.plat"
} else if (crown == "numcatches diamond") {
crown = ".numcatches.diamond"
} else if (crown == "numcatches master") {
crown = ".numcatches.master"
}
var result = filterOutTopFavs(elements.parent().find(".name"));
result = result.parent().find(crown)
result.parent().parent().detach().insertAfter(goldHeader);
}
function filterOutTopFavs(elements) {
var seen = {};
var result = elements.filter(function() {
var txt = $(this).text();
if (seen[txt]) {
return true;
} else {
seen[txt] = true;
if ($(this).parent().parent().hasClass("mousebox favorite")) {
return false;
} else {
return true;
}
}
})
return result;
}
function sortAcsending(result) {
var array = result.toArray();
array = array.sort(function(a,b) {
a = parseInt($(a).text(),10)
b = parseInt($(b).text(),10)
return a-b;
});
return array;
}
//TO DO
//add favorite link is gone using mousebox with crowns showing
//MHCC /+90% crowned ranks?
//Fix lock code