Greasy Fork

MH King's Crowns+

Platinum Corwns, Locked Favorites, and More!

目前为 2019-04-10 提交的版本。查看 最新版本

// ==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