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 () {


if (mw.config.get('wgPageName') !== "Slayer_points_calculator") return;
    var container = document.getElementById("slayerCalcContainer");
    if (!container) return;


if (document.getElementById("slayerPointsCalc")) return;
    container.innerHTML =
        '<div style="margin-bottom:10px;">' +
        'Task streak: <input type="number" id="taskStreak" value="1" min="1" style="width:80px;"> ' +
        'Donator Boost: ' +
        '<select id="donatorBoost">' +
        '<option value="0">None</option>' +
        '<option value="75">Divine Donator (75%)</option>' +
        '</select>' +
        '</div>' +


const container = document.getElementById("slayerPointsCalc");
        '<table id="slayerTable" style="border-collapse: collapse; width: 400px;">' +
if (!container) return;
        '<thead>' +
        '<tr style="background:#222e45;color:white;">' +
        '<th style="padding:5px;">Task Type</th>' +
        '<th style="padding:5px;">Base Points</th>' +
        '<th style="padding:5px;">Final Points</th>' +
        '</tr>' +
        '</thead>' +
        '<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>';


container.innerHTML = `
    function calculatePoints() {
<h3>Slayer Points Calculator</h3>


<label>Boost:</label>
        var streak = parseInt(document.getElementById("taskStreak").value) || 1;
<select id="boostSelect">
        var boost = parseFloat(document.getElementById("donatorBoost").value) || 0;
<option value="1">None</option>
<option value="1.75">Divine Donator (+75%)</option>
</select>


<table class="wikitable">
        var normal = 5;
<thead>
        var tenth = 15;
<tr>
        var fiftieth = 75;
<th>Task Milestone</th>
        var hundredth = 150;
<th>Slayer Points</th>
</tr>
</thead>
<tbody id="slayerTable"></tbody>
</table>
`;


const tasks = [
        if (streak % 100 === 0) {
{ name: "Normal Task", points: 10 },
            normal = hundredth;
{ name: "Every 10th Task", points: 50 },
        } else if (streak % 50 === 0) {
{ name: "Every 50th Task", points: 150 },
            normal = fiftieth;
{ name: "Every 100th Task", points: 300 },
        } else if (streak % 10 === 0) {
{ name: "Every 250th Task", points: 500 },
            normal = tenth;
{ name: "Every 1000th Task", points: 1000 }
        }
];


function updateTable() {
        var multiplier = 1 + (boost / 100);


const multiplier = parseFloat(document.getElementById("boostSelect").value);
        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);
    }


let html = "";
    document.getElementById("taskStreak").addEventListener("input", calculatePoints);
    document.getElementById("donatorBoost").addEventListener("change", calculatePoints);


tasks.forEach(task => {
    calculatePoints();
 
const boosted = Math.floor(task.points * multiplier);
 
html += `
<tr>
<td>${task.name}</td>
<td>${boosted}</td>
</tr>
`;
 
});
 
document.getElementById("slayerTable").innerHTML = html;
 
}
 
document.getElementById("boostSelect").addEventListener("change", updateTable);
 
updateTable();


});
});

Revision as of 00:38, 7 March 2026

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

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

    container.innerHTML =
        '<div style="margin-bottom:10px;">' +
        'Task streak: <input type="number" id="taskStreak" value="1" min="1" style="width:80px;"> ' +
        '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:white;">' +
        '<th style="padding:5px;">Task Type</th>' +
        '<th style="padding:5px;">Base Points</th>' +
        '<th style="padding:5px;">Final Points</th>' +
        '</tr>' +
        '</thead>' +
        '<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>';

    function calculatePoints() {

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

        var normal = 5;
        var tenth = 15;
        var fiftieth = 75;
        var hundredth = 150;

        if (streak % 100 === 0) {
            normal = hundredth;
        } 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", calculatePoints);

    calculatePoints();

});