Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export async function main(ns){
- ns.disableLog('ALL');
- let moneyLeft = () => ns.getServerMoneyAvailable('home');
- //Initialize the list of members
- let members = ns.gang.getMemberNames();
- //Initialize the equipment list container
- let equipment = {};
- //Initialize the list of all equipment
- equipment.ALL = ns.gang.getEquipmentNames();
- //Create the lists for each type of equipment
- equipment.ALL.forEach(equipName => {
- let type = ns.gang.getEquipmentType(equipName).toUpperCase();
- if(equipment[type] === undefined)
- equipment[type] = [];
- equipment[type].push({
- name: equipName,
- cost: ns.gang.getEquipmentCost(equipName)
- });
- });
- //Make sure all members are idle and have clean slates
- members.forEach(name => {
- ns.gang.setMemberTask(name,'Unassigned');
- ns.gang.ascendMember(name);
- });
- ns.tprint('Stand by...');
- //Wait for things to settle
- await ns.sleep(1000);
- ns.tprint('Ascending.');
- //Calculate worst-case equipment costs
- let costs = Object.keys(equipment).filter(e=>e!=='ALL').reduce((accum,type) => {
- accum[type] = equipment[type].reduce((a,e)=>a+e.cost, 0);
- return accum;
- }, {});
- //Make sure there's enough money to buy all Augs for all members
- if(moneyLeft() < costs.AUGMENTATION*members.length){
- ns.tprint('LOW CASH (Augs)');
- ns.exit();
- }
- //Buy all Augs for all members
- members.forEach(name => {
- ns.gang.setMemberTask(name,'Ethical Hacking');
- equipment.AUGMENTATION.forEach(equip => ns.gang.purchaseEquipment(name, equip.name));
- });
- let mem_l = members.length;
- let eqv_l = equipment.VEHICLE.length;
- let eqr_l = equipment.ROOTKIT.length;
- while(1){
- //Ascend all members 100 times, then momentarily give control back to the render thread the page doesn't shit itself
- for(let hyperloop = 0; hyperloop < 100; hyperloop++){
- for(let mem_i = 0; mem_i < mem_l; mem_i++){
- let mem = members[mem_i];
- //Buy all cars (Charisma)
- for(let eqv_i = 0; eqv_i < eqv_l; eqv_i++){
- ns.gang.purchaseEquipment(mem, equipment.VEHICLE[eqv_i].name);
- }
- //Buy all rootkits (Hacking)
- for(let eqr_i = 0; eqr_i < eqr_l; eqr_i++){
- ns.gang.purchaseEquipment(mem, equipment.ROOTKIT[eqr_i].name);
- }
- ns.gang.ascendMember(mem);
- }
- }
- await ns.sleep(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement