This commit is contained in:
2024-01-09 17:47:03 +01:00
parent 435add26de
commit b7197c909c
10 changed files with 442 additions and 119 deletions
+9 -58
View File
@@ -1,66 +1,17 @@
import { EXPLOITS } from "./constants.js"
/** @param {import(".").NS } ns */
export async function main(ns) {
// ns.disableLog('ALL');
// function scanServer(currentServer, previousServer = currentServer) {
// let availableServers = ns.scan(currentServer);
// let result = [];
// for (let i = 0; i < availableServers.length; ++i) {
// let nextServer = availableServers[i];
// if (nextServer != currentServer && nextServer != previousServer) {
// result.concat(scanServer(nextServer, currentServer));
// }
// }
// return [currentServer].concat(result);
// }
function maxPortsToHack() {
let maxPorts = 0;
for (const exploit of EXPLOITS) {
if (ns.fileExists(exploit.name)) ++maxPorts;
function checkFactionCompletion(factionName){
let complete = true;
let ownedAugumentations = ns.singularity.getOwnedAugmentations(true);
for (const augumentation of ns.singularity.getAugmentationsFromFaction(factionName)) {
complete = complete && ownedAugumentations.indexOf(augumentation) != -1;
}
// ns.tryWritePort(2, `Max ports for hacking ${maxPorts}`);
return maxPorts;
return complete;
}
function analyzeServer(server) {
let requiredHacking = ns.getServerRequiredHackingLevel(server);
let requiredPorts = ns.getServerNumPortsRequired(server);
let currentHacking = ns.getHackingLevel();
return {
"name": server,
"rootAccess": ns.hasRootAccess(server),
"requiredHacking": requiredHacking,
"requiredPorts": requiredPorts,
"nukeAvailable": (currentHacking >= requiredHacking && maxPortsToHack() >= requiredPorts),
"currentMoney": ns.getServerMoneyAvailable(server),
"maxMoney": ns.getServerMaxMoney(server),
"currentSecurity": ns.getServerSecurityLevel(server),
"minSecurity": ns.getServerMinSecurityLevel(server),
};
}
function scanServer(currentServer, previousServer = currentServer, network = []) {
let availableServers = ns.scan(currentServer);
network.push(analyzeServer(currentServer));
for (let i = 0; i < availableServers.length; ++i) {
let nextServer = availableServers[i];
if (nextServer != currentServer && nextServer != previousServer) {
scanServer(nextServer, currentServer, network);
}
}
return network;
}
let network = scanServer('home');
ns.tprint(network[0])
ns.as
ns.tprint(checkFactionCompletion('CyberSec') );
ns.tprint(checkFactionCompletion('Aevum') );
}