DragonRealms CONVERT Calculator
Calculate the number of ranks you will end up in a Crafting skill after you CONVERT all of your Mechanical Lore.
by padhg
HTML
<h1 id="title">DragonRealms CONVERT Calculator</h1>
<ul class="list">
<li><label for="mechRanks">Mechanical Lore:</label></li>
<li><input id="mechRanks" type="number" value="0"/></li>
<li><label for="craftRanks">Crafting skill:</label></li>
<li><input id="craftRanks" type="number" value="0"/></li>
</ul>
<button id="convertButton" type="button">Convert</button>
<div id="result" class="hidden">
You will end up with approximately <span id="ranks"></span> ranks in your Crafting skill.
</div>
CSS
.hidden {
display: none;
}
.list {
list-style: none;
padding-left:0;
}
JavaScript
var ranksToBits = function (n) {
// count up 200 + 201 + 202 + ... + 200+(n-1)
// bits = ranks * (ranks + 399) / 2
return n*(n+399)/2;
},
bitsToRanks = function(totalBits) {
// find the rank based on totalBits
// ranks = (-399 + sqrt(399^2-4*2*bits)) / 2
return Math.floor((Math.sqrt(159201+8*totalBits)-399)/2)
},
calculateRanks = function () {
// read the entered skill values
var mechRanks = parseInt(document.getElementById('mechRanks').value),
craftRanks = parseInt(document.getElementById('craftRanks').value);
// return the reached number of ranks
return bitsToRanks(ranksToBits(mechRanks) + ranksToBits(craftRanks));
},
convertButton = document.getElementById('convertButton');
convertButton.addEventListener("click", function () {
// set the ranks value
document.getElementById('ranks').innerHTML = calculateRanks();
// unhide the result
document.getElementById('result').className = '';
});