Melvor Sort By Type

Overrides melvor's item sort algorithm to something more logical

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name		Melvor Sort By Type
// @namespace	http://tampermonkey.net/
// @version		0.01/SVN?1354
// @description Overrides melvor's item sort algorithm to something more logical
// @author		mootykins
// @match		https://*.melvoridle.com/*
// @exclude		https://wiki.melvoridle.com*
// @exclude		https://*.melvoridle.com/index.php
// @noframes
// @license unlicense
// @grant		none
// ==/UserScript==
// Loading code by GMiclotte
function sortScript() {
    if (window.SortScript !== undefined) {
        console.error('SortBank is already loaded!');
    } else {
        loadSortScript();
    }

    function loadSortScript(){
      window.SortScript = {}
      sortBank = function() {
        bank.sort((a,b) => {
          let a_full = items[a.id];
          let b_full = items[b.id];
          if(a_full.category == b_full.category){
            if(a_full.type == b_full.type){
              if(typeof(a_full.tier) !== 'undefined' && typeof(b_full.tier) !== 'undefined'){
                if(a_full.tier == b_full.tier){
                  return a.sellsFor < b.sellsFor;                  
                }else{
                  return a_full.tier < b_full.tier;
                }
              }else{
                return a.sellsFor < b.sellsFor;
              }
            }else{
              return a_full.type < b_full.type;
            }
          }else{
            return a_full.category < b_full.category;
          }
        });
        loadBank();
      }
    }
}

// inject the script
(function () {
    function injectScript(main) {
        const sortScriptElement = document.createElement('script');
        sortScriptElement.textContent = `try {(${main})();} catch (e) {console.log(e);}`;
        document.body.appendChild(sortScriptElement).parentNode.removeChild(sortScriptElement);
    }

    function loadScript() {
        if (typeof(confirmedLoaded) !== 'undefined' && confirmedLoaded) {
            // Only load script after game has opened
            clearInterval(sortScriptLoader);
            injectScript(sortScript);
        }
    }

    const sortScriptLoader = setInterval(loadScript, 200);
})();