-
Notifications
You must be signed in to change notification settings - Fork 2
/
hacknet.ns
125 lines (113 loc) · 2.4 KB
/
hacknet.ns
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
function toN(ns, nodecount, count) {
var c = 0;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.level < count) {
if (ns.hacknet.upgradeLevel(i, 1)) {
ns.print("upgraded level");
c++;
}
}
}
return c;
}
function maxN(ns, nodecount) {
var m = 0;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.level > m) {
m = stat.level;
}
}
return m;
}
function minN(ns, nodecount) {
var m = 1024;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.level < m) {
m = stat.level;
}
}
return m;
}
function maxMem(ns, nodecount) {
var m = 0;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.ram > m) {
m = stat.ram;
}
}
return m;
}
function minMem(ns, nodecount) {
var m = 1024;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.ram < m) {
m = stat.ram;
}
}
return m;
}
function toMaxMem(ns, nodecount) {
var c = 0;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.ram < 64) {
if (ns.hacknet.upgradeRam(i, 1)) {
ns.print("upgraded memory");
c++;
}
}
}
return c;
}
function toCore(ns, nodecount, count) {
var c = 0;
for (var i = 0; i < nodecount; i++) {
var stat = ns.hacknet.getNodeStats(i);
if (stat.cores < count) {
if (ns.hacknet.upgradeCore(i, 1)) {
c++;
ns.print("upgraded core count");
}
}
}
return c;
}
/** @param {NS} ns **/
export async function main(ns) {
while (true) {
var nodecount = ns.hacknet.numNodes();
if (nodecount < 4) {
ns.purchaseNode();
continue;
}
var c = 0;
var min_level = minN(ns, nodecount);
var min_mem = minMem(ns, nodecount);
c += toN(ns, nodecount, 100);
c += toMaxMem(ns, nodecount);
c += toCore(ns, nodecount, 2);
if (min_level >= 100 && min_mem >= 32) {
c += toN(ns, nodecount, 150);
c += toCore(ns, nodecount, 4);
if (min_level >= 150 && min_mem >= 64) {
c += toN(ns, nodecount, 190);
c += toCore(ns, nodecount, 6);
if (c == 0) {
c += toN(ns, nodecount, 200);
c += toCore(ns, nodecount, 10);
if (nodecount == ns.hacknet.numNodes()) {
if (ns.hacknet.purchaseNode() < 0) await ns.sleep(10000);
else ns.print("added node");
}
}
}
}
if(c == 0) await ns.sleep(1000);
else await ns.sleep(1);
}
}