HL level calculator

Permite visualizar información extendida en el perfíl sobre el nivel y los apartados que influyen en él.

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name        HL level calculator
// @namespace   HLN
// @include     http://www.harrylatino.org/user/*
// @version     10
// @description:en Permite visualizar información extendida en el perfíl sobre el nivel y los apartados que influyen en él.
// @grant       none
// @description Permite visualizar información extendida en el perfíl sobre el nivel y los apartados que influyen en él.
// ==/UserScript==

var info = ["0","0","0","0","0","0","0","0","0"];
var mConocimientos = ["0","3","3","3","4","4","4","5","5","5","6","6","6","7","7","7","8","8","8","9","9","9","10","10","10","11","11","11","12","12","12","13","13","13","14","14","14","15","15","15","16","16","16","17","17","17","18","18","18","19","19"];
var w = document.getElementById("pane_core:info").getElementsByClassName("row_title");
var w2 = document.getElementById("pane_core:info").getElementsByClassName("row_data");
var x = document.getElementById("custom_fields_personaje").getElementsByClassName("row_title");
var y = document.getElementById("custom_fields_personaje").getElementsByClassName("row_data");
var posteos, galeones, objetos, criaturas, conocimientos, habilidades, poderes, medallas, total, nivel, restante, mh, mcr;
var navbar, newElement;

//Función necesaria para poder contar los conocimientos y habilidades,

function occurrences(string, subString, allowOverlapping) {

    string += "";
    subString += "";
    if (subString.length <= 0) return (string.length + 1);

    var n = 0,
        pos = 0,
        step = allowOverlapping ? 1 : subString.length;

    while (true) {
        pos = string.indexOf(subString, pos);
        if (pos >= 0) {
            ++n;
            pos += step;
        } else break;
    }
    return n;
}


//Recolección de la información del perfíl
//ToDo: Consultar sobre los libros de criaturas

var z = 0;

while(z<x.length){
    
    if(w[z].innerHTML == "Mensajes activos"){
        info[0] = w2[z].innerHTML;
        info[0] = info[0].replace('.','');
    }
    else if(w[z].innerHTML == "Active Posts"){
        info[0] = w2[z].innerHTML;
        info[0] = info[0].replace(',','');
    }
    
    if(x[z].innerHTML == "Galeones"){
        info[1] = y[z].innerHTML;
    }
    else if(x[z].innerHTML == "Puntos de Poder en Objetos"){
        info[2] = y[z].innerHTML;
    }
    else if(x[z].innerHTML == "Puntos de Poder en Criaturas"){
        info[3] = y[z].innerHTML;
    }
    else if(x[z].innerHTML == "Conocimientos"){
            if(y[z].innerHTML.indexOf("<br>") > -1){info[4] = (occurrences(y[z].innerHTML, "<br>")+1);}
            else{info[4] = "1";}
    }
    else if(x[z].innerHTML == "Habilidades Mágicas"){
        if(y[z].innerHTML.indexOf("<br>") > -1){info[5] = (occurrences(y[z].innerHTML, "<br>")+1);}
        else{info[5] = "1";}
    }
    else if(x[z].innerHTML == "Libros de Hechizos"){
        var ts = y[z].innerHTML;
        if(ts.indexOf("(N.") > -1)
            {
                var p = ts.indexOf("(N.");
                var f = ts.substring((p+3), ts.indexOf(')'));
                info[6] = f;
            }
    }
    else if(x[z].innerHTML == "Medallas"){
        info[7] = y[z].innerHTML;
    }
    else if(x[z].innerHTML == "Poderes de Criaturas"){
        var tString = y[z].innerHTML.replace(/\s+/g, '');
        info[8] = tString.substring(0,1);
    }

    z++;
}


//Cálculos arcaicos de la experiencia
//ToDo: Cambiar la fórmula de poderes a un array.

