apex-randomizer/script.js
2021-01-10 20:43:14 +02:00

366 lines
15 KiB
JavaScript

var legend_names = ["BLOODHOUND", "GIBRALTAR", "LIFELINE", "PATHFINDER", "WRAITH", "BANGALORE", "CAUSTIC", "MIRAGE", "OCTANE", "WATTSON", "CRYPTO", "REVENANT", "LOBA", "RAMPART", "HORIZON"];
var legend_descriptions = ["TECHNOLOGICAL TRACKER", "SHIELDED FORTRESS", "COMBAT MEDIC", "FORWARD SCOUT", "INTERDIMENSIONAL SKIRMISHER", "PROFESSIONAL SOLDIER", "TOXIC TRAPPER", "HOLOGRAPHIC TRICKSTER", "HIGH-SPEED DAREDEVIL", "STATIC DEFENDER", "SURVEILLANCE EXPERT", "SYNTHETIC NIGHTMARE", "TRANSLOCATING THIEF", "BASE OF FIRE", "GRAVITATIONAL MANIPULATOR"];
var legend_passives = ["TRACKER", "GUN SHIELD", "COMBAT REVIVE", "INSIDER KNOWLEDGE", "VOICES FROM THE VOID", "DOUBLE TIME", "NOX VISION", "NOW YOU SEE ME ...", "SWIFT MEND", "SPARK OF GENIUS", "NEUROLINK", "STALKER", "EYE FOR QUALITY", "MODDED LOADER", "SPACEWALK"];
var legend_tacticals = ["EYE OF THE ALLFATHER", "DOME OF PROTECTION", "D.O.C HEAL DRONE", "GRAPPLING HOOK", "INTO THE VOID", "SMOKE LAUNCHER", "NOX GAS TRAP", "PSYCHE OUT", "STIM", "PERIMETER SECURITY", "SURVEILLANCE DRONE", "SILENCE", "BURGLAR'S BEST FRIEND", "AMPED COVER", "GRAVITY LIFT"];
var legend_ultimates = ["BEAST OF THE HUNT", "DEFENSIVE BOMBARDMENT", "CARE PACKAGE", "ZIPLINE GUN", "DIMENSIONAL RIFT", "ROLLING THUNDER", "NOX GAS GRENADE", "LIFE OF THE PARTY", "LAUNCH PAD", "INTERCEPTION PYLON", "EMP", "DEATH TOTEM", "BLACK MARKET BOUTIQUE", "EMPLACED MINIGUN \"SHEILA\"", "BLACK HOLE"];
var legend_classes = [0, 1, 2, 0, 3, 3, 1, 3, 3, 1, 0, 3, 2, 1, 3];
var legend_mods = [-1, 0, 1, 1, 1, -1, 0, -1, -1, 1, -1, -1, -1, -1, -1];
var legend_classes_txt = ["RECON", "DEFENSE", "SUPPORT", "OFFENSE"];
var legend_mods_txt = ["FORTIFIED", "LOW PROFILE"];
var optic_txt = ["1X DIGITAL THREAT", "1X HOLO", "1X-2X VARIABLE HOLO", "1X HCOG 'CLASSIC'", "2X HCOG 'BRUISER'", "3X HCOG 'RANGER'", "2X-4X VARIABLE AOG", "6X SNIPER", "4X-8X VARIABLE SNIPER", "4X-10X DIGITAL SNIPER THREAT"];
var optic_level = [4, 1, 2, 1, 2, 3, 3, 2, 3, 4];
var hopup_txt = ["SELECTFIRE RECEIVER", "PRECISION CHOKE", "SKULL­PIERCER RIFLING", "TURBO­CHARGER", "DISRUPTOR ROUNDS", "DOUBLE TAP TRIGGER", "ANVIL RECEIVER", "HAMMER­POINT ROUNDS", "GRAFFITI MOD", "QUICKDRAW HOLSTER"];
var hopup_level = [3, 3, 4, 4, 3, 3, 4, 3, 1, 3];
var mag_txt = ["EXTENDED LIGHT MAGAZINE", "EXTENDED HEAVY MAGAZINE", "EXTENDED SNIPER MAGAZINE", "EXTENDED ENERGY MAGAZINE"];
var ammo_txt = ["LIGHT ROUNDS", "HEAVY ROUNDS", "SNIPER AMMO", "ENERGY AMMO", "SHOTGUN SHELLS"];
var weapons = [];
var weapon1 = -1;
var weapon2 = -1;
// Longest - KRABER
// Tallest - RE-45
weapons.push({name:"VOLT SMG", barrel:true, bolt:false, mag:3, optic:[0, 1, 2, 3, 4], stock_standard:true, stock_sniper:false, hopup:[], ammo:3, filename:"volt.png"});
weapons.push({name:"R-301 CARBINE", barrel:true, bolt:false, mag:0, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[], ammo:0, filename:"r301.png"});
weapons.push({name:"VK-47 FLATLINE", barrel:false, bolt:false, mag:1, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[], ammo:1, filename:"flatline.png"});
weapons.push({name:"WINGMAN", barrel:false, bolt:false, mag:1, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[2, 9], ammo:1, filename:"wingman.png"});
weapons.push({name:"M600 SPITFIRE", barrel:true, bolt:false, mag:1, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[], ammo:1, filename:"spitfire.png"});
weapons.push({name:"L-STAR EMG", barrel:false, bolt:false, mag:-1, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[], ammo:3, filename:"lstar.png"});
weapons.push({name:"HAVOC RIFLE", barrel:false, bolt:false, mag:3, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[3], ammo:3, filename:"havoc.png"});
weapons.push({name:"ALTERNATOR SMG", barrel:true, bolt:false, mag:0, optic:[0, 1, 2, 3, 4], stock_standard:true, stock_sniper:false, hopup:[], ammo:0, filename:"alternator.png"});
weapons.push({name:"DEVOTION LMG", barrel:true, bolt:false, mag:3, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[3], ammo:3, filename:"devotion.png"});
weapons.push({name:"RE-45 AUTO", barrel:true, bolt:false, mag:0, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[9], ammo:0, filename:"re45.png"});
weapons.push({name:"R-99 SMG", barrel:true, bolt:false, mag:0, optic:[0, 1, 2, 3, 4], stock_standard:true, stock_sniper:false, hopup:[], ammo:0, filename:"r99.png"});
// weapons.push({name:"PROWLER BURST PDW", barrel:false, bolt:false, mag:1, optic:[], stock_standard:true, stock_sniper:false, hopup:[], ammo:2, filename:"prowler.png"});
weapons.push({name:"HEMLOK BURST AR", barrel:true, bolt:false, mag:1, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[], ammo:1, filename:"hemlok.png"});
//weapons.push({name:"PEACEKEEPER", barrel:false, bolt:true, mag:-1, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[], ammo:4, filename:"peacekeeper.png"});
weapons.push({name:"EVA-8 AUTO", barrel:false, bolt:true, mag:-1, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[5], ammo:4, filename:"eva8.png"});
weapons.push({name:"MASTIFF SHOTGUN", barrel:false, bolt:true, mag:-1, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[], ammo:4, filename:"mastiff.png"});
weapons.push({name:"G7 SCOUT", barrel:true, bolt:false, mag:0, optic:[1, 2, 3, 4, 5, 6], stock_standard:true, stock_sniper:false, hopup:[5], ammo:0, filename:"g7.png"});
weapons.push({name:"TRIPLE TAKE", barrel:false, bolt:false, mag:2, optic:[1, 2, 3, 4, 5, 6, 7, 8 ,9], stock_standard:false, stock_sniper:true, hopup:[], ammo:2, filename:"tripletake.png"});
weapons.push({name:"LONGBOW DMR", barrel:true, bolt:false, mag:2, optic:[1, 2, 3, 4, 5, 6, 7, 8 ,9], stock_standard:false, stock_sniper:true, hopup:[2], ammo:2, filename:"longbow.png"});
weapons.push({name:"SENTINEL", barrel:false, bolt:false, mag:2, optic:[1, 2, 3, 4, 5, 6, 7, 8 ,9], stock_standard:false, stock_sniper:true, hopup:[], ammo:2, filename:"sentinel.png"});
weapons.push({name:"CHARGE RIFLE", barrel:false, bolt:false, mag:-1, optic:[1, 2, 3, 4, 5, 6, 7, 8 ,9], stock_standard:false, stock_sniper:true, hopup:[], ammo:2, filename:"chargerifle.png"});
weapons.push({name:"P2020", barrel:false, bolt:false, mag:0, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[7], ammo:0, filename:"p2020.png"});
weapons.push({name:"MOZAMBIQUE SHOTGUN", barrel:false, bolt:true, mag:-1, optic:[0, 1, 2, 3, 4], stock_standard:false, stock_sniper:false, hopup:[7], ammo:4, filename:"mozambique.png"});
//weapons.push({name:"KRABER .50-CAL SNIPER", barrel:false, bolt:true, mag:-1, optic:[1, 2, 3, 4, 5, 6, 7, 8 ,9], stock_standard:false, stock_sniper:false, hopup:[], ammo:2, filename:"kraber.png"});
function zeroPad(nr,base)
{
var len = (String(base).length - String(nr).length)+1;
return len > 0? new Array(len).join('0')+nr : nr;
}
function randomize_legend()
{
var pick = Math.floor(Math.random() * legend_names.length);
var img_str;
document.getElementById("passive_bg").style.backgroundImage = "url('images/bg/abilities/passive.png')";
document.getElementById("tactical_bg").style.backgroundImage = "url('images/bg/abilities/tactical.png')";
document.getElementById("ultimate_bg").style.backgroundImage = "url('images/bg/abilities/ultimate.svg')";
document.getElementById("legend_name").innerHTML = legend_names[pick];
document.getElementById("legend_desc").innerHTML = legend_descriptions[pick];
document.getElementById("passive_name").innerHTML = legend_passives[pick];
document.getElementById("tactical_name").innerHTML = legend_tacticals[pick];
document.getElementById("ultimate_name").innerHTML = legend_ultimates[pick];
img_str = "images/legends/class/" + zeroPad(legend_classes[pick], 10) + ".png";
document.getElementById("class_img").src = img_str;
document.getElementById("legend_class").innerHTML = legend_classes_txt[legend_classes[pick]];
if (legend_mods[pick] != -1)
{
img_str = "images/legends/mod/" + zeroPad(legend_mods[pick], 10) + ".png";
document.getElementById("mod_img").src = img_str;
document.getElementById("legend_mod").innerHTML = legend_mods_txt[legend_mods[pick]];
}
else
{
document.getElementById("mod_img").src = "";
document.getElementById("legend_mod").innerHTML = "";
}
img_str = "images/legends/icon/" + zeroPad(pick, 10) + ".png";
document.getElementById("icon_img").src = img_str;
img_str = "images/legends/passive/" + zeroPad(pick, 10) + ".png";
document.getElementById("passive_img").src = img_str;
img_str = "images/legends/tactical/" + zeroPad(pick, 10) + ".png";
document.getElementById("tactical_img").src = img_str;
img_str = "images/legends/ultimate/" + zeroPad(pick, 10) + ".png";
document.getElementById("ultimate_img").src = img_str;
}
function randomize_weapons()
{
weapon1 = Math.floor(Math.random() * weapons.length);
weapon2 = Math.floor(Math.random() * weapons.length);
if (document.getElementById("weapon_check").checked)
{
while(weapon2 == weapon1)
{
weapon2 = Math.floor(Math.random() * weapons.length);
}
}
if (weapon2 < weapon1)
{
var temp = weapon1;
weapon1 = weapon2;
weapon2 = temp;
}
document.getElementById("weapon1_name").innerHTML = weapons[weapon1].name;
document.getElementById("weapon2_name").innerHTML = weapons[weapon2].name;
document.getElementById("weapon1_img").src = "images/weapons/" + weapons[weapon1].filename;
document.getElementById("weapon2_img").src = "images/weapons/" + weapons[weapon2].filename;
document.getElementById("weapon1_bg").style.backgroundImage = "url('images/bg/weapons/" + zeroPad(weapons[weapon1].ammo, 10) + ".png')";
document.getElementById("weapon2_bg").style.backgroundImage = "url('images/bg/weapons/" + zeroPad(weapons[weapon2].ammo, 10) + ".png')";
document.getElementById("weapon1_ammo_img").src = "images/ammo/" + zeroPad(weapons[weapon1].ammo, 10) + ".png";
document.getElementById("weapon2_ammo_img").src = "images/ammo/" + zeroPad(weapons[weapon2].ammo, 10) + ".png";
clear_attachments();
}
function clear_attachments()
{
var arr = [];
arr = document.getElementsByClassName("attachment_bg");
for (var i = 0; i < arr.length; ++i)
{
arr[i].style.backgroundImage = "";
}
arr = document.getElementsByClassName("attachment_img");
for (var i = 0; i < arr.length; ++i)
{
arr[i].src = "";
}
arr = document.getElementsByClassName("attachment_txt");
for (var i = 0; i < arr.length; ++i)
{
arr[i].innerHTML = "";
}
}
function randomize_attachments_single(weapon)
{
var result = [];
var pick;
if (weapon.barrel == true)
{
pick = Math.floor(Math.random() * 5);
result.push(pick);
if (pick == 4)
{
result.push("images/attachments/barrel4.png");
}
else
{
result.push("images/attachments/barrel.png");
}
if (pick != 0)
{
result.push("BARREL STABILIZER");
}
else
{
result.push("");
}
}
if (weapon.bolt == true)
{
pick = Math.floor(Math.random() * 4);
result.push(pick);
result.push("images/attachments/bolt.png");
if (pick != 0)
{
result.push("SHOTGUN BOLT");
}
else
{
result.push("");
}
}
if (weapon.mag != -1)
{
pick = Math.floor(Math.random() * 4);
result.push(pick);
result.push("images/attachments/mags/" + zeroPad(weapon.mag, 10) + ".png");
if (pick != 0)
{
result.push(mag_txt[weapon.mag]);
}
else
{
result.push("");
}
}
if (!document.getElementById("attachment_check").checked)
{
pick = Math.floor(Math.random() * (weapon.optic.length + 1));
if (pick == weapon.optic.length)
{
result.push(0);
result.push("images/attachments/optics/none.svg");
result.push("");
}
else
{
result.push(optic_level[weapon.optic[pick]]);
result.push("images/attachments/optics/" + zeroPad(weapon.optic[pick], 10) + ".png");
result.push(optic_txt[weapon.optic[pick]]);
}
}
else
{
result.push(0);
result.push("images/attachments/optics/none.svg");
result.push("");
}
if (weapon.stock_standard == true)
{
pick = Math.floor(Math.random() * 4);
result.push(pick);
result.push("images/attachments/stock-standard.png");
if (pick != 0)
{
result.push("STANDARD STOCK");
}
else
{
result.push("");
}
}
if (weapon.stock_sniper == true)
{
pick = Math.floor(Math.random() * 4);
result.push(pick);
result.push("images/attachments/stock-sniper.png");
if (pick != 0)
{
result.push("SNIPER STOCK");
}
else
{
result.push("");
}
}
if (weapon.hopup.length != 0)
{
if (weapon.hopup.length != 0)
{
pick = Math.floor(Math.random() * (weapon.hopup.length + 1));
if (pick == weapon.hopup.length)
{
result.push(0);
if (weapon.hopup.length == 1)
{
result.push("images/attachments/hopups/" + zeroPad(weapon.hopup[0], 10) + ".png");
}
else
{
result.push("images/attachments/hopups/multi.png");
}
result.push("");
}
else
{
result.push(hopup_level[weapon.hopup[pick]]);
result.push("images/attachments/hopups/" + zeroPad(weapon.hopup[pick], 10) + ".png");
result.push(hopup_txt[weapon.hopup[pick]]);
}
}
}
return result;
}
function randomize_attachments()
{
var arr = [];
var weapon_num;
var attachment_num;
if ((weapon1 == -1) || (weapon2 == -1))
{
return;
}
clear_attachments();
arr = randomize_attachments_single(weapons[weapon1]);
weapon_num = 1;
attachment_num = 1;
for (var i = 0; i < arr.length; i += 3)
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_bg").style.backgroundImage = "url('images/bg/attachments/" + zeroPad(arr[i], 10) + ".png')";
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").src = arr[i + 1];
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_txt").innerHTML = arr[i + 2];
if (arr[i] == 0)
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").style.opacity = 0.2;
}
else
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").style.opacity = 1;
}
attachment_num++;
}
arr = randomize_attachments_single(weapons[weapon2]);
weapon_num = 2;
attachment_num = 1;
for (var i = 0; i < arr.length; i += 3)
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_bg").style.backgroundImage = "url('images/bg/attachments/" + zeroPad(arr[i], 10) + ".png')";
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").src = arr[i + 1];
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_txt").innerHTML = arr[i + 2];
if (arr[i] == 0)
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").style.opacity = 0.2;
}
else
{
document.getElementById("weapon" + weapon_num + "_attachment" + attachment_num + "_img").style.opacity = 1;
}
attachment_num++;
}
}
function all_func()
{
if (document.getElementById("all_check1").checked)
{
randomize_legend();
}
if (document.getElementById("all_check2").checked)
{
randomize_weapons();
}
if (document.getElementById("all_check3").checked)
{
randomize_attachments();
}
}