Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
//ECMA 6 not supported yet
/*var nightOwl= document.createElement('script');
nightOwl.src = 'https://cdn.jsdelivr.net/npm/@bufferhead/nightowl@0.0.14/dist/nightowl.js';
document.head.appendChild(nightOwl);
createNightowl({
defaultMode: 'dark',
toggleButtonMode: 'newState'
})*/
var weaponDPS = {
WithoutWeapon: [0,0.125,0.375,0.750,1.250,1.875,2.625,3.125],
WoodenSword: [0.125,0.250,0.500,0.875,1.375,2.000,2.750,3.250],
Stinger: [0.250,0.375,0.625,1.000,1.500,2.125,2.875,3.375],
PoisonStinger: [0.333,0.458,0.708,1.083,1.583,2.208,2.958,3.458],
IronDagger: [0.333,0.500,0.833,1.333,2.000,2.833,3.833,4.500],
SkeletonSword: [0.625,0.750,1.000,1.375,1.875,2.500,3.250,3.750],
Club: [0.667,0.750,0.917,1.167,1.500,1.917,2.417,2.750],
SpikedClub: [1.000,1.083,1.250,1.500,1.833,2.250,2.750,3.083],
Scythe: [1.000,1.125,1.375,1.750,2.250,2.875,3.625,4.125],
ScythePlus: [1.000,1.125,1.375,1.750,2.250,2.875,3.625,4.125],
StingerDagger: [0.375,0.563,0.938,1.500,2.250,3.188,4.313,5.063],
PoisonStingerDagger: [0.708,0.896,1.271,1.833,2.583,3.521,4.646,5.396],
BattleAxe: [0.875,1.000,1.250,1.625,2.125,2.750,3.500,4.000],
LongSpear: [0.583,0.667,0.833,1.083,1.417,1.833,2.333,2.667],
Trident: [0.875,1.000,1.250,1.625,2.125,2.750,3.500,4.000],
LongTrident: [0.875,1.000,1.250,1.625,2.125,2.750,3.500,4.000],
Rapier: [1.500,1.625,1.875,2.250,2.750,3.375,4.125,4.625],
PoisonRapier: [1.917,2.042,2.292,2.667,3.167,3.792,4.542,5.042],
DenseClub: [1.667,1.750,1.917,2.167,2.500,2.917,3.417,3.750],
SpikedDenseClub: [2.500,2.583,2.750,3.000,3.333,3.750,4.250,4.583],
GoldenRapier: [2.000,2.167,2.500,3.000,3.667,4.500,5.500,6.167],
PoisonGoldenRapier: [2.778,2.944,3.278,3.778,4.444,5.278,6.278,6.944],
Ballista: [1.167,1.333,1.667,2.167,2.833,3.667,4.667,5.333],
HauntedBow: [0.875,1.000,1.250,1.625,2.125,2.750,3.500,4.000]
}
function compareDPS(value,id) {
document.getElementById('compareDPST0Row'+id).innerText = Math.round(weaponDPS[value][0] * 100) / 100;
document.getElementById('compareDPST1Row'+id).innerText = Math.round(weaponDPS[value][1] * 100) / 100;
document.getElementById('compareDPST2Row'+id).innerText = Math.round(weaponDPS[value][2] * 100) / 100;
document.getElementById('compareDPST3Row'+id).innerText = Math.round(weaponDPS[value][3] * 100) / 100;
document.getElementById('compareDPST4Row'+id).innerText = Math.round(weaponDPS[value][4] * 100) / 100;
document.getElementById('compareDPST5Row'+id).innerText = Math.round(weaponDPS[value][5] * 100) / 100;
document.getElementById('compareDPST6Row'+id).innerText = Math.round(weaponDPS[value][6] * 100) / 100;
document.getElementById('compareDPST7Row'+id).innerText = Math.round(weaponDPS[value][7] * 100) / 100;
}
function addSelects(id) {
return '<select onchange="compareDPS(this.value,'+id+')">\
<option value="" disabled selected>Weapon '+id+'</option>\
<option value="WithoutWeapon">Without Weapon</option>\
<option value="WoodenSword">Wooden Sword</option>\
<option value="Stinger">Stinger</option>\
<option value="PoisonStinger">Poison Stinger</option>\
<option value="IronDagger">Iron Dagger</option>\
<option value="SkeletonSword">Skeleton Sword</option>\
<option value="Club">Club</option>\
<option value="SpikedClub">Spiked Club</option>\
<option value="Scythe">Scythe</option>\
<option value="ScythePlus">Scythe+</option>\
<option value="StingerDagger">Stinger Dagger</option>\
<option value="PoisonStingerDagger">Poison Stinger Dagger</option>\
<option value="BattleAxe">Battle Axe</option>\
<option value="LongSpear">Long Spear</option>\
<option value="Trident">Trident</option>\
<option value="LongTrident">Long Trident</option>\
<option value="Rapier">Rapier</option>\
<option value="PoisonRapier">Poison Rapier</option>\
<option value="DenseClub">Dense Club</option>\
<option value="SpikedDenseClub">Spiked Dense Club</option>\
<option value="GoldenRapier">Golden Rapier</option>\
<option value="PoisonGoldenRapier">Poison Golden Rapier</option>\
<option value="Ballista">Ballista</option>\
<option value="HauntedBow">Haunted Bow</option>\
</select>'
}
if (document.getElementById('compareSelect1')) {
document.getElementById('compareSelect1').innerHTML = addSelects(1)
}
if (document.getElementById('compareSelect2')) {
document.getElementById('compareSelect2').innerHTML = addSelects(2)
}
mw.loader.load('https://cdn.jsdelivr.net/gh/cferdinandi/tabby@12/dist/js/tabby.polyfills.min.js')
setTimeout(function(){
if (document.querySelector('[id^="dtab"]')) {
document.querySelectorAll('[id^="dtab"]').forEach(function (data) {
var ulContent = data.innerText;
var tabsArray = ulContent.split(',');
var ulElement = data;
ulElement.innerHTML = '';
tabsArray.forEach(function(tab,index) {
var liElement = document.createElement('li');
var aElement = document.createElement('a');
aElement.href = '#' + tab.toLowerCase().replace(/\s+/g, '');
aElement.textContent = tab;
if (index == 0) {aElement.setAttribute("data-tabby-default", "")}
liElement.appendChild(aElement);
ulElement.appendChild(liElement);
});
var tabs = new Tabby('#'+data.id)
})
}
if (document.querySelector('[class="hitChance"]')) {
document.querySelectorAll('[class="hitChance"]').forEach(function (data) {
var opts = data.innerText.split(',');
var accuracy = opts[0];
var defense = opts[1];
var attacker = opts[2]; //1 = player hitchance || 2 = monster hitchance || 0 or '' = either
if (attacker == 2) {
data.innerHTML = 'Accuracy: <input type="number" id="accuracy' + attacker + '" value="' + accuracy + '" disabled="disabled" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Defense: <input type="number" id="defense' + attacker + '" value="' + defense + '" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Hit Chance: <span id="hitRate' + attacker + '">100.00</span>%\
<br>\
Caves: <input type="checkbox" id="darkness' + attacker + '" style="display:inline;width:40px" onchange="hitRateCalc(' + attacker + ')">'
hitRateCalc(attacker)
} else if (attacker == 1) {
data.innerHTML = 'Accuracy: <input type="number" id="accuracy' + attacker + '" value="' + accuracy + '" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Defense: <input type="number" id="defense' + attacker + '" value="' + defense + '" disabled="disabled" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Hit Chance: <span id="hitRate' + attacker + '">100.00</span>%\
<br>\
Caves: <input type="checkbox" id="darkness' + attacker + '" style="display:inline;width:40px" onchange="hitRateCalc(' + attacker + ')">'
hitRateCalc(attacker)
} else {
data.innerHTML = 'Accuracy: <input type="number" id="accuracy' + attacker + '" value="' + accuracy + '" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Defense: <input type="number" id="defense' + attacker + '" value="' + defense + '" style="display:inline;width:40px" oninput="hitRateCalc(' + attacker + ')">\
<br>\
Hit Chance: <span id="hitRate' + attacker + '">100.00</span>%\
<br>\
Caves: <input type="checkbox" id="darkness' + attacker + '" style="display:inline;width:40px" onchange="hitRateCalc(' + attacker + ')">'
hitRateCalc(attacker)
}
})
}
},1000);
function hitRateCalc(attacker) {
var defense = document.getElementById("defense" + attacker).value;
var accuracy = document.getElementById("accuracy" + attacker).value;
var darkness = document.getElementById("darkness" + attacker).checked;
var hitChance = 0;
if (((defense / 2) - accuracy) > 4) {
hitChance = 1 / (Math.max(1, ((defense / 2) - accuracy)) + 1);
} else if (((defense / 2) - accuracy) <= 0) {
hitChance = 1;
} else {
hitChance = 1 - (((defense / 2) - accuracy) * 2 / 10);
}
var hitChancePercentage = (hitChance * 100).toFixed(2);
hitChancePercentage = darkness == true ? '50.00' : hitChancePercentage;
document.getElementById("hitRate" + attacker).innerText = hitChancePercentage;
}