MediaWiki:Calculator.js/Swing Speed Increase.js

Note: After saving, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Clear the cache in Tools → Preferences
function SwingSpeedCalculator() {

    var calculate = function(stamina, ssi, weap, label) {

            var stam_val = Number(stamina.value);
            var ssi_val = Number(ssi.value);
            var weap_val = Number(weap.value);
            var Final_SSI = 0;

            if (ssi_val > 60) {
                    ssi_val = 60;
            }

            if (stam_val >= 10 &&  ssi_val >= 0 && weap_val > 0) {

                Final_SSI = Math.floor(((weap_val * 4) - Math.floor(stam_val / 30)) * (100 / (100 + ssi_val)))/4;

                if (Final_SSI < 1.25) {
                    Final_SSI = 1.25;
                }

                label.removeChild(label.lastChild);
                label.appendChild(document.createTextNode(Final_SSI.toString() + ' Seconds/Swing'));
            }
	    else {
                label.removeChild(label.lastChild);
                label.appendChild(document.createTextNode('--- Seconds/Swing'));
	    }
    };

    var calcTableRow = document.createElement('tr');
    var calcTableCell = document.createElement('td');
    var Stamina = document.createElement('input');
    var SSI_Bonus = document.createElement('input');
    var totalPriceInput = document.createElement('input');
    var Weap_List = document.createElement("select");
    var calculateButton = document.createElement('input');
    var Final_SSI_Label = document.createElement('div');

    calcTableCell.style.textAlign = 'right';
    calcTableCell.appendChild(document.createTextNode('Weapon:'));
    calcTableRow.appendChild(calcTableCell);

    var Weapons = new Array("Select Weapon","Bare Hands","Assassin Spike","Axe","Bardiche","Battle Axe","Black Staff","Bladed Staff","Bloodblade","Bokuto","Bone Harvester","Boomerang","Bow","Broadsword","Butcher Knife","Cleaver","Club","Composite Bow","Crescent Blade","Crossbow","Cutlass","Cyclone","Dagger","Daisho","Diamond Mace","Disc Mace","Double Axe","Double Bladed Staff","Dread Sword","Dual Pointed Spear","Dual Short Axes","Elven Composite Longbow","Elven Machete","Elven Spellblade","Executioner's Axe","Gargish Axe","Gargish Bardiche","Gargish Battle Axe","Gargish Bone Harvester","Gargish Butcher Knife","Gargish Cleaver","Gargish Dagger","Gargish Daisho","Gargish Gnarled Staff","Gargish Katana","Gargish Kryss","Gargish Lance","Gargish Maul","Gargish Pike","Gargish Scythe","Gargish Talwar","Gargish Tekagi","Gargish Tessen","Gargish War Fork","Gargish War Hammer","Glass Staff","Glass Sword","Gnarled Staff","Halberd","Hammer Pick","Hatchet","Heavy Crossbow","Kama","Katana","Kryss","Lajatang","Lance","Large Battle Axe","Leafblade","Longsword","Mace","Magical Shortbow","Maul","No-Dachi","Nunchaku","Ornate Axe","Pickaxe","Pike","Pitchfork","Quarter Staff","Radiant Scimitar","Repeating Crossbow","Rune Blade","Sai","Scepter","Scimitar","Scythe","Serpentstone Staff","Shepherd's Crook","Short Spear","Shortblade","Skinning Knife","Sledge Hammer","Smith's Hammer","Soul Glaive","Spear","Stone War Sword","Tekagi","Tessen","Tetsubo","Two-Handed Axe","Viking Sword","Wakizashi","Wand","War Axe","War Cleaver","War Fork","War Hammer","War Mace","Wild Staff","Yumi"); 
    
    var Speeds = new Array(0,2.5,2,3,3.75,3.5,2.75,3,2,2,3,2,4.25,3.25,2.25,2.5,2.25,4,2.5,4.5,2.5,3,2,2.75,3,2.75,3.25,2.25,3.5,2.25,3,4,2.75,2.5,3.25,3,3.75,3.5,3,2.25,2.5,2,2.75,3.25,2.5,2,4.5,3.5,3,3.5,3.5,2,2,2.5,3.75,2.25,2.75,3.25,4.25,3.75,2.75,5,2,2.5,2,3.5,4.5,3.75,2.75,3.5,2.75,3,3.5,3.5,2.5,3.5,3,3,2.5,2.25,2.5,2.75,3,2,3.5,3,3.5,3.25,2.75,2,2,2.25,3.25,3.25,4,2.75,3.75,2,2,2.5,3.5,3.75,2.5,2.75,3.25,2.25,2.5,3.75,4,2.25,4.5);


    for (var i=0; i < Weapons.length;++i){
        var optn = document.createElement("OPTION");
        optn.text = Weapons[i];
        optn.value = Speeds[i];
        Weap_List.options.add(optn);

    }

    calcTableCell = document.createElement('td');
    calcTableCell.appendChild(Weap_List);
    calcTableRow.appendChild(calcTableCell);

    calcTableCell.style.textAlign = 'right';
    calcTableCell.appendChild(document.createTextNode(' SSI Bonus (%):'));
    calcTableRow.appendChild(calcTableCell);

    SSI_Bonus.id = 'SSI_Bonus';
    SSI_Bonus.maxLength = '3';
    SSI_Bonus.type = 'text';
    SSI_Bonus.value = '0';
    SSI_Bonus.style.width = '30px';

    calcTableCell = document.createElement('td');
    calcTableCell.appendChild(SSI_Bonus);
    calcTableRow.appendChild(calcTableCell);


    calcTableCell.style.textAlign = 'right';
    calcTableCell.appendChild(document.createTextNode(' Stamina:'));
    calcTableRow.appendChild(calcTableCell);

    Stamina.id = 'Stamina';
    Stamina.maxLength = '3';
    Stamina.type = 'text';
    Stamina.value = '100';
    Stamina.style.width = '30px';
  

    calcTableCell = document.createElement('td');
    calcTableCell.appendChild(Stamina);
    calcTableRow.appendChild(calcTableCell);


    calculateButton.type = 'button';
    calculateButton.value = 'Calculate';
    calculateButton.style.width = '70px';
    calculateButton.onclick = function() {
        calculate(Stamina, SSI_Bonus, Weap_List, Final_SSI_Label);
    };
    calcTableCell = document.createElement('td');
    calcTableCell.appendChild(calculateButton);
    calcTableRow.appendChild(calcTableCell);

    Final_SSI_Label.appendChild(document.createTextNode('Seconds/Swing'));
    Final_SSI_Label.style.textAlign = 'right';
    Final_SSI_Label.style.width = '90px';
    calcTableCell = document.createElement('td');
    calcTableCell.appendChild(Final_SSI_Label);
    calcTableRow.appendChild(calcTableCell);

    return calcTableRow;
}

function searchForCalculators() {
    var calculators = document.getElementsByTagName('div');

    for (var i in calculators) {
         if (calculators[i].id == 'SwingSpeed') {
             Calculator(SwingSpeedCalculator(), 'SwingSpeed', 'Swing Speed Calculator', 9);
         }
    }
}

addOnloadHook(searchForCalculators);