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: 1, 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() { return 25; // i wanted to implement support for support lv1 and lv2 but idk what the max weight for those levels are } function getRandomElement(array) { return array[Math.floor(Math.random() * array.length)]; } function getRandomWeapons(weaponset, howmany, perk) { var weightmax = (perk == "support" ? getSupportLvlLimit() : 16); var chosenweapons = []; var totalweight = 0; var totalprice = 0; var i = 0; do { 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) { totalling = !(areDistinct(chosenweapons) && totalweight < weightmax); } 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"); document.getElementById("rollperk").addEventListener("click", () => { document.getElementById("perk").value = getRandomElement(perks); changePerkAndOrSetFunction(); }); function changePerkAndOrSetFunction() { if (selperk.value == "support") { if (selset.value == "kfs") selnum.max = 7; else selnum.max = 5; } else { if (selset.value == "kfs") selnum.max = 5; else selnum.max = 3; } if (selnum.value > selnum.max) selnum.value = selnum.max; } selperk.addEventListener("change", changePerkAndOrSetFunction); selset.addEventListener("change", changePerkAndOrSetFunction); 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) { document.getElementById("tbody").insertAdjacentHTML('afterend', `Total price: ${randomWeapon.totalprice} | Total weight: ${randomWeapon.totalweight}`); randomWeapon.chosenweapons.forEach(e=>{ document.getElementById("tbody").insertAdjacentHTML('beforeend', ` ${e.name} ${e.price} ${e.weight} ${e.category} `); }) } else { alert("shit failed, hit the button again") } }) }//////////////////////////////////////////////////////////////////////