DH3 Real Max Global Level

Show the actual global level where each skill is maxed out at level 100

As of 2020-09-03. See the latest version.

// ==UserScript==
// @name         DH3 Real Max Global Level
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Show the actual global level where each skill is maxed out at level 100
// @author       Lasse Brustad
// @match        https://dh3.diamondhunt.co/
// @grant        none
// ==/UserScript==

/* jshint esversion:6 */

(function() {
    'use strict';

    function getLvl(skill) {
        if (window.getItem(skill + 'Unlocked') !== 1) return 0;
        const lvl = window.getLevel(window.getItem(skill + 'Xp'));
        return lvl >= 100 ? 100 : lvl;
    }

    window.getGlobalLevel = function() {
        const skills = [
            'combat',
            'magic',
            'crafting',
            'brewing',
            'woodcutting',
            'cooking',
            'farming',
            'fishing',
            'mining'
        ];

        let globalLevel = 0;
        for (let skill of skills) {
            globalLevel += getLvl(skill);
        }

        return globalLevel;
    };
})();

/*

  If you wonder why I developed this script, here's how the source code extracted
  using some tools looks like, it's just adding the level returned by "getLevel",
  but it's not checking if the level is >100

  Also, just to mention it, performace, maybe my code isn't faster as it's based on
  official source, but a little anyway, and I can improve it anyway, so keep updated!

function getGlobalLevel()
{
    var n = 0;
    var extType = "";
    extType = "combat";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "magic";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "crafting";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "brewing";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "woodcutting";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "cooking";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "farming";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "fishing";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    extType = "mining";
    if (getItem(extType + "Unlocked") == 1)
    {
        n = n + getLevel(getItem(extType + "Xp"));
    }
    return n;
};
*/