MediaWiki:Common.js: Difference between revisions
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 = ` | ||
<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 | // Calculation | ||
| Line 66: | Line 86: | ||
var finalRate = base; | var finalRate = base; | ||
var | 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 | ||
finalRate *= (1 - | 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); | document.getElementById("finalDrop").textContent = Math.round(finalRate); | ||
}; | }; | ||
}); | }); | ||
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);
};
});