MediaWiki:SlayerPointsCalc.js: Difference between revisions

From Roat Pkz
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
mw.hook('wikipage.content').add(function () {
mw.hook('wikipage.content').add(function () {
    // Only run on this page
    if (mw.config.get('wgPageName') !== "Slayer_points_calculator") return;


     var container = document.getElementById("slayerCalcContainer");
     var container = document.getElementById("slayerCalcContainer");
Line 6: Line 9:
     container.innerHTML =
     container.innerHTML =
         '<div style="margin-bottom:10px;">' +
         '<div style="margin-bottom:10px;">' +
        'Task streak: <input type="number" id="taskStreak" value="1" min="1" style="width:80px;"> ' +
         'Donator Boost: ' +
         'Donator Boost: ' +
         '<select id="donatorBoost">' +
         '<select id="donatorBoost">' +
         '<option value="0">None</option>' +
         '<option value="0">None</option>' +
         '<option value="75">Divine Donator (75%)</option>' +
         '<option value="75">Divine Donator (+75%)</option>' +
         '</select>' +
         '</select>' +
         '</div>' +
         '</div>' +
 
         '<table id="slayerTable" style="border-collapse:collapse; width:400px;">' +
         '<table id="slayerTable" style="border-collapse: collapse; width: 400px;">' +
         '<thead>' +
         '<thead>' +
         '<tr style="background:#222e45;color:white;">' +
         '<tr style="background:#222e45;color:#fff;">' +
         '<th style="padding:5px;">Task Type</th>' +
         '<th style="padding:5px;text-align:left;">Task</th>' +
         '<th style="padding:5px;">Base Points</th>' +
         '<th style="padding:5px;text-align:center;">Base Points</th>' +
         '<th style="padding:5px;">Final Points</th>' +
         '<th style="padding:5px;text-align:center;">Final Points</th>' +
         '</tr>' +
         '</tr>' +
         '</thead>' +
         '</thead>' +
         '<tbody>' +
         '<tbody></tbody>' +
        '<tr><td style="padding:5px;">Normal Task</td><td id="baseNormal">5</td><td id="finalNormal">5</td></tr>' +
        '<tr><td style="padding:5px;">10th Task</td><td id="base10">15</td><td id="final10">15</td></tr>' +
        '<tr><td style="padding:5px;">50th Task</td><td id="base50">75</td><td id="final50">75</td></tr>' +
        '<tr><td style="padding:5px;">100th Task</td><td id="base100">150</td><td id="final100">150</td></tr>' +
        '</tbody>' +
         '</table>';
         '</table>';


     function calculatePoints() {
     var milestones = [
        {name:"Normal task", points:15},
        {name:"10th task", points:75},
        {name:"50th task", points:225},
        {name:"100th task", points:375},
        {name:"250th task", points:525},
        {name:"1000th task", points:750}
    ];
 
    var tbody = document.querySelector("#slayerTable tbody");
 
    milestones.forEach(function(milestone, index){
 
        var row = tbody.insertRow();
        row.style.background = index % 2 ? "#222e45" : "#313e59";
        row.style.color = "#fff";
 
        var cell1 = row.insertCell();
        cell1.textContent = milestone.name;
        cell1.style.padding = "5px";
 
        var cell2 = row.insertCell();
        cell2.textContent = milestone.points;
        cell2.style.textAlign = "center";
 
        var cell3 = row.insertCell();
        cell3.id = "final_" + index;
        cell3.style.textAlign = "center";
 
    });
 
    function updatePoints(){


        var streak = parseInt(document.getElementById("taskStreak").value) || 1;
         var boost = parseFloat(document.getElementById("donatorBoost").value);
         var boost = parseFloat(document.getElementById("donatorBoost").value) || 0;


         var normal = 5;
         milestones.forEach(function(milestone, index){
        var tenth = 15;
        var fiftieth = 75;
        var hundredth = 150;


        if (streak % 100 === 0) {
            var final = milestone.points * (1 + boost / 100);
             normal = hundredth;
             document.getElementById("final_" + index).textContent = Math.floor(final);
        } else if (streak % 50 === 0) {
            normal = fiftieth;
        } else if (streak % 10 === 0) {
            normal = tenth;
        }


         var multiplier = 1 + (boost / 100);
         });


        document.getElementById("finalNormal").textContent = Math.floor(5 * multiplier);
        document.getElementById("final10").textContent = Math.floor(15 * multiplier);
        document.getElementById("final50").textContent = Math.floor(75 * multiplier);
        document.getElementById("final100").textContent = Math.floor(150 * multiplier);
     }
     }


    document.getElementById("taskStreak").addEventListener("input", calculatePoints);
     document.getElementById("donatorBoost").addEventListener("change", updatePoints);
     document.getElementById("donatorBoost").addEventListener("change", calculatePoints);


     calculatePoints();
     updatePoints();


});
});

Revision as of 00:39, 7 March 2026

mw.hook('wikipage.content').add(function () {

    // Only run on this page
    if (mw.config.get('wgPageName') !== "Slayer_points_calculator") return;

    var container = document.getElementById("slayerCalcContainer");
    if (!container) return;

    container.innerHTML =
        '<div style="margin-bottom:10px;">' +
        'Donator Boost: ' +
        '<select id="donatorBoost">' +
        '<option value="0">None</option>' +
        '<option value="75">Divine Donator (+75%)</option>' +
        '</select>' +
        '</div>' +
        '<table id="slayerTable" style="border-collapse:collapse; width:400px;">' +
        '<thead>' +
        '<tr style="background:#222e45;color:#fff;">' +
        '<th style="padding:5px;text-align:left;">Task</th>' +
        '<th style="padding:5px;text-align:center;">Base Points</th>' +
        '<th style="padding:5px;text-align:center;">Final Points</th>' +
        '</tr>' +
        '</thead>' +
        '<tbody></tbody>' +
        '</table>';

    var milestones = [
        {name:"Normal task", points:15},
        {name:"10th task", points:75},
        {name:"50th task", points:225},
        {name:"100th task", points:375},
        {name:"250th task", points:525},
        {name:"1000th task", points:750}
    ];

    var tbody = document.querySelector("#slayerTable tbody");

    milestones.forEach(function(milestone, index){

        var row = tbody.insertRow();
        row.style.background = index % 2 ? "#222e45" : "#313e59";
        row.style.color = "#fff";

        var cell1 = row.insertCell();
        cell1.textContent = milestone.name;
        cell1.style.padding = "5px";

        var cell2 = row.insertCell();
        cell2.textContent = milestone.points;
        cell2.style.textAlign = "center";

        var cell3 = row.insertCell();
        cell3.id = "final_" + index;
        cell3.style.textAlign = "center";

    });

    function updatePoints(){

        var boost = parseFloat(document.getElementById("donatorBoost").value);

        milestones.forEach(function(milestone, index){

            var final = milestone.points * (1 + boost / 100);
            document.getElementById("final_" + index).textContent = Math.floor(final);

        });

    }

    document.getElementById("donatorBoost").addEventListener("change", updatePoints);

    updatePoints();

});