total = 0;
if(info[0]*5>50000){posteos = 50000;}else{posteos = info[0]*5;}
if(info[1]*0.2>50000){galeones = 50000;}else{galeones = info[1]*0.2;}
if(info[2]*25>75000){objetos = 75000;}else{objetos = info[2]*25;}
if(info[3]*25>75000){criaturas = 75000;}else{criaturas = info[3]*25;}
if(info[4]*4000>76000){conocimientos = 76000;}else{conocimientos = info[4]*4000;}
if(info[5]*12000>75000){habilidades = 84000;}else{habilidades = info[5]*12000;}
if(info[6] == "1"){poderes =1;}else if(info[6] == "5"){poderes=2;}else if(info[6] == "7"){poderes=3;}else if(info[6] == "10"){poderes=4;}else if(info[6] == "15"){poderes=5;}else if(info[6] == "20"){poderes=6;}else if(info[6] == "25"){poderes=7;}else if(info[6] == "30"){poderes=8;}else if(info[6] == "35"){poderes=9;}else if(info[6] == "40"){poderes=10;}else{poderes=0;}
if(info[8] == "2"){poderes = poderes+2;} else if (info[8] == "1"){poderes++;}
if(poderes*6000>72000){poderes = 72000;}else{poderes = poderes*6000;}
medallas = info[7]*1;
total = (posteos+galeones+objetos+criaturas+conocimientos+habilidades+poderes+medallas);
if(Math.round(total/10000)>0 && Math.round(total/10000)<51){nivel = Math.round(total/10000);}else if(Math.round(total/10000)>50){nivel = 50;} else{nivel = 1;}
if(nivel<50){restante = (((nivel+1)*10000)-5000)-total;}else{restante = 0;}


//Norma del nivel máximo de criaturas

if(nivel>4 && nivel<10){
    mcr = "XX";
}
else if(nivel>9 && nivel<20){
    mcr = "XXX";
}
else if(nivel>19 && nivel<40){
    mcr = "XXXX";
}
else if(nivel>39){
    mcr = "XXXXX";
}
else{
    mcr = "X";
}

//Norma del número máximo de habilidades

mh = 0;
if(nivel>14 && conocimientos>4){
    mh = "1";
}
if(nivel>19 && conocimientos>5){
    mh = "2";
}
if(nivel>24 && conocimientos>6){
    mh = "3";
}
if(nivel>29 && conocimientos>7){
    mh = "4";
}
if(nivel>34 && conocimientos>8){
    mh = "5";
}
if(nivel>39 && conocimientos>9){
    mh = "Libre";
}

//Impresión en el perfíl.
//ToDo: Mejorar el formato.

navbar = document.getElementById('custom_fields_personaje');
if (navbar) {
    newElement = document.createElement('div');
    newElement.innerHTML = '<div class="general_box clearfix"> ' +
    '<h3 class="bar">Información adicional</h3><br><ul class="ipsList_data clearfix"> ' +
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Nivel Mágico Actualizado</span><span class="row_data">'+nivel+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Experiencia para siguiente nivel</span><span class="row_data">'+Math.round(restante,2)+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Max. Conocimientos</span><span class="row_data">'+mConocimientos[nivel]+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Max. Habilidades</span><span class="row_data">'+mh+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Nivel max de criaturas</span><span class="row_data">'+mcr+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Total experiencia</span><span class="row_data">'+total+'</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<h3 class="bar">Puntos de experiencia acumulados</h3><br>'+
    '<li><span class="row_title">Posteos</span><span class="row_data">'+posteos+'/'+'50000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Galeones</span><span class="row_data">'+Math.round(galeones,2)+'/'+'50000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Objetos</span><span class="row_data">'+objetos+'/'+'75000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Criaturas</span><span class="row_data">'+criaturas+'/'+'75000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Conocimientos</span><span class="row_data">'+conocimientos+'/'+'76000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Habilidades</span><span class="row_data">'+habilidades+'/'+'84000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Poderes</span><span class="row_data">'+poderes+'/'+'72000.</span></li>'+
    '<li class="clear clearfix"></li>'+
    '<li><span class="row_title">Medallas</span><span class="row_data">'+medallas+'/'+'Ilimitado.</span></li>'+
    '</ul></div>';
    navbar.parentNode.insertBefore(newElement, navbar.nextSibling);
}

var oldTitle = document.title;
document.title = "[" + nivel + "] " + oldTitle;