import { getCracks, scanServerList, findBestTarget, crackingAndRooting, copyAndRunScript, purchaseAndUpgradeServers } from "/RamsesUtils.js"; /** @param {NS} ns */ export async function main(ns) { const funnyScript = ["batch.js", "Ramses-grow.js", "Ramses-weaken.js", "Ramses-hack.js"]; //write function to purchase scripts from tor network and rerun getCracks() then recrack and reroot let cracks = {}; cracks = getCracks(ns); let maxPorts = Object.keys(cracks).length; scanServerList(ns); let manualTargetOverride = ""; if (ns.getHackingLevel() < 200) { manualTargetOverride = "n00dles"; }; findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride); let bestTarget = ns.read("bestTarget.txt") ns.tprint("Best Target: " + bestTarget); ns.tprint(Object.keys(JSON.parse(ns.read("serverList.txt"))).length); crackingAndRooting(ns, cracks, funnyScript, true); ns.exec(funnyScript[0], "home", 1, JSON.parse(bestTarget).serverName, 500, true); let reset = ns.args[0]; ns.print(reset); if (reset === true) { ns.tprint("reset === true") findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride); let serverList = JSON.parse(ns.read("serverList.txt")); for (const [name, entry] of Object.entries(serverList)) { copyAndRunScript(ns, funnyScript, name); } } /*let serverListForFiles = JSON.parse(ns.read("serverList.txt")); for (const [name2, entry2] of Object.entries(serverListForFiles)) { ns.tprint(name2 + " Files: " + entry2.serverFiles) }*/ //await ns.sleep(500000); await purchaseAndUpgradeServers(ns); }