Advertisement
Guest User

rapid_gang_ascend.ns

a guest
Jun 18th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export async function main(ns){
  2.     ns.disableLog('ALL');
  3.  
  4.     let moneyLeft = () => ns.getServerMoneyAvailable('home');
  5.    
  6.     //Initialize the list of members
  7.     let members = ns.gang.getMemberNames();
  8.    
  9.     //Initialize the equipment list container
  10.     let equipment = {};
  11.    
  12.     //Initialize the list of all equipment
  13.     equipment.ALL = ns.gang.getEquipmentNames();
  14.    
  15.     //Create the lists for each type of equipment
  16.     equipment.ALL.forEach(equipName => {
  17.         let type = ns.gang.getEquipmentType(equipName).toUpperCase();
  18.         if(equipment[type] === undefined)
  19.             equipment[type] = [];
  20.         equipment[type].push({
  21.             name: equipName,
  22.             cost: ns.gang.getEquipmentCost(equipName)
  23.         });
  24.     });
  25.    
  26.     //Make sure all members are idle and have clean slates
  27.     members.forEach(name => {
  28.         ns.gang.setMemberTask(name,'Unassigned');
  29.         ns.gang.ascendMember(name);
  30.     });
  31.    
  32.     ns.tprint('Stand by...');
  33.     //Wait for things to settle
  34.     await ns.sleep(1000);
  35.     ns.tprint('Ascending.');
  36.    
  37.     //Calculate worst-case equipment costs
  38.     let costs = Object.keys(equipment).filter(e=>e!=='ALL').reduce((accum,type) => {
  39.         accum[type] = equipment[type].reduce((a,e)=>a+e.cost, 0);
  40.         return accum;
  41.     }, {});
  42.    
  43.     //Make sure there's enough money to buy all Augs for all members
  44.     if(moneyLeft() < costs.AUGMENTATION*members.length){
  45.         ns.tprint('LOW CASH (Augs)');
  46.         ns.exit();
  47.     }
  48.    
  49.     //Buy all Augs for all members
  50.     members.forEach(name => {
  51.         ns.gang.setMemberTask(name,'Ethical Hacking');
  52.         equipment.AUGMENTATION.forEach(equip => ns.gang.purchaseEquipment(name, equip.name));
  53.     });
  54.    
  55.    
  56.     let mem_l = members.length;
  57.     let eqv_l = equipment.VEHICLE.length;
  58.     let eqr_l = equipment.ROOTKIT.length;
  59.     while(1){
  60.         //Ascend all members 100 times, then momentarily give control back to the render thread the page doesn't shit itself
  61.         for(let hyperloop = 0; hyperloop < 100; hyperloop++){
  62.             for(let mem_i = 0; mem_i < mem_l; mem_i++){
  63.                 let mem = members[mem_i];
  64.                 //Buy all cars (Charisma)
  65.                 for(let eqv_i = 0; eqv_i < eqv_l; eqv_i++){
  66.                     ns.gang.purchaseEquipment(mem, equipment.VEHICLE[eqv_i].name);
  67.                 }
  68.                 //Buy all rootkits (Hacking)
  69.                 for(let eqr_i = 0; eqr_i < eqr_l; eqr_i++){
  70.                     ns.gang.purchaseEquipment(mem, equipment.ROOTKIT[eqr_i].name);
  71.                 }
  72.                 ns.gang.ascendMember(mem);
  73.             }
  74.         }
  75.         await ns.sleep(0);
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement