Script: Meks
Walker Mek Creation
Last Update: Tue 11 May 2011
<html> <head> <script type="text/javascript"> var mek = [0, 1, 0, 0, 0, 0, 0]; var cst = [0, 0, 0, 0, 0, 0, 0]; var exp = [0, 0, 0, 0, 0, 0, 0]; var lst = ['Small', 'Medium', 'Large', 'Huge', 'Gargantuan']; function start() { makePilotSizeSelect(); getPilotSize(); makeMekSizeSelect(); getMekSize(); makeArmourSelect(); getArmour(); makeHitPointsSelect(); getHitPoints(); makeMoveSelect(); getMove(); makeUpgradeSelect(); getUpgrade(); makeHardnessSelect(); getHardness(); updateDisplay(); } function makePilotSizeSelect() { var out = ''; out += '<select name="ps" onChange="changePilotSizeSelect();">'; out += '<option value="0">Small</option>'; out += '<option value="1">Medium</option>'; out += '<option value="2">Large</option>'; out += '</select>'; document.getElementById('psBox').innerHTML = out; } function changePilotSizeSelect() { getPilotSize(); makeMekSizeSelect(); getMekSize(); makeArmourSelect(); getArmour(); makeHitPointsSelect(); getHitPoints(); makeUpgradeSelect(); getUpgrade(); updateDisplay(); } function getPilotSize() { var l = [1, 2, 4]; mek[0] = 1 * document.frm.ps[document.frm.ps.selectedIndex].value; cst[0] = l[mek[0]]; exp[0] = 0; } function makeMekSizeSelect() { var out = ''; out += '<select name="ms" onChange="changeMekSizeSelect(); ">'; out += '<option value="1">' + lst[1 + mek[0]] + '</option>'; out += '<option value="2">' + lst[2 + mek[0]] + '</option>'; out += '</select>'; document.getElementById('msBox').innerHTML = out; } function changeMekSizeSelect() { getMekSize(); makeArmourSelect(); getArmour(); makeHitPointsSelect(); getHitPoints(); makeUpgradeSelect(); getUpgrade(); updateDisplay(); } function getMekSize() { mek[1] = 1 * document.frm.ms[document.frm.ms.selectedIndex].value; cst[1] = mek[1]; exp[1] = mek[1] * mek[1]; } function makeArmourSelect() { var lv = mek[1]; var hv = (mek[1]+1)*3; var out = ''; out += '<select name="ac" onChange="changeArmourSelect();">'; for (var i=lv; i<=hv; i++) out += '<option value="' + i + '">+' + i + '</option>'; out += '</select>'; document.getElementById('acBox').innerHTML = out; } function changeArmourSelect() { getArmour(); updateDisplay(); } function getArmour() { mek[2] = 1 * document.frm.ac[document.frm.ac.selectedIndex].value; cst[2] = mek[2] * mek[2] * 100; exp[2] = Math.floor((mek[2] + 1)/2); } function makeHitPointsSelect() { var lv = mek[1]*10; var hv = mek[1]*30; var out = ''; out += '<select name="hp" onChange="changeHitPointsSelect();">'; for (var i=lv; i<=hv; i+=5) out += '<option value="' + i + '">+' + i + '</option>'; out += '</select>'; document.getElementById('hpBox').innerHTML = out; } function changeHitPointsSelect() { getHitPoints(); updateDisplay(); } function getHitPoints() { mek[3] = 1 * document.frm.hp[document.frm.hp.selectedIndex].value; cst[3] = mek[3] * mek[3]; exp[3] = Math.floor((mek[3]-10)/20); } function makeMoveSelect() { var out = ''; out += '<select name="mv" onChange="changeMoveSelect();">'; for (var i=20; i<=50; i+=10) out += '<option value="' + i + '">' + i + ' ft.</option>'; out += '</select>'; document.getElementById('mvBox').innerHTML = out; } function changeMoveSelect() { getMove(); updateDisplay(); } function getMove() { mek[4] = 1 * document.frm.mv[document.frm.mv.selectedIndex].value; cst[4] = mek[4] * mek[4]; exp[4] = Math.floor(mek[4]/10 - 2); } function makeUpgradeSelect() { var lv = mek[1] * 2 - 2; var hv = mek[1] * 3 + 1; var out = ''; out += '<select name="up" onChange="changeUpgradeSelect();">'; for (var i=lv; i<=hv; i++) out += '<option value="' + i + '">' + i + '</option>'; out += '</select>'; document.getElementById('upBox').innerHTML = out; } function changeUpgradeSelect() { getUpgrade(); updateDisplay(); } function getUpgrade() { mek[5] = 1 * document.frm.up[document.frm.up.selectedIndex].value; cst[5] = mek[5] * mek[5] * 100; exp[5] = Math.floor(mek[5]/2); } function makeHardnessSelect() { var out = ''; out += '<select name="hd" onChange="changeHardnessSelect();">'; for (var i=6; i<=10; i++) out += '<option value="' + i + '">' + i + '</option>'; out += '</select>'; document.getElementById('hdBox').innerHTML = out; } function changeHardnessSelect() { getHardness(); updateDisplay(); } function getHardness() { mek[6] = 1 * document.frm.hd[document.frm.hd.selectedIndex].value; cst[6] = (mek[6] - 5) * (mek[6] - 5) * 100; exp[6] = Math.floor(mek[6]/2) - 3; } function updateDisplay() { var totCst = cst[0] * cst[1] * (cst[2] + cst[3] + cst[4] + cst[5] + cst[6]); var totExp = exp[0] + exp[1] + exp[2] + exp[3] + exp[4] + exp[5] + exp[6]; var out = ''; out += '<p>'; out += '<b>Type:</b> ' + lst[mek[1]] + ' Walker for ' + lst[mek[0]] + ' pilot<br />'; out += '<b>Armour Bonus:</b> +' + mek[2] + '<br />'; out += '<b>Hit Point Bonus:</b> +' + mek[3] + '<br />'; out += '<b>Base Move:</b> ' + mek[4] + ' ft.<br />'; out += '<b>Upgrade Slots:</b> ' + mek[5] + '<br />'; out += '<b>Expertise:</b> Mekkineer ' + totExp + '<br />'; out += '<b>Construction Cost:</b> ' + totCst + ' gp<br />'; out += '<b>Construction Time:</b> ' + Math.floor(totExp/4 + 4) + ' days<br />'; out += '<b>Unattended Object:</b> Hardness ' + mek[6] + ', HP ' + (mek[3] + 5); out += '</p>'; document.getElementById('dat').innerHTML = out; } </script> </head> <body onload="start()"> <form name="frm"> <table> <tr valign="top"> <td>Pilot Size:</td> <td id="psBox"></td> <td rowspan="7" style="width:20px;"> </td> <td rowspan="7" id="dat"></td> </tr> <tr> <td>Mek Size:</td> <td id="msBox"></td> </tr> <tr> <td>Armour Bonus:</td> <td id="acBox"></td> </tr> <tr> <td>Hit Point Bonus:</td> <td id="hpBox"></td> </tr> <tr> <td>Move:</td> <td id="mvBox"></td> </tr> <tr> <td>Upgrade Slots:</td> <td id="upBox"></td> </tr> <tr> <td>Hardness:</td> <td id="hdBox"></td> </tr> </table> </form> </body> </html>