MediaWiki:Common.js: Difference between revisions

From Roat Pkz
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
// --- DROPRATE CALCULATOR ---
// --- DROPRATE CALCULATOR (Table Version) ---
mw.hook('wikipage.content').add(function () {
mw.hook('wikipage.content').add(function () {
     var container = document.getElementById("dropCalcContainer");
     var container = document.getElementById("dropCalcContainer");
     if (!container) return;
     if (!container) return;


     // Build calculator HTML
     // Build calculator HTML using a table
     container.innerHTML =
     container.innerHTML = `
         '<div style="margin:10px 0;">' +
         <table style="border-collapse:collapse;margin:10px 0;width:400px;">
             '<label>Base Drop Rate: <input type="number" id="baseRate" value="1000" style="width:80px;"></label><br><br>' +
             <tr>
                <td>Base Drop Rate:</td>
                <td><input type="number" id="baseRate" value="1000" style="width:80px;"></td>
            </tr>
            <tr>
                <td>Donator Rank Bonus:</td>
                <td>
                    <select id="donatorBonus">
                        <option value="0">None</option>
                        <option value="15">Donator 15%</option>
                        <option value="25">Super Donator 25%</option>
                        <option value="30">Extreme Donator 30%</option>
                        <option value="35">Legendary Donator 35%</option>
                        <option value="40">Royal Donator 40%</option>
                        <option value="45">Divine Donator 45%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Monster Slayer Perk:</td>
                <td>
                    <select id="slayerBonus">
                        <option value="0">None</option>
                        <option value="10">10%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Collector's Ring Bonus:</td>
                <td>
                    <select id="ringBonus">
                        <option value="0">None</option>
                        <option value="3">3%</option>
                        <option value="6">6%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Skull Bonus:</td>
                <td>
                    <select id="skullBonus">
                        <option value="0">None</option>
                        <option value="20">20%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Voting Bonus:</td>
                <td>
                    <select id="voteBonus">
                        <option value="0">None</option>
                        <option value="20">20%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align:center;">
                    <button id="calcDropBtn" style="margin-top:10px;">Calculate Drop Rate</button>
                </td>
            </tr>
        </table>


            '<label>Donator Rank Bonus: ' +
        <div style="margin-top:10px;font-weight:bold;">
                '<select id="donatorBonus">' +
             Final Drop Rate: <span id="finalDrop">0</span>
                    '<option value="0">None</option>' +
        </div>
                    '<option value="15">Donator 15%</option>' +
         <table id="dropSteps" style="margin-top:10px;border-collapse:collapse;width:400px;font-size:90%;color:#555;"></table>
                    '<option value="25">Super Donator 25%</option>' +
    `;
                    '<option value="30">Extreme Donator 30%</option>' + 
                    '<option value="35">Legendary Donator 35%</option>' +
                    '<option value="40">Royal Donator 40%</option>' +
                    '<option value="45">Divine Donator 45%</option>' +
                '</select>' +
            '</label><br><br>' +
 
            '<label>Monster Slayer Perk: ' +
                '<select id="slayerBonus">' +
                    '<option value="0">None</option>' +
                    '<option value="10">10%</option>' +
                '</select>' +
            '</label><br><br>' +
 
            '<label>Collector\'s Ring Bonus: ' +
                '<select id="ringBonus">' +
                    '<option value="0">None</option>' +
                    '<option value="3">3%</option>' +
                    '<option value="6">6%</option>' +
                '</select>' +
            '</label><br><br>' +
 
            '<label>Skull Bonus: ' +
                '<select id="skullBonus">' +
                    '<option value="0">None</option>' +
                    '<option value="20">20%</option>' +
                '</select>' +
            '</label><br><br>' +
 
             '<label>Voting Bonus: ' +
                '<select id="voteBonus">' +
                    '<option value="0">None</option>' +
                    '<option value="20">20%</option>' +
                '</select>' +
            '</label><br><br>' +
 
            '<button id="calcDropBtn">Calculate Drop Rate</button>' +
        '</div>' +
        '<div>Final Drop Rate: <span id="finalDrop">0</span></div>' +
         '<div id="dropSteps" style="margin-top:10px;font-size:90%;color:#555;"></div>';


     // Calculation
     // Calculation
Line 66: Line 86:


         var finalRate = base;
         var finalRate = base;
         var stepsHTML = '<strong>Step-by-Step Drop Rate:</strong><br>';
         var stepsTable = document.getElementById("dropSteps");
 
         stepsTable.innerHTML = `
         // Apply Donator
            <tr style="background:#eee;"><th>Bonus</th><th>Percentage</th><th>Drop Rate</th></tr>
        finalRate *= (1 - donator / 100);
         `;
        stepsHTML += 'After Donator Bonus (' + donator + '%): ' + Math.round(finalRate) + '<br>';
 
        // Apply Monster Slayer
        finalRate *= (1 - slayer / 100);
        stepsHTML += 'After Monster Slayer Bonus (' + slayer + '%): ' + Math.round(finalRate) + '<br>';
 
        // Apply Collector's Ring
        finalRate *= (1 - ring / 100);
         stepsHTML += 'After Collector\'s Ring Bonus (' + ring + '%): ' + Math.round(finalRate) + '<br>';


         // Apply Skull Bonus
         // Helper to add a row for each step
         finalRate *= (1 - skull / 100);
         function addStep(name, perc) {
        stepsHTML += 'After Skull Bonus (' + skull + '%): ' + Math.round(finalRate) + '<br>';
            finalRate *= (1 - perc / 100);
            var row = document.createElement("tr");
            row.innerHTML = `<td>${name}</td><td>${perc}%</td><td>${Math.round(finalRate)}</td>`;
            stepsTable.appendChild(row);
        }


         // Apply Voting Bonus
         addStep("Donator Bonus", donator);
         finalRate *= (1 - vote / 100);
         addStep("Monster Slayer", slayer);
         stepsHTML += 'After Voting Bonus (' + vote + '%): ' + Math.round(finalRate) + '<br>';
         addStep("Collector's Ring", ring);
        addStep("Skull Bonus", skull);
        addStep("Voting Bonus", vote);


         document.getElementById("finalDrop").textContent = Math.round(finalRate);
         document.getElementById("finalDrop").textContent = Math.round(finalRate);
        document.getElementById("dropSteps").innerHTML = stepsHTML;
     };
     };
});
});

