var perks = ["medic", "support", "sharpshooter", "commando", "berserker", "firebug"]; var vanillaWeapons = [ {name: "Broken Pipe", weight: 3, price: 133, category: "Melee"}, {name: "Fire Axe", weight: 5, price: 200, category: "Melee"}, {name: "Chainsaw", weight: 8, price: 666, category: "Melee"}, {name: "Drawf Axe", weight: 6, price: 1337, category: "Melee"}, {name: "Handcannon", weight: 5, price: 266, category: "Power"}, {name: "Shotgun", weight: 8, price: 400, category: "Power"}, {name: "A Landmine", weight: 10, price: 560, category: "Power"}, {name: "Hunting Shotgun", weight: 10, price: 600, category: "Power"}, {name: "LAW", weight: 15, price: 800, category: "Power"}, {name: "Dual 9mms", weight: 4, price: 200, category: "Speed"}, {name: "Bullpup", weight: 6, price: 400, category: "Speed"}, {name: "FlameThrower", weight: 10, price: 533, category: "Speed"}, {name: "Machine Pistol", weight: 4, price: 533, category: "Speed"}, {name: "Winchester", weight: 6, price: 400, category: "Range"}, {name: "Crossbow", weight: 10, price: 533, category: "Range"}, ] var KFSWeapons = [ {name: "Hammer", weight: 1, price: 133, category: "Melee"}, {name: "Sword", weight: 5, price: 533, category: "Melee"}, {name: "Taurus Revolver", weight: 5, price: 400, category: "Power"}, {name: "Blunderbuss", weight: 10, price: 560, category: "Power"}, {name: "A Landmine", weight: 10, price: 560, category: "Power"}, {name: "RPG-7", weight: 15, price: 800, category: "Power"}, {name: "M202A1", weight: 16, price: 1200, category: "Power"}, {name: "Ultimax 100 MK2", weight: 8, price: 1733, category: "Power"}, {name: "Dual Glock 17s", weight: 4, price: 200, category: "Speed"}, {name: "BD3008", weight: 6, price: 400, category: "Speed"}, {name: "Molotov", weight: 6, price: 400, category: "Speed"}, {name: "MAC M10", weight: 3, price: 600, category: "Speed"}, {name: "MP5A", weight: 6, price: 653, category: "Speed"}, {name: "Dual MAC M10s", weight: 4, price: 1200, category: "Speed"}, {name: "Winchester 1873", weight: 6, price: 400, category: "Range"}, {name: "Pepper Spray", weight: 6, price: 400, category: "Range"}, {name: "MSG-90", weight: 6, price: 1266, category: "Range"}, ] function areDistinct(arr) { let n = arr.length; let s = new Set(); for (let i = 0; i < n; i++) { s.add(arr[i]); } return (s.size == n); } function getSupportLvlLimit() { switch (localStorage.getItem("supportlvl")) { case '1': return 21; break; case '2': return 23; break; default: return 25; } } function getRandomElement(array) { return array[Math.floor(Math.random() * array.length)]; } function getRandomWeapons(weaponset, howmany, perk) { var weightmax = (perk == "support" ? getSupportLvlLimit() : 16); var isfirebug = (perk == "firebug" ? true : false); var chosenweapons = []; var totalweight = 0; var totalprice = 0; var containsFireAxe = false; var i = 0; do { containsFireAxe = false; i = i + 1; chosenweapons = []; totalweight = 0; for (let i = 0; i < howmany; i++) { chosenweapons.push(getRandomElement(weaponset)) }; chosenweapons.forEach(e => { totalweight += e.weight }); if (i < 75000) { if (isfirebug) containsFireAxe = chosenweapons.some(e=>e === vanillaWeapons[1]); totalling = !(areDistinct(chosenweapons) && totalweight < weightmax && !containsFireAxe); } else { totalling = false; return {}; } } while (totalling); chosenweapons.forEach(e => { totalprice += e.price }); return {chosenweapons, totalweight, totalprice}; } // webui functions window.onload = function() {/////////////////////////////////////////// var selperk = document.getElementById("perk"); var selset = document.getElementById("set"); var selnum = document.getElementById("numofweapons"); var selsuplvl = document.getElementById("supportlvl"); var supportlvl = localStorage.getItem("supportlvl"); if (supportlvl != null) selsuplvl.value = supportlvl; document.getElementById("rollperk").addEventListener("click", () => { document.getElementById("perk").value = getRandomElement(perks); changePerkAndOrSetFunction(); }); function changePerkAndOrSetFunction() { if (selperk.value == "support") { if (selset.value == "kfs" && getSupportLvlLimit() == 25) selnum.max = 7; else if (selset.value == "kfs" && getSupportLvlLimit() < 25) selnum.max = 6; else if (getSupportLvlLimit() < 23) selnum.max = 4; else selnum.max = 5; selsuplvl.style.display = ""; } else { if (selset.value == "kfs") selnum.max = 5; else selnum.max = 3; selsuplvl.style.display = "none"; } if (selnum.value > selnum.max) selnum.value = selnum.max; } selperk.addEventListener("change", changePerkAndOrSetFunction); selset.addEventListener("change", changePerkAndOrSetFunction); selsuplvl.addEventListener("change", () => { localStorage.setItem("supportlvl", selsuplvl.value); changePerkAndOrSetFunction(); }); selnum.addEventListener("keyup", () => { if (selnum.value != "") { if (parseInt(selnum.value) < parseInt(selnum.min)) { selnum.value = selnum.min; } if (parseInt(selnum.value) > parseInt(selnum.max)) { selnum.value = selnum.max; } } }); document.getElementById("random").addEventListener("click", () => { document.querySelectorAll(".row").forEach(e=>{e.remove()}); var set = (selset.value == "kfs" ? KFSWeapons : vanillaWeapons) if (selnum.value == 0) selnum.value = 2; var randomWeapon = getRandomWeapons(set, selnum.value, selperk.value) if (Object.keys(randomWeapon) != 0) { randomWeapon.chosenweapons.forEach(e=>{ document.getElementById("tbody").insertAdjacentHTML('beforeend', ` ${e.name} ${e.price} ${e.weight} ${e.category} `); }) document.getElementById("tbody").insertAdjacentHTML('beforeend', `Total price: ${randomWeapon.totalprice} | Total weight: ${randomWeapon.totalweight}`); } else { alert("shit failed, hit the button again or try lowering the number of weapons") } }) }//////////////////////////////////////////////////////////////////////