forked from alainbryden/bitburner-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhacknet.js
More file actions
58 lines (51 loc) · 1.5 KB
/
hacknet.js
File metadata and controls
58 lines (51 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/** @param {NS} ns **/
export async function main(ns) {
let delayTime = ns.args[0] || 1000;
let thresholdMultiplier = ns.args[1] || 1; //Bigger threshold, the less it spends
ns.disableLog("disableLog");
ns.disableLog("sleep");
while (true) {
let ownedNodes = ns.hacknet.numNodes();
let minValue = ns.hacknet.getPurchaseNodeCost();
let nodeIndex = ownedNodes;
let upgradeType = -1; //-1 -> purchase, 0 -> level, 1 -> ram, 2 -> core
for (let i = 0; i < ownedNodes; i++) {
let upgrades = [
ns.hacknet.getLevelUpgradeCost(i, 1),
ns.hacknet.getRamUpgradeCost(i, 1),
ns.hacknet.getCoreUpgradeCost(i, 1)
];
let value = Math.min.apply(Math, upgrades);
if (value < minValue) {
minValue = value;
nodeIndex = i;
upgradeType = upgrades.indexOf(value);
}
}
await waitForMoney(ns, minValue, delayTime, thresholdMultiplier);
switch (upgradeType) {
case -1:
ns.hacknet.purchaseNode();
ns.print("Buying Node");
break;
case 0:
ns.hacknet.upgradeLevel(nodeIndex, 1);
ns.print("Node " + nodeIndex + " ADD Level");
break;
case 1:
ns.hacknet.upgradeRam(nodeIndex, 1);
ns.print("Node " + nodeIndex + " ADD Ram");
break;
case 2:
ns.hacknet.upgradeCore(nodeIndex, 1);
ns.print("Node " + nodeIndex + " ADD Core");
break;
}
await ns.sleep(1);
}
}
async function waitForMoney(ns, targetMoney, delayTime, thresholdMultiplier) {
while (ns.getPlayer().money / thresholdMultiplier < targetMoney) {
await ns.sleep(delayTime);
}
}