Revision as of 03:17, 5 March 2026

// --- DROPRATE CALCULATOR (Table Version) ---
mw.hook('wikipage.content').add(function () {
    var container = document.getElementById("dropCalcContainer");
    if (!container) return;

    // Build calculator HTML using a table
    container.innerHTML = `
        <table style="border-collapse:collapse;margin:10px 0;width:400px;">
            <tr>
                <td>Base Drop Rate:</td>
                <td><input type="number" id="baseRate" value="1000" style="width:80px;"></td>
            </tr>
            <tr>
                <td>Donator Rank Bonus:</td>
                <td>
                    <select id="donatorBonus">
                        <option value="0">None</option>
                        <option value="15">Donator 15%</option>
                        <option value="25">Super Donator 25%</option>
                        <option value="30">Extreme Donator 30%</option>
                        <option value="35">Legendary Donator 35%</option>
                        <option value="40">Royal Donator 40%</option>
                        <option value="45">Divine Donator 45%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Monster Slayer Perk:</td>
                <td>
                    <select id="slayerBonus">
                        <option value="0">None</option>
                        <option value="10">10%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Collector's Ring Bonus:</td>
                <td>
                    <select id="ringBonus">
                        <option value="0">None</option>
                        <option value="3">3%</option>
                        <option value="6">6%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Skull Bonus:</td>
                <td>
                    <select id="skullBonus">
                        <option value="0">None</option>
                        <option value="20">20%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Voting Bonus:</td>
                <td>
                    <select id="voteBonus">
                        <option value="0">None</option>
                        <option value="20">20%</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2" style="text-align:center;">
                    <button id="calcDropBtn" style="margin-top:10px;">Calculate Drop Rate</button>
                </td>
            </tr>
        </table>

        <div style="margin-top:10px;font-weight:bold;">
            Final Drop Rate: <span id="finalDrop">0</span>
        </div>
        <table id="dropSteps" style="margin-top:10px;border-collapse:collapse;width:400px;font-size:90%;color:#555;"></table>
    `;

    // Calculation
    var btn = document.getElementById("calcDropBtn");
    btn.onclick = function () {
        var base = parseFloat(document.getElementById("baseRate").value) || 0;
        var donator = parseFloat(document.getElementById("donatorBonus").value) || 0;
        var slayer = parseFloat(document.getElementById("slayerBonus").value) || 0;
        var ring = parseFloat(document.getElementById("ringBonus").value) || 0;
        var skull = parseFloat(document.getElementById("skullBonus").value) || 0;
        var vote = parseFloat(document.getElementById("voteBonus").value) || 0;

        var finalRate = base;
        var stepsTable = document.getElementById("dropSteps");
        stepsTable.innerHTML = `
            <tr style="background:#eee;"><th>Bonus</th><th>Percentage</th><th>Drop Rate</th></tr>
        `;

        // Helper to add a row for each step
        function addStep(name, perc) {
            finalRate *= (1 - perc / 100);
            var row = document.createElement("tr");
            row.innerHTML = `<td>${name}</td><td>${perc}%</td><td>${Math.round(finalRate)}</td>`;
            stepsTable.appendChild(row);
        }

        addStep("Donator Bonus", donator);
        addStep("Monster Slayer", slayer);
        addStep("Collector's Ring", ring);
        addStep("Skull Bonus", skull);
        addStep("Voting Bonus", vote);

        document.getElementById("finalDrop").textContent = Math.round(finalRate);
    };
});