mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 14:28:36 +02:00
Compare commits
569 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50cf362b3b | ||
|
|
5ba7b2796d | ||
|
|
9cbb525da3 | ||
|
|
0ae8b72188 | ||
|
|
1e641468f7 | ||
|
|
3187bb990d | ||
|
|
4e8bb96f3f | ||
|
|
97c04a1037 | ||
|
|
62cd8ffcc6 | ||
|
|
0d9caac455 | ||
|
|
f701cbffa7 | ||
|
|
73d0dd98f2 | ||
|
|
c05be66c60 | ||
|
|
b0e4a2a775 | ||
|
|
86ddc940aa | ||
|
|
510fcedf90 | ||
|
|
5cce1c255c | ||
|
|
854239ceb1 | ||
|
|
73834d03cd | ||
|
|
cefd499ff6 | ||
|
|
c5713fa6d8 | ||
|
|
b0739f8942 | ||
|
|
a6d7f93111 | ||
|
|
86678b6290 | ||
|
|
498a204c88 | ||
|
|
d6584386ff | ||
|
|
b5abbbc240 | ||
|
|
514b467e27 | ||
|
|
1fc2e6fd2a | ||
|
|
b758807ba1 | ||
|
|
14e6dd0158 | ||
|
|
ce578206eb | ||
|
|
3289f76cd0 | ||
|
|
3aacab504b | ||
|
|
6d179be018 | ||
|
|
86da356478 | ||
|
|
c0e1706128 | ||
|
|
06f716c0fa | ||
|
|
07bc697477 | ||
|
|
60a91cd9f7 | ||
|
|
97624395c1 | ||
|
|
d49fea4cbc | ||
|
|
125e9484f7 | ||
|
|
ef17f0d617 | ||
|
|
f7aa393a8f | ||
|
|
7fb2b8b590 | ||
|
|
cba40c71b2 | ||
|
|
4254cc2807 | ||
|
|
8b15adda8a | ||
|
|
b0f20c8c8f | ||
|
|
5c6c472b64 | ||
|
|
5170c0e004 | ||
|
|
fe18c55173 | ||
|
|
69c9b20e68 | ||
|
|
2d45784102 | ||
|
|
65cb519801 | ||
|
|
76e6cb4ecc | ||
|
|
7b6f9293c7 | ||
|
|
dc2bf871cf | ||
|
|
1d349c25f7 | ||
|
|
5484c64a95 | ||
|
|
ec33fb411c | ||
|
|
2a966d0726 | ||
|
|
29143999a6 | ||
|
|
a32b8eabe3 | ||
|
|
43723a3fbb | ||
|
|
ad75fa5ebc | ||
|
|
4abc1df840 | ||
|
|
da488e586b | ||
|
|
413333c919 | ||
|
|
4f219a3214 | ||
|
|
2e05f14c0d | ||
|
|
47f54a11c3 | ||
|
|
b8faa9dc0b | ||
|
|
8fd6b2e7da | ||
|
|
cdd9c174e7 | ||
|
|
e6291a09a0 | ||
|
|
9ccfca3c72 | ||
|
|
346024af45 | ||
|
|
66a2adaeb4 | ||
|
|
c1945ab12e | ||
|
|
3a7c64872a | ||
|
|
06edf5b70c | ||
|
|
d2008e86b4 | ||
|
|
32d1affb50 | ||
|
|
558b671206 | ||
|
|
a954259e25 | ||
|
|
64c7831c81 | ||
|
|
61dd393bb5 | ||
|
|
28aca06208 | ||
|
|
c79fa240e1 | ||
|
|
e1741778f9 | ||
|
|
80560ce9f6 | ||
|
|
f9a4eadb71 | ||
|
|
96f0879230 | ||
|
|
9c40cf6f28 | ||
|
|
55901f0574 | ||
|
|
43f0746be7 | ||
|
|
8eeed583c2 | ||
|
|
dc518e7032 | ||
|
|
0c932dd4d1 | ||
|
|
c94ec2f170 | ||
|
|
6111c50eb1 | ||
|
|
8977f299e5 | ||
|
|
2a8b1c2116 | ||
|
|
9a6b185141 | ||
|
|
501ce70702 | ||
|
|
9b94692942 | ||
|
|
06880c68e1 | ||
|
|
637f88efcd | ||
|
|
57a5c8b0b4 | ||
|
|
c3ac16f330 | ||
|
|
c564de40b3 | ||
|
|
1b26d25a53 | ||
|
|
7aa2d00460 | ||
|
|
ffa9600302 | ||
|
|
db35fde42e | ||
|
|
d73040fdc5 | ||
|
|
a38df2e613 | ||
|
|
b931ab5566 | ||
|
|
4e44e784c6 | ||
|
|
aa4451b12d | ||
|
|
2a52f6fa2b | ||
|
|
8b7723338b | ||
|
|
9e62438b43 | ||
|
|
74906cc9e6 | ||
|
|
483590ef8b | ||
|
|
7cd821ef5e | ||
|
|
5e48530e14 | ||
|
|
bb4de3f62c | ||
|
|
bb546ef6e1 | ||
|
|
9552ae3ef1 | ||
|
|
d1974a3e70 | ||
|
|
e9b030c450 | ||
|
|
dffc0c5858 | ||
|
|
a9c57e23a5 | ||
|
|
8db57d7e81 | ||
|
|
34313e8100 | ||
|
|
91c7ae53ef | ||
|
|
44d6845883 | ||
|
|
a3e624deba | ||
|
|
7355f4212b | ||
|
|
fb37f6b94d | ||
|
|
4a3201cba3 | ||
|
|
48eb0df99f | ||
|
|
a282d5d7fd | ||
|
|
3554da5a53 | ||
|
|
d78309f3b0 | ||
|
|
9bc20526ff | ||
|
|
7a2dd16092 | ||
|
|
0a2dbe66e4 | ||
|
|
dade51a26b | ||
|
|
505040137f | ||
|
|
db31b70efc | ||
|
|
ce3898367c | ||
|
|
cd0aa192f5 | ||
|
|
374b81ffae | ||
|
|
652428b164 | ||
|
|
93706d31ee | ||
|
|
38408294cc | ||
|
|
023f2b8309 | ||
|
|
61e3959a25 | ||
|
|
4b6a6300f5 | ||
|
|
e5abf014b2 | ||
|
|
e087420519 | ||
|
|
e1a22016b5 | ||
|
|
bdfa4be71f | ||
|
|
eb2a44e213 | ||
|
|
23e8bc2e71 | ||
|
|
48cfa14366 | ||
|
|
aef4aac61a | ||
|
|
f545726980 | ||
|
|
9471e8d4a0 | ||
|
|
c85ebe9ee2 | ||
|
|
b5d7b3c108 | ||
|
|
be9b595590 | ||
|
|
eacf15b463 | ||
|
|
425c998435 | ||
|
|
549c8b61db | ||
|
|
244e669b2b | ||
|
|
6f20b0bc30 | ||
|
|
d1cb5b313a | ||
|
|
1996deaf0a | ||
|
|
907314e76b | ||
|
|
f359fe661e | ||
|
|
45f2f85a30 | ||
|
|
fd55155fea | ||
|
|
70205e06ee | ||
|
|
1344a17482 | ||
|
|
affc79a499 | ||
|
|
aa0008862c | ||
|
|
89ea9aaff5 | ||
|
|
1883bea906 | ||
|
|
4a3658ea13 | ||
|
|
812dec6cb2 | ||
|
|
19a73a2802 | ||
|
|
92ec4785a9 | ||
|
|
acd51e8328 | ||
|
|
6013bacc60 | ||
|
|
ff726afcd6 | ||
|
|
cab823bcdf | ||
|
|
2cb762184f | ||
|
|
7837454f18 | ||
|
|
8e764a5524 | ||
|
|
757b38327f | ||
|
|
628572cf21 | ||
|
|
744f3bc067 | ||
|
|
195dff7c44 | ||
|
|
4bf3e5a2e4 | ||
|
|
defaa2ccd6 | ||
|
|
6d70d9708f | ||
|
|
b6924d6889 | ||
|
|
3fc46c8fc6 | ||
|
|
d7a86ab8b9 | ||
|
|
407ed70ae3 | ||
|
|
a21c0f4a0b | ||
|
|
3acf965dad | ||
|
|
0cf2e2469e | ||
|
|
7ba37397dd | ||
|
|
18f40a8d9f | ||
|
|
22648df857 | ||
|
|
07721e1cc5 | ||
|
|
b682a442fe | ||
|
|
4a5fb04d41 | ||
|
|
f628a18551 | ||
|
|
1890f1fd44 | ||
|
|
34dda1f252 | ||
|
|
8e1d31423f | ||
|
|
05718e00ea | ||
|
|
aba97d2baa | ||
|
|
f0f57150aa | ||
|
|
088657f162 | ||
|
|
302e105bdf | ||
|
|
867dd3ba91 | ||
|
|
5866f47151 | ||
|
|
5d9f9d2681 | ||
|
|
2922e42055 | ||
|
|
8097364242 | ||
|
|
ac80be1b40 | ||
|
|
bd26e2f9ca | ||
|
|
3f447b7fa1 | ||
|
|
206edd8df5 | ||
|
|
e4e539c067 | ||
|
|
ff2d238ea4 | ||
|
|
96dc1eb1f4 | ||
|
|
f393baaa82 | ||
|
|
409cb53597 | ||
|
|
22bf958e2e | ||
|
|
11a345dd66 | ||
|
|
4ca54dbe00 | ||
|
|
63a4a30189 | ||
|
|
56680d5b17 | ||
|
|
4c15d4ef42 | ||
|
|
55769b5005 | ||
|
|
684a254ac8 | ||
|
|
dc9b5c3341 | ||
|
|
ed461ccca5 | ||
|
|
f895da118d | ||
|
|
2833b881ea | ||
|
|
8a0f33daf0 | ||
|
|
2ba04a602e | ||
|
|
cb3b5b10d7 | ||
|
|
d9bdc5bf5f | ||
|
|
25c4f9047f | ||
|
|
7e2fd52ae2 | ||
|
|
fd0b4f7b01 | ||
|
|
8ed9f8a64d | ||
|
|
89a85c73ec | ||
|
|
9adf69afbd | ||
|
|
2d463b60a0 | ||
|
|
05fd85002c | ||
|
|
f8b9c50563 | ||
|
|
70cb4b215d | ||
|
|
8c2d6616e3 | ||
|
|
ab29f249c1 | ||
|
|
e345edb74f | ||
|
|
a991dbf54f | ||
|
|
fe065d23eb | ||
|
|
8e4e9dabd9 | ||
|
|
ae15caf45a | ||
|
|
4ad5b06e19 | ||
|
|
acc215cc61 | ||
|
|
e52a2b19e8 | ||
|
|
8fba57fd24 | ||
|
|
8ec585e0b6 | ||
|
|
38cf4bd3cd | ||
|
|
4412a8e5b0 | ||
|
|
0ed93ec0a5 | ||
|
|
dadd4fe03d | ||
|
|
83f785a791 | ||
|
|
d515db0842 | ||
|
|
5f8de7e426 | ||
|
|
2f2923dd8b | ||
|
|
b8b0948a1a | ||
|
|
d84d93ad3b | ||
|
|
1b63f833be | ||
|
|
752a330735 | ||
|
|
4480423b7f | ||
|
|
a9c80f0691 | ||
|
|
5b4bc0a68f | ||
|
|
1a5651ae8b | ||
|
|
3b314f5d1d | ||
|
|
aeb0a7d3e3 | ||
|
|
75af7a096b | ||
|
|
7ac1d24d61 | ||
|
|
e79ea4d3cb | ||
|
|
b9dcffdf58 | ||
|
|
8d1adff2ae | ||
|
|
2c427b1116 | ||
|
|
42aa4ca23f | ||
|
|
dd27158cf0 | ||
|
|
1593b0b3f3 | ||
|
|
705b154f13 | ||
|
|
1edcbe88ee | ||
|
|
609ba34804 | ||
|
|
99e82cd867 | ||
|
|
bc33f67409 | ||
|
|
224463e6dd | ||
|
|
02fd09c5d3 | ||
|
|
33aeeb7977 | ||
|
|
add19d353e | ||
|
|
4bedf05b1c | ||
|
|
5f64187a0f | ||
|
|
339d9a8d96 | ||
|
|
b45ab657c5 | ||
|
|
c9611cc824 | ||
|
|
4b051468ad | ||
|
|
9df926427b | ||
|
|
8460df99df | ||
|
|
dc890a908b | ||
|
|
e5dcb424a2 | ||
|
|
e906a6331f | ||
|
|
c4617e4b9a | ||
|
|
76404dd83a | ||
|
|
be08161442 | ||
|
|
f93ee45254 | ||
|
|
7e8e9e03fc | ||
|
|
715bc541ec | ||
|
|
cb31954b08 | ||
|
|
7f1d39a298 | ||
|
|
d5c9306395 | ||
|
|
b0fcdb8363 | ||
|
|
ab8937870c | ||
|
|
4e22b880bb | ||
|
|
f77ab4e871 | ||
|
|
0a210555e9 | ||
|
|
3df298e91e | ||
|
|
b7e07bc7f2 | ||
|
|
0bc9bfb0f2 | ||
|
|
5cd72860e3 | ||
|
|
e44813b65d | ||
|
|
3473fc2ea6 | ||
|
|
0c0adf29d5 | ||
|
|
c97fece747 | ||
|
|
a2aaf6bd2e | ||
|
|
2a13db39c7 | ||
|
|
bada8a5f39 | ||
|
|
6979082be7 | ||
|
|
1c9542d102 | ||
|
|
0d5a302580 | ||
|
|
7bc0764d5d | ||
|
|
bc034bb417 | ||
|
|
ea99166f7f | ||
|
|
82c3362adc | ||
|
|
e7d77b7569 | ||
|
|
c5af4f8177 | ||
|
|
d0cb0e3f5b | ||
|
|
f7adadd671 | ||
|
|
faa6f75027 | ||
|
|
3b0cf6714a | ||
|
|
cd43f25bf5 | ||
|
|
6e670e88e2 | ||
|
|
20062b11b9 | ||
|
|
d0ca2d8c36 | ||
|
|
20e41e8006 | ||
|
|
7ef7fc1b26 | ||
|
|
6352704608 | ||
|
|
072f7693f4 | ||
|
|
fbe70f51c2 | ||
|
|
27e2b2ea65 | ||
|
|
6320189717 | ||
|
|
17da325585 | ||
|
|
5873b5fe19 | ||
|
|
6d8b52c0d6 | ||
|
|
8faa7faf8a | ||
|
|
66a593e06b | ||
|
|
506122f5b8 | ||
|
|
91434b7972 | ||
|
|
ba46262426 | ||
|
|
aa91e8aecc | ||
|
|
2874112946 | ||
|
|
3f8aa2aa9e | ||
|
|
b9acfde363 | ||
|
|
b4c9655782 | ||
|
|
f50b2a9d9f | ||
|
|
a475e6297e | ||
|
|
cfdf23cd11 | ||
|
|
d6aa331310 | ||
|
|
306facc0d1 | ||
|
|
5e11e77282 | ||
|
|
daafdbbddf | ||
|
|
8501c9bb1b | ||
|
|
05f3b1c390 | ||
|
|
7f15a19f12 | ||
|
|
4011542b97 | ||
|
|
858b1e7468 | ||
|
|
cfbdae6def | ||
|
|
05a6f2a20e | ||
|
|
05bab22807 | ||
|
|
a18bdd6afc | ||
|
|
3d7cdb4ef9 | ||
|
|
eed915dbbd | ||
|
|
570e5b17a2 | ||
|
|
4a7fcda86f | ||
|
|
a63178f30c | ||
|
|
2914bbb789 | ||
|
|
1e42f73e2a | ||
|
|
2d322e7a6a | ||
|
|
75d77410ea | ||
|
|
0ad05c7bad | ||
|
|
69ec6f6679 | ||
|
|
c8dd17d573 | ||
|
|
1241cc5128 | ||
|
|
e1c29f25e2 | ||
|
|
c9efa977fb | ||
|
|
6e013e4e6a | ||
|
|
3a943e0e50 | ||
|
|
f2edb42aca | ||
|
|
e1cb0e529c | ||
|
|
008b233c9d | ||
|
|
cc9a07c09f | ||
|
|
2866bfaa70 | ||
|
|
38880f69e1 | ||
|
|
eb01051ad6 | ||
|
|
5dd6145d53 | ||
|
|
a652140224 | ||
|
|
aa929b1837 | ||
|
|
9b501e061a | ||
|
|
6f3db27373 | ||
|
|
454a792f0a | ||
|
|
8d17495e85 | ||
|
|
d3aeda8ad5 | ||
|
|
65158e4db7 | ||
|
|
fd85a00b8f | ||
|
|
a239f0ad58 | ||
|
|
d936f68c7a | ||
|
|
feebdc8ee5 | ||
|
|
0eeb868e25 | ||
|
|
d9c9c30fdd | ||
|
|
294640d27e | ||
|
|
fe25460997 | ||
|
|
f987ff9e2a | ||
|
|
d65cbf07f4 | ||
|
|
2624e13c34 | ||
|
|
7c9c4d3f4d | ||
|
|
a2379b21ec | ||
|
|
68885ceff5 | ||
|
|
1ae17677c0 | ||
|
|
67be13c6d6 | ||
|
|
d4349e85b1 | ||
|
|
a721c49e1d | ||
|
|
2d2c20bfc7 | ||
|
|
ed035a2e89 | ||
|
|
cf72d72bb0 | ||
|
|
3ba04220e1 | ||
|
|
a72d1aa99f | ||
|
|
21008ba65a | ||
|
|
a760ede129 | ||
|
|
717b32b0b4 | ||
|
|
4b6d049da2 | ||
|
|
8bb4e8b7cf | ||
|
|
0d30544a52 | ||
|
|
361ef31fe7 | ||
|
|
0de3deee3f | ||
|
|
94ad7ccf4b | ||
|
|
4b53d6ecf7 | ||
|
|
3d2aeb63a0 | ||
|
|
b621359a9e | ||
|
|
07c0b708d7 | ||
|
|
b372f23b6e | ||
|
|
a8254e7144 | ||
|
|
02a21cf2d9 | ||
|
|
bcb0606900 | ||
|
|
42704d8695 | ||
|
|
e75197dee3 | ||
|
|
9e92df47a5 | ||
|
|
c110c22efb | ||
|
|
c9ab7908a7 | ||
|
|
3ab306f9d7 | ||
|
|
f08aa8924c | ||
|
|
c4914fa54f | ||
|
|
fa5e2f4964 | ||
|
|
77eda1fd75 | ||
|
|
c987c91a11 | ||
|
|
feaa74ed34 | ||
|
|
701fba7ec7 | ||
|
|
51bd626e88 | ||
|
|
ab4863e7df | ||
|
|
1a8bcf66cc | ||
|
|
7bfceb1690 | ||
|
|
27e22814a9 | ||
|
|
ceb4e304fd | ||
|
|
e2d74f9432 | ||
|
|
79345a49b4 | ||
|
|
7066a793a1 | ||
|
|
2a5cf62168 | ||
|
|
6495be5705 | ||
|
|
0d6d05db49 | ||
|
|
5d59620dce | ||
|
|
60d95a90d0 | ||
|
|
51debc60da | ||
|
|
faf625b34d | ||
|
|
1a8b194341 | ||
|
|
386f8a11c5 | ||
|
|
4278191b0e | ||
|
|
6d2b8b4f6f | ||
|
|
b148b2f0b5 | ||
|
|
4a9bac99d2 | ||
|
|
0b3c114cd0 | ||
|
|
49cc75a575 | ||
|
|
e0d631f8b3 | ||
|
|
8289c9fc75 | ||
|
|
d66e36b637 | ||
|
|
6cd7465b82 | ||
|
|
c7125e2e46 | ||
|
|
a564957092 | ||
|
|
4b8e63f342 | ||
|
|
480d47eece | ||
|
|
4de20f8cce | ||
|
|
4b38d296a8 | ||
|
|
9ac75d5bf5 | ||
|
|
6561413137 | ||
|
|
1fb5105d0a | ||
|
|
b67c03ff8a | ||
|
|
7db3716256 | ||
|
|
ee5a70901b | ||
|
|
63b2c77907 | ||
|
|
aa3ad3164c | ||
|
|
474befa091 | ||
|
|
cd1c1ce145 | ||
|
|
5aa24f22c4 | ||
|
|
f02c6443cc | ||
|
|
4497143785 | ||
|
|
0b3c48827b | ||
|
|
86de11e794 | ||
|
|
fb87385704 | ||
|
|
b1caea796a | ||
|
|
2dfd19c9e0 | ||
|
|
0e24020796 | ||
|
|
ed62a3ebc2 | ||
|
|
258716388e | ||
|
|
73ec97db87 | ||
|
|
567c5dc230 | ||
|
|
980665b77c | ||
|
|
dcddc0c2d5 | ||
|
|
6e1100750e | ||
|
|
fea25249a8 | ||
|
|
df457a0c6e | ||
|
|
3826de72ef | ||
|
|
ee3530d9b9 | ||
|
|
5098ef6232 | ||
|
|
27ee65f524 | ||
|
|
1d0f193c34 | ||
|
|
08908c87ea | ||
|
|
3957a517db | ||
|
|
21daab32c1 | ||
|
|
5e2ed7a79e | ||
|
|
d9e60ea124 | ||
|
|
2750eb293a |
3
.browserslistrc
Normal file
3
.browserslistrc
Normal file
@@ -0,0 +1,3 @@
|
||||
last 4 versions
|
||||
not dead
|
||||
not ie <= 11
|
||||
@@ -3,6 +3,5 @@ doc/build/
|
||||
dist/
|
||||
tests/*.bundle.*
|
||||
src/ThirdParty/*
|
||||
src/ScriptEditor/CodeMirrorNetscriptMode.js
|
||||
src/ScriptEditor/CodeMirrorNetscriptLint.js
|
||||
src/JSInterpreter.js
|
||||
src/JSInterpreter.js
|
||||
main.bundle.js
|
||||
1303
.eslintrc.js
1303
.eslintrc.js
File diff suppressed because it is too large
Load Diff
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
.DS_Store
|
||||
.vscode
|
||||
Changelog.txt
|
||||
Netburner.txt
|
||||
/doc/build
|
||||
@@ -6,3 +8,11 @@ Netburner.txt
|
||||
/test/*.map
|
||||
/test/*.bundle.*
|
||||
/test/*.css
|
||||
.cypress
|
||||
|
||||
# tmp folder for electron
|
||||
.package
|
||||
.build
|
||||
|
||||
# editor files
|
||||
.vscode
|
||||
|
||||
4
.prettierignore
Normal file
4
.prettierignore
Normal file
@@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
package.json
|
||||
dist
|
||||
doc/build/
|
||||
5
.prettierrc
Normal file
5
.prettierrc
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"trailingComma": "all",
|
||||
"tabWidth": 2,
|
||||
"printWidth": 120
|
||||
}
|
||||
130
CONTRIBUTING.md
130
CONTRIBUTING.md
@@ -1,24 +1,27 @@
|
||||
# Contributing to Bitburner
|
||||
|
||||
## In General
|
||||
|
||||
The game is made better because the community as a whole speaks up about
|
||||
ways to improve the game. Here's some of the ways you can make your voice
|
||||
heard:
|
||||
- [Discord](https://discordapp.com)
|
||||
There is a dedicated Discord instance set up for more free-form chats
|
||||
between all members of the community. Regular players, heavy scripters,
|
||||
Bitburner contributors, and everyone in between can be found on the
|
||||
server.
|
||||
- [Github Issues](https://github.com/danielyxie/bitburner/issues)
|
||||
Although the term "issues" can have a negative connotation, they are a
|
||||
means of communicating with the community. A new Issue can be a
|
||||
interesting new feature that you feel would improve the game. It could be
|
||||
an unexpected behavior within the game. Or because the game is about
|
||||
scripting perhaps there is something that is conflicting with the
|
||||
browser's Javascript interaction. So please do not be afraid to open a
|
||||
[new issue](https://github.com/danielyxie/bitburner/issues/new).
|
||||
|
||||
- [Discord](https://discordapp.com)
|
||||
There is a dedicated Discord instance set up for more free-form chats
|
||||
between all members of the community. Regular players, heavy scripters,
|
||||
Bitburner contributors, and everyone in between can be found on the
|
||||
server.
|
||||
- [Github Issues](https://github.com/danielyxie/bitburner/issues)
|
||||
Although the term "issues" can have a negative connotation, they are a
|
||||
means of communicating with the community. A new Issue can be a
|
||||
interesting new feature that you feel would improve the game. It could be
|
||||
an unexpected behavior within the game. Or because the game is about
|
||||
scripting perhaps there is something that is conflicting with the
|
||||
browser's Javascript interaction. So please do not be afraid to open a
|
||||
[new issue](https://github.com/danielyxie/bitburner/issues/new).
|
||||
|
||||
## Reporting Bugs
|
||||
|
||||
The recommended method for reporting a bug is by opening a
|
||||
[Github Issue](https://github.com/danielyxie/bitburner/issues).
|
||||
|
||||
@@ -30,18 +33,19 @@ already been reported as an [Issue](https://github.com/danielyxie/bitburner/issu
|
||||
|
||||
#### How to Submit a Good Bug Report
|
||||
|
||||
* **Use a clear and descriptive title** for the issue
|
||||
* **State your browser, your browser's version, and your computer's OS**
|
||||
* **Attach your save file**, if you think it would help solve the issue
|
||||
* **Provide instructions on how to reproduce the bug** in as much detail
|
||||
as possible. If you cannot reliably reproduce the bug, then just try
|
||||
your best to explain what was happening when the bug occurred
|
||||
* **Provide any scripts** that triggered the bug if the issue is Netscript-related
|
||||
* **Open your browser's Dev Console and report any error-related output**
|
||||
that may be printed there. The Dev Console can be opened on most modern
|
||||
browsers by pressing F12
|
||||
- **Use a clear and descriptive title** for the issue
|
||||
- **State your browser, your browser's version, and your computer's OS**
|
||||
- **Attach your save file**, if you think it would help solve the issue
|
||||
- **Provide instructions on how to reproduce the bug** in as much detail
|
||||
as possible. If you cannot reliably reproduce the bug, then just try
|
||||
your best to explain what was happening when the bug occurred
|
||||
- **Provide any scripts** that triggered the bug if the issue is Netscript-related
|
||||
- **Open your browser's Dev Console and report any error-related output**
|
||||
that may be printed there. The Dev Console can be opened on most modern
|
||||
browsers by pressing F12
|
||||
|
||||
## As a Developer
|
||||
|
||||
Anyone is welcome to contribute to Bitburner code. However, please read
|
||||
the [license](https://github.com/danielyxie/bitburner/blob/dev/license.txt)
|
||||
and the [readme](https://github.com/danielyxie/bitburner/blob/dev/README.md)
|
||||
@@ -52,64 +56,70 @@ To contribute to Bitburner code, you will need to have
|
||||
called `npm` is installed as well.
|
||||
|
||||
#### What are you Allowed to Contribute?
|
||||
|
||||
Not all code contributions will be accepted. The safest way to ensure
|
||||
that you don't waste time working on something that gets rejected is to
|
||||
run your idea(s)/plan(s) past [danielyxie](https://github.com/danielyxie) first.
|
||||
You can contact him through:
|
||||
|
||||
* Github
|
||||
* Discord
|
||||
* [Reddit](https://www.reddit.com/user/chapt3r/)
|
||||
- Github
|
||||
- Discord
|
||||
- [Reddit](https://www.reddit.com/user/chapt3r/)
|
||||
|
||||
Otherwise, here are some general guidelines for determining what types of
|
||||
changes are okay to contribute:
|
||||
|
||||
##### Contributions that Will Most Likely Be Accepted
|
||||
* Bug Fixes
|
||||
* Quality-of-Life Changes
|
||||
* Adding a new, commonly-requested Netscript function
|
||||
* Fixing or improving UI elements
|
||||
* Adding game settings/options
|
||||
* Adding a new Terminal command
|
||||
* Code Refactors that conform to good/standard practices
|
||||
|
||||
- Bug Fixes
|
||||
- Quality-of-Life Changes
|
||||
- Adding a new, commonly-requested Netscript function
|
||||
- Fixing or improving UI elements
|
||||
- Adding game settings/options
|
||||
- Adding a new Terminal command
|
||||
- Code Refactors that conform to good/standard practices
|
||||
|
||||
##### Contributions that will not be Accepted without prior approval
|
||||
* Changes that directly affect the game's balance
|
||||
* New gameplay mechanics
|
||||
|
||||
- Changes that directly affect the game's balance
|
||||
- New gameplay mechanics
|
||||
|
||||
#### Submitting a Pull Request
|
||||
|
||||
When submitting a pull request with your code contributions, please abide by
|
||||
the following rules:
|
||||
|
||||
- Work in a branch forked from `dev` to isolate the new code
|
||||
- Ensure you have latest from the [game's main
|
||||
repository](danielyxie/bitburner@dev)
|
||||
- Rebase your branch if necessary
|
||||
- Run the game locally to test out your changes
|
||||
- When submitting the pull request, make sure that the base fork is
|
||||
_danielyxie/bitburner_ and the base is _dev_.
|
||||
- If your changes affect the game's UI, attach some screenshots or GIFs showing
|
||||
the changes to the UI
|
||||
- If your changes affect Netscript, provide some
|
||||
scripts that can be used to test the Netscript changes.
|
||||
- Ensure you have run `npm run lint` to make sure your changes conform to the
|
||||
rules enforced across the code base. The command will fail if any of the
|
||||
linters find a violation.
|
||||
- Do not check in any bundled files (`dist\*.bundle.js`) or the `index.html`
|
||||
in the root of the repository. These will be updated as part of official
|
||||
releases.
|
||||
- Work in a branch forked from `dev` to isolate the new code
|
||||
- Ensure you have latest from the [game's main
|
||||
repository](danielyxie/bitburner@dev)
|
||||
- Rebase your branch if necessary
|
||||
- Run the game locally to test out your changes
|
||||
- When submitting the pull request, make sure that the base fork is
|
||||
_danielyxie/bitburner_ and the base is _dev_.
|
||||
- If your changes affect the game's UI, attach some screenshots or GIFs showing
|
||||
the changes to the UI
|
||||
- If your changes affect Netscript, provide some
|
||||
scripts that can be used to test the Netscript changes.
|
||||
- Ensure you have run `npm run lint` to make sure your changes conform to the
|
||||
rules enforced across the code base. The command will fail if any of the
|
||||
linters find a violation.
|
||||
- Do not check in any bundled files (`dist\*.bundle.js`) or the `index.html`
|
||||
in the root of the repository. These will be updated as part of official
|
||||
releases.
|
||||
|
||||
## As a Documentor
|
||||
|
||||
To contribute to and view your changes to the BitBurner documentation, you will
|
||||
need to have Python installed, along with [Sphinx](http://www.sphinx-doc.org).
|
||||
|
||||
Before submitting your code for a pull request, please try to follow these
|
||||
rules:
|
||||
- Work in a branch forked from `dev` to isolate the new code
|
||||
- Ensure you have latest from the [game's main
|
||||
repository](danielyxie/bitburner@dev)
|
||||
- Rebase your branch if necessary
|
||||
- When submitting the pull request, make sure that the base fork is
|
||||
_danielyxie/bitburner_ and the base is _dev_.
|
||||
- Do not check in any generated files under `doc\`. The documentation is built
|
||||
automatically by ReadTheDocs.
|
||||
|
||||
- Work in a branch forked from `dev` to isolate the new code
|
||||
- Ensure you have latest from the [game's main
|
||||
repository](danielyxie/bitburner@dev)
|
||||
- Rebase your branch if necessary
|
||||
- When submitting the pull request, make sure that the base fork is
|
||||
_danielyxie/bitburner_ and the base is _dev_.
|
||||
- Do not check in any generated files under `doc\`. The documentation is built
|
||||
automatically by ReadTheDocs.
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# Bitburner
|
||||
|
||||
Bitburner is a programming-based [incremental game](https://en.wikipedia.org/wiki/Incremental_game)
|
||||
that revolves around hacking and cyberpunk themes.
|
||||
The game can be played at https://danielyxie.github.io/bitburner.
|
||||
|
||||
# Documentation
|
||||
|
||||
The game's official documentation can be found on [Read The
|
||||
Docs](http://bitburner.readthedocs.io/). Please note that this is still a
|
||||
work-in-progress.
|
||||
@@ -16,6 +18,7 @@ For further guidance, please refer to the "As A Documentor" section of
|
||||
[CONTRIBUTING](CONTRIBUTING.md).
|
||||
|
||||
# Contribution
|
||||
|
||||
There are many ways to contribute to the game. It can be as simple as fixing
|
||||
a typo, correcting a bug, or improving the UI. For guidance on doing so,
|
||||
please refer to the [CONTRIBUTING](CONTRIBUTING.md) document.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Deploying a new version
|
||||
-----------------------
|
||||
## Deploying a new version
|
||||
|
||||
Update the following
|
||||
|
||||
- `src/Constants.ts` `Version` and `LatestUpdate`
|
||||
- `package.json` `version`
|
||||
- `doc/source/conf.py` `version` and `release`
|
||||
@@ -9,15 +9,13 @@ Update the following
|
||||
- post to discord
|
||||
- post to reddit.com/r/Bitburner
|
||||
|
||||
Deploying `dev` to the Beta Branch
|
||||
----------------------------------
|
||||
## Deploying `dev` to the Beta Branch
|
||||
|
||||
TODO
|
||||
|
||||
Development Workflow Best Practices
|
||||
-----------------------------------
|
||||
## Development Workflow Best Practices
|
||||
|
||||
- Work in a new branch forked from the `dev` branch to isolate your new code
|
||||
- Keep code-changes on a branch as small as possible. This makes it easier for code review. Each branch should be its own independent feature.
|
||||
- Regularly rebase your branch against `dev` to make sure you have the latest updates pulled.
|
||||
- When merging, always merge your branch into `dev`. When releasing a new update, then merge `dev` into `master`
|
||||
- Keep code-changes on a branch as small as possible. This makes it easier for code review. Each branch should be its own independent feature.
|
||||
- Regularly rebase your branch against `dev` to make sure you have the latest updates pulled.
|
||||
- When merging, always merge your branch into `dev`. When releasing a new update, then merge `dev` into `master`
|
||||
|
||||
3
babel.config.js
Normal file
3
babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: ["@babel/preset-react", "@babel/preset-env", "@babel/preset-typescript"],
|
||||
};
|
||||
@@ -1,61 +0,0 @@
|
||||
@mixin animation($property) {
|
||||
-webkit-animation: $property;
|
||||
-moz-animation: $property;
|
||||
-ms-animation: $property;
|
||||
-o-animation: $property;
|
||||
animation: $property;
|
||||
}
|
||||
|
||||
@mixin borderRadius($property) {
|
||||
-webkit-border-radius: $property;
|
||||
-moz-border-radius: $property;
|
||||
border-radius: $property;
|
||||
}
|
||||
|
||||
@mixin boxShadow($value) {
|
||||
-webkit-box-shadow: $value;
|
||||
-moz-box-shadow: $value;
|
||||
box-shadow: $value;
|
||||
}
|
||||
|
||||
@mixin keyframes($animationName) {
|
||||
@-webkit-keyframes #{$animationName} {
|
||||
$browser: '-webkit-' !global;
|
||||
@content;
|
||||
}
|
||||
|
||||
@-moz-keyframes #{$animationName} {
|
||||
$browser: '-moz-' !global;
|
||||
@content;
|
||||
}
|
||||
|
||||
@-ms-keyframes #{$animationName} {
|
||||
$browser: '-ms-' !global;
|
||||
@content;
|
||||
}
|
||||
|
||||
@-o-keyframes #{$animationName} {
|
||||
$browser: '-o-' !global;
|
||||
@content;
|
||||
}
|
||||
|
||||
@keyframes #{$animationName} {
|
||||
$browser: '' !global;
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin transform($property) {
|
||||
-webkit-transform: $property;
|
||||
-moz-transform: $property;
|
||||
-ms-transform: $property;
|
||||
-o-transform: $property;
|
||||
transform: $property;
|
||||
}
|
||||
|
||||
@mixin userSelect($value) {
|
||||
-webkit-user-select: $value;
|
||||
-moz-user-select: $value;
|
||||
-ms-user-select: $value;
|
||||
user-select: $value;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
* {
|
||||
font-size: $defaultFontSize;
|
||||
font-family: $fontFamily;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
vertical-align: top;
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
$fontFamily: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman';
|
||||
$defaultFontSize: 16px;
|
||||
|
||||
/* COLORS */
|
||||
$hacker-green: #adff2f;
|
||||
$success-green: #3adb76;
|
||||
$alert-red: #ff2929;
|
||||
$money-gold: #ffd700;
|
||||
$light-yellow: #faffdf;
|
||||
|
||||
/* Attributes */
|
||||
$my-stat-hp-color: #dd3434;
|
||||
$my-stat-money-color: $money-gold;
|
||||
$my-stat-hack-color: $hacker-green;
|
||||
$my-stat-physical: $light-yellow;
|
||||
$my-stat-cha-color: #a671d1;
|
||||
$my-stat-int-color: #6495ed;
|
||||
@@ -1,126 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
.active-scripts-list {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
#active-scripts-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
|
||||
> p {
|
||||
width: 70%;
|
||||
margin: 6px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.accordion-header {
|
||||
> pre {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.active-scripts-server-header {
|
||||
background-color: #444;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
color: #fff;
|
||||
margin: 6px 6px 0 6px;
|
||||
padding: 6px;
|
||||
cursor: pointer;
|
||||
width: 60%;
|
||||
text-align: left;
|
||||
border: none;
|
||||
outline: none;
|
||||
|
||||
&:after {
|
||||
content: '\02795'; /* "plus" sign (+) */
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
color: #fff;
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
&.active, &:hover {
|
||||
background-color: #555;
|
||||
}
|
||||
}
|
||||
|
||||
.active-scripts-server-header.active {
|
||||
&:after {
|
||||
content: "\2796"; /* "minus" sign (-) */
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
color: #fff;
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
.active-scripts-server-panel {
|
||||
margin: 0 6px 6px 6px;
|
||||
padding: 0 6px 6px 6px;
|
||||
width: 55%;
|
||||
margin-left: 5%;
|
||||
display: none;
|
||||
|
||||
div, ul, ul > li {
|
||||
background-color: #555;
|
||||
}
|
||||
}
|
||||
|
||||
.active-scripts-script-header {
|
||||
background-color: #555;
|
||||
border: none;
|
||||
color: var(--my-font-color);
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
outline: none;
|
||||
padding: 4px 25px 4px 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: auto;
|
||||
|
||||
&:after {
|
||||
content: '\02795'; /* "plus" sign (+) */
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 var(--my-font-color);
|
||||
position: absolute;
|
||||
bottom: 4px;
|
||||
}
|
||||
|
||||
&.active:after {
|
||||
content: "\2796"; /* "minus" sign (-) */
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&.active:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background-color: #555;
|
||||
}
|
||||
}
|
||||
|
||||
.active-scripts-script-panel {
|
||||
background-color: #555;
|
||||
display: none;
|
||||
font-size: 14px;
|
||||
margin-bottom: 6px;
|
||||
padding: 0 18px;
|
||||
width: auto;
|
||||
|
||||
pre, h2, ul, li {
|
||||
background-color: #555;
|
||||
width: auto;
|
||||
color: #fff;
|
||||
margin-left: 5%;
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* Styling for the Augmentations UI. This is the page that displays all of the
|
||||
* player's owned and purchased Augmentations and Source-Files. It also allows
|
||||
* the player to install Augmentations
|
||||
*/
|
||||
@import "theme";
|
||||
|
||||
#augmentations-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#augmentations-content {
|
||||
> p {
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
width: 70%;
|
||||
}
|
||||
}
|
||||
|
||||
.augmentations-list {
|
||||
button,
|
||||
div {
|
||||
color: var(--my-font-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 4px;
|
||||
}
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
#bladeburner-container {
|
||||
a,
|
||||
div,
|
||||
p,
|
||||
pre,
|
||||
td {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
}
|
||||
|
||||
.bladeburner-action {
|
||||
border: 1px solid #fff;
|
||||
margin: 7px;
|
||||
padding: 7px;
|
||||
white-space: pre-wrap;
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
|
||||
/* Whatever action is currently active */
|
||||
.bladeburner-active-action {
|
||||
border: 4px solid #fff;
|
||||
}
|
||||
|
||||
/* Action & Skills panel navigation button */
|
||||
%bladeburner-nav-button {
|
||||
border: 1px solid #fff;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.bladeburner-nav-button {
|
||||
@extend %bladeburner-nav-button;
|
||||
|
||||
&:hover {
|
||||
background-color: #3d4044;
|
||||
}
|
||||
}
|
||||
|
||||
.bladeburner-nav-button-inactive {
|
||||
@extend %bladeburner-nav-button;
|
||||
|
||||
text-decoration: none;
|
||||
background-color: #555;
|
||||
cursor: default;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Checkbox for (de)selecting autoleveling */
|
||||
.bbcheckbox {
|
||||
position: relative;
|
||||
display: inline;
|
||||
label {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: black;
|
||||
border-width: 1px;
|
||||
border-color: white;
|
||||
border-style: solid;
|
||||
&:after {
|
||||
content: '';
|
||||
width: 9px;
|
||||
height: 5px;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 5px;
|
||||
border: 3px solid white;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
opacity: 0;
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
margin: 3px;
|
||||
visibility: hidden;
|
||||
&:checked + label:after {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Bladeburner Console */
|
||||
.bladeburner-console-div {
|
||||
display: inline-block;
|
||||
width: 40%;
|
||||
border: 1px solid #fff;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.bladeburner-console-table {
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
table-layout: fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.bladeburner-console-input-row {
|
||||
transition: height 1s;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.bladeburner-console-input-cell {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.bladeburner-console-input {
|
||||
display: inline-block;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
border: 0;
|
||||
background-color: var(--my-background-color);
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
outline: none;
|
||||
color: var(--my-font-color);
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.bladeburner-console-line {
|
||||
word-wrap: break-word;
|
||||
hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-moz-hyphens: auto;
|
||||
}
|
||||
112
css/buttons.scss
112
css/buttons.scss
@@ -1,112 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
@import "styles";
|
||||
|
||||
/**
|
||||
* Styling for all buttons
|
||||
*
|
||||
* Includes <button> elements as well as classes that are used
|
||||
* for formatting buttons
|
||||
*/
|
||||
|
||||
/* Remove default <button> styling */
|
||||
button {
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.a-link-button,
|
||||
.std-button {
|
||||
@extend .noselect;
|
||||
text-decoration: none;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
margin: 5px;
|
||||
border: 1px solid #333;
|
||||
|
||||
&:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
&:active {
|
||||
@include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
|
||||
}
|
||||
}
|
||||
|
||||
.a-link-button-inactive,
|
||||
.std-button-disabled,
|
||||
.std-button:disabled {
|
||||
text-decoration: none;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
margin: 5px;
|
||||
border: 1px solid #333;
|
||||
cursor: default;
|
||||
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
|
||||
&:hover {
|
||||
.tooltiptext,
|
||||
.tooltiptexthigh,
|
||||
.tooltiptextleft {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.a-link-button-bought,
|
||||
.std-button-bought {
|
||||
@extend .noselect;
|
||||
text-decoration: none;
|
||||
background-color: #0a0;
|
||||
color: #fff;
|
||||
padding: 3px 5px;
|
||||
margin: 5px;
|
||||
border: 1px solid #0a0;
|
||||
cursor: default;
|
||||
|
||||
&:hover {
|
||||
.tooltiptext,
|
||||
.tooltiptexthigh,
|
||||
.tooltiptextleft {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a button that is meant to be used on accordions (accordion-header and accordion-panel classes)
|
||||
* It has a black background so it does not clash with the default accordion coloring
|
||||
*/
|
||||
.accordion-button {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
|
||||
color: #aaa;
|
||||
font-size: $defaultFontSize;
|
||||
font-weight: bold;
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
background-color: #000;
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
/* TODO focus selector? */
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
.casino-card {
|
||||
padding: 10px;
|
||||
border: solid 1px #808080;
|
||||
background-color: white;
|
||||
display: inline-block;
|
||||
border-radius: 10px;
|
||||
font-size: 14pt;
|
||||
text-align: center;
|
||||
margin: 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.casino-card .value {
|
||||
font-size: 15pt;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.casino-card.red {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.casino-card.black {
|
||||
color: black;
|
||||
}
|
||||
@@ -1,96 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for the Character Overview Panel (top-right panel)
|
||||
*/
|
||||
|
||||
#character-overview-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#character-overview-container {
|
||||
display: none;
|
||||
position: absolute; /* Stay in place */
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: auto; /* Full height */
|
||||
padding: 10px 2px;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
width: auto;
|
||||
max-width: 280px;
|
||||
overflow: auto; /* Enable scroll if needed */
|
||||
background-color: rgba(57, 54, 54, 0.9); /* Fallback color */
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
#character-overview-text {
|
||||
color: $my-stat-physical;
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: 2px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.character-stat-text {
|
||||
color: #fff;
|
||||
background-color: #444;
|
||||
}
|
||||
|
||||
.character-stat-cell {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#character-str-wrapper td,
|
||||
#character-cha-wrapper td {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.character-divider td {
|
||||
border-top: 1px #aaa solid;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#character-hp-wrapper { color: $my-stat-hp-color; }
|
||||
.character-hp-cell { color: $my-stat-hp-color; }
|
||||
#character-money-wrapper { color: $my-stat-money-color; }
|
||||
.character-money-cell { color: $my-stat-money-color; }
|
||||
#character-hack-wrapper { color: $my-stat-hack-color; }
|
||||
.character-hack-cell { color: $my-stat-hack-color; }
|
||||
#character-cha-wrapper { color: $my-stat-cha-color; }
|
||||
.character-cha-cell { color: $my-stat-cha-color; }
|
||||
#character-int-wrapper { color: $my-stat-int-color; }
|
||||
.character-int-cell { color: $my-stat-int-color; }
|
||||
.character-combat-cell { color: $my-stat-physical; }
|
||||
#character-work-wrapper { color: $my-stat-hack-color; }
|
||||
.character-work-cell { color: $my-stat-hack-color; }
|
||||
|
||||
.character-overview-btn {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
color: #cecece;
|
||||
display: inline-block;
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
font-weight: bold;
|
||||
height: 25px;
|
||||
background-color: #000;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
.character-quick-options {
|
||||
margin-top: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.character-overview-btn:hover,
|
||||
.character-overview-btn:focus {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Customized styling for the Code Mirror editor
|
||||
*/
|
||||
|
||||
#codemirror-form-wrapper {
|
||||
height: 80%;
|
||||
margin: 10px 0 0 6px;
|
||||
}
|
||||
|
||||
.CodeMirror {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
z-index: 1;
|
||||
font-family: $fontFamily;
|
||||
font-size: $defaultFontSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Highlight matches
|
||||
*/
|
||||
.cm-matchhighlight {
|
||||
background-color: #8f908a;
|
||||
}
|
||||
|
||||
.CodeMirror-selection-highlight-scrollbar {
|
||||
background-color: #8f908a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Show Invisibles
|
||||
*/
|
||||
.cm-whitespace::before {
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
color: #404f7d;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vim command display
|
||||
*/
|
||||
#codemirror-vim-command-display-wrapper {
|
||||
background-color: white;
|
||||
font-size: 13px;
|
||||
height: 30px;
|
||||
margin-left: 6px;
|
||||
}
|
||||
@@ -1,165 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for Corporations
|
||||
* The names/labels refer to "Company Management", which was the old name
|
||||
* for the mechanic before it got changed to avoid confusion with normal
|
||||
* companies
|
||||
*/
|
||||
|
||||
#cmpy-mgmt-container p,
|
||||
#cmpy-mgmt-container a,
|
||||
#cmpy-mgmt-container div,
|
||||
#cmpy-mgmt-container br {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
|
||||
/* Header tabs */
|
||||
.cmpy-mgmt-header-tab {
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
background-color: #555;
|
||||
border: 1px solid #fff;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-header-tab:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-header-tab.current {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
/* Switch between Cities */
|
||||
.cmpy-mgmt-city-tab {
|
||||
display: inline-block;
|
||||
color: #fff;
|
||||
background-color: #555;
|
||||
border: 1px solid #fff;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-city-tab:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-city-tab.current {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
/* Panels */
|
||||
#cmpy-mgmt-panel {
|
||||
height: 90%;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-industry-left-panel,
|
||||
.cmpy-mgmt-industry-right-panel {
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
overflow-x: auto;
|
||||
overflow: visible;
|
||||
top: 10px;
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-industry-overview-panel {
|
||||
border: 1px solid #fff;
|
||||
color: var(--my-font-color);
|
||||
display: inline-block;
|
||||
padding: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-employee-panel {
|
||||
border: 1px solid #fff;
|
||||
display: block;
|
||||
padding: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-warehouse-panel {
|
||||
border: 1px solid #fff;
|
||||
display: inline-block;
|
||||
padding: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Hiring new employees */
|
||||
.cmpy-mgmt-find-employee-option {
|
||||
border: 1px solid #fff;
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-find-employee-option:hover {
|
||||
background-color: #3d4044;
|
||||
}
|
||||
|
||||
/* Warehouse */
|
||||
.cmpy-mgmt-warehouse-material-div {
|
||||
padding: 2px;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-warehouse-product-div {
|
||||
padding: 2px;
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
/* Exporting materials/products */
|
||||
.cmpy-mgmt-existing-export {
|
||||
border: 1px solid #fff;
|
||||
border-radius: 25px;
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-existing-export:hover {
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
/* Corporation Upgrades */
|
||||
.cmpy-mgmt-upgrade-container {
|
||||
border: 1px solid #fff;
|
||||
width: 60%;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-upgrade-header {
|
||||
margin: 6px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.cmpy-mgmt-upgrade-div {
|
||||
display: inline-block;
|
||||
border: 1px solid #fff;
|
||||
margin: 2px;
|
||||
padding: 6px;
|
||||
border-radius: 25px;
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
.cmpy-mgmt-upgrade-div:hover {
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
/* Industry Upgrades */
|
||||
.industry-purchases-and-upgrades-header {
|
||||
font-size: 14px;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
/* Advertising */
|
||||
.cmpy-mgmt-advertising-info {
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
}
|
||||
|
||||
/* Research */
|
||||
#corporation-research-popup-box-content {
|
||||
overflow-x: auto !important;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
.add-exp-button {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.remove-exp-button {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.exp-input {
|
||||
margin: 5px 0 5px 0;
|
||||
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.touch-right {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.touch-left {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.touch-sides {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
/* Styling for the game options/settings
|
||||
*
|
||||
* Styling for the actual Game Options popup box can be found in popupboxes.scss
|
||||
* This stylesheet is for everything inside the Game Options pop-up box
|
||||
*/
|
||||
|
||||
@import "theme";
|
||||
|
||||
#game-options-right-panel {
|
||||
a {
|
||||
display: block;
|
||||
width: 46%;
|
||||
}
|
||||
|
||||
button {
|
||||
display: inline-block;
|
||||
width: 46%;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for the Gang mechanic UI (BitNode-2)
|
||||
*/
|
||||
|
||||
#gang-container {
|
||||
position: fixed;
|
||||
padding: 6px;
|
||||
|
||||
p, pre {
|
||||
font-size: $defaultFontSize * 0.9375;
|
||||
}
|
||||
|
||||
select {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
#gang-management-subpage > p {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.gang-member-info-div {
|
||||
background-color: #555;
|
||||
display: inline;
|
||||
float: left;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Showing owned upgrades in the Equipment Box
|
||||
*/
|
||||
|
||||
.gang-owned-upgrades-div {
|
||||
display: inline-block;
|
||||
margin-left: 6px;
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.gang-owned-upgrade {
|
||||
border: 1px solid white;
|
||||
font-size: 12px;
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
}
|
||||
7
css/grid.min.css
vendored
7
css/grid.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -1,75 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for the Hacknet Nodes UI Page
|
||||
*/
|
||||
|
||||
#hacknet-nodes-container {
|
||||
position: fixed;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.hacknet-general-info {
|
||||
margin: 10px;
|
||||
width: 70vw;
|
||||
}
|
||||
|
||||
#hacknet-nodes-container li {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
|
||||
&.hacknet-node {
|
||||
$boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
|
||||
@include boxShadow($boxShadowArgs);
|
||||
|
||||
margin: 6px;
|
||||
padding: 7px;
|
||||
width: 35vw;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
}
|
||||
}
|
||||
|
||||
#hacknet-nodes-list {
|
||||
list-style: none;
|
||||
width: 82vw;
|
||||
}
|
||||
|
||||
#hacknet-nodes-money {
|
||||
margin: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#hacknet-nodes-money-multipliers-div {
|
||||
display: inline-block;
|
||||
width: 70vw;
|
||||
}
|
||||
|
||||
#hacknet-nodes-multipliers {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#hacknet-nodes-purchase-button {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.hacknet-node-container {
|
||||
display: inline-table;
|
||||
|
||||
.row {
|
||||
display: table-row;
|
||||
height: 30px;
|
||||
|
||||
p {
|
||||
display: table-cell;
|
||||
}
|
||||
}
|
||||
|
||||
.upgradable-info {
|
||||
display: inline-block;
|
||||
margin: 0 4px; /* Don't want the vertical margin/padding, just left & right */
|
||||
padding: 0 4px;
|
||||
width: $defaultFontSize * 4;
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
.blinking-cursor {
|
||||
font-weight: 100;
|
||||
color: #2E3D48;
|
||||
-webkit-animation: 1s cursorblink step-end infinite;
|
||||
-moz-animation: 1s cursorblink step-end infinite;
|
||||
-ms-animation: 1s cursorblink step-end infinite;
|
||||
-o-animation: 1s cursorblink step-end infinite;
|
||||
animation: 1s cursorblink step-end infinite;
|
||||
}
|
||||
|
||||
@keyframes "cursorblink" {
|
||||
from, to {
|
||||
color: transparent;
|
||||
}
|
||||
50% {
|
||||
color: $hacker-green;
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes cursorblink {
|
||||
from, to {
|
||||
color: transparent;
|
||||
}
|
||||
50% {
|
||||
color: $hacker-green;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes "cursorblink" {
|
||||
from, to {
|
||||
color: transparent;
|
||||
}
|
||||
50% {
|
||||
color: $hacker-green;
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-keyframes "cursorblink" {
|
||||
from, to {
|
||||
color: transparent;
|
||||
}
|
||||
50% {
|
||||
color: $hacker-green;
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes "cursorblink" {
|
||||
from, to {
|
||||
color: transparent;
|
||||
}
|
||||
50% {
|
||||
color: $hacker-green;
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/* interactivetutorial.css */
|
||||
#interactive-tutorial-wrapper {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#interactive-tutorial-container {
|
||||
display: none;
|
||||
position: absolute; /* Stay in place */
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 450px;
|
||||
padding: 10px;
|
||||
border: 5px solid #fff;
|
||||
width: 23%;
|
||||
overflow: hidden;
|
||||
background-color: #444; /* Fallback color */
|
||||
color: #fff;
|
||||
|
||||
> strong {
|
||||
background-color: #444;
|
||||
}
|
||||
}
|
||||
|
||||
#interactive-tutorial-text {
|
||||
padding: 4px;
|
||||
margin: 4px;
|
||||
color: #fff;
|
||||
background-color: #444;
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
max-height: 350px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#interactive-tutorial-exit,
|
||||
#interactive-tutorial-next,
|
||||
#interactive-tutorial-back {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
|
||||
color: #aaa;
|
||||
font-size: $defaultFontSize * 1.125;
|
||||
font-weight: bold;
|
||||
background-color: #000;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
#interactive-tutorial-exit {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
#interactive-tutorial-back {
|
||||
float: left;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
#interactive-tutorial-next {
|
||||
float: right;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.interactive-tutorial-command {
|
||||
background-color: #000;
|
||||
color: $hacker-green;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.interactive-tutorial-code {
|
||||
background-color: #272822;
|
||||
color: white;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.interactive-tutorial-tab {
|
||||
background-color: #555;
|
||||
color: #e6e6e6;
|
||||
padding: 3px;
|
||||
box-shadow: 0 0 3px #000;
|
||||
}
|
||||
111
css/loader.scss
111
css/loader.scss
@@ -1,111 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "reset";
|
||||
@import "theme";
|
||||
|
||||
@include keyframes(LOADERSPINNER) {
|
||||
0% {
|
||||
#{$browser}transform: translate(-50%, -50%) rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
#{$browser}transform: translate(-50%, -50%) rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@include keyframes(LOADERLABEL) {
|
||||
0% {
|
||||
opacity: 1.0;
|
||||
#{$browser}transform: translate(-50%, -50%) scale(1.0);
|
||||
}
|
||||
5% {
|
||||
opacity: 0.5;
|
||||
#{$browser}transform: translate(-50%, -50%) scale(0.5);
|
||||
}
|
||||
95% {
|
||||
opacity: 0.5;
|
||||
#{$browser}transform: translate(-50%, -50%) scale(0.5);
|
||||
}
|
||||
100% {
|
||||
opacity: 1.0;
|
||||
#{$browser}transform: translate(-50%, -50%) scale(1.0);
|
||||
}
|
||||
}
|
||||
|
||||
.loaderoverlay {
|
||||
$spinnerBoxSize: 200px;
|
||||
$themeColor: #6f3;
|
||||
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #000;
|
||||
color: $themeColor;
|
||||
|
||||
%spinnerBox {
|
||||
border: 20px solid rgba(0, 0, 0, 0);
|
||||
border-top-color: $themeColor;
|
||||
border-bottom-color: $themeColor;
|
||||
border-radius: 1000px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
.loaderspinner:before,
|
||||
.loaderspinner:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.loaderspinner {
|
||||
@extend %spinnerBox;
|
||||
@include animation(LOADERSPINNER 5s linear infinite);
|
||||
|
||||
width: $spinnerBoxSize;
|
||||
height: $spinnerBoxSize;
|
||||
}
|
||||
|
||||
.loaderspinner:before {
|
||||
@extend %spinnerBox;
|
||||
@include animation(LOADERSPINNER 10s linear infinite);
|
||||
|
||||
width: $spinnerBoxSize * 0.8;
|
||||
height: $spinnerBoxSize * 0.8;
|
||||
}
|
||||
|
||||
.loaderspinner:after {
|
||||
@extend %spinnerBox;
|
||||
@include animation(LOADERSPINNER 5s linear infinite);
|
||||
|
||||
width: $spinnerBoxSize * 0.6;
|
||||
height: $spinnerBoxSize * 0.6;
|
||||
}
|
||||
|
||||
.loaderlabel {
|
||||
@include animation(LOADERLABEL 5s linear infinite);
|
||||
|
||||
text-transform: uppercase;
|
||||
font-family: sans-serif;
|
||||
font-size: $defaultFontSize * 1.375;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.killAllMessage {
|
||||
position: absolute;
|
||||
top: 95%;
|
||||
left: 50%;
|
||||
-webkit-transform: translateX(-50%);
|
||||
-moz-transform: translateX(-50%);
|
||||
-ms-transform: translateX(-50%);
|
||||
-o-transform: translateX(-50%);
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.killAllMessageWrapperHidden {
|
||||
display: none;
|
||||
}
|
||||
.killAllMessageWrapperShow {
|
||||
display: block;
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for the main navigation menu on the left-hand-side
|
||||
*/
|
||||
|
||||
.mainmenu {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 10%;
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
|
||||
border: 0;
|
||||
border-bottom: 1px solid #000;
|
||||
border-radius: 0;
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
/* Default buttons */
|
||||
.mainmenu > li a,
|
||||
.mainmenu > li button {
|
||||
display: block;
|
||||
color: #e6e6e6;
|
||||
background-color: #555;
|
||||
padding: 12px 8px;
|
||||
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.mainmenu.classic > li a,
|
||||
.mainmenu.classic > li button {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.mainmenu.compact > li a,
|
||||
.mainmenu.compact > li button {
|
||||
display: block;
|
||||
color: #e6e6e6;
|
||||
background-color: #555;
|
||||
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/* Hovering makes them lighter */
|
||||
.mainmenu > li a:hover,
|
||||
.mainmenu > li a:hover:not(.active),
|
||||
.mainmenu > li a:focus {
|
||||
background-color: #777;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.mainmenu > li button:hover,
|
||||
.mainmenu > li button:hover:not(.active) {
|
||||
background-color: #777;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* Panel headers can become active, and they are "lighter" than the rest */
|
||||
.mainmenu > li a.active,
|
||||
.mainmenu > li button.active {
|
||||
background-color: #777;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.mainmenu > li a.active:hover,
|
||||
.mainmenu > li button.active:hover {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
#hacking-menu-header-li,
|
||||
#character-menu-header-li,
|
||||
#world-menu-header-li,
|
||||
#help-menu-header-li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Accordion Outline */
|
||||
.mainmenu-accordion-header,
|
||||
.mainmenu-accordion-header-compact {
|
||||
outline: 2px solid #fff !important;
|
||||
}
|
||||
|
||||
.mainmenu-accordion-header-classic {
|
||||
border: 2px solid #fff;
|
||||
padding: 16px !important;
|
||||
}
|
||||
|
||||
/* Plus and minus signs */
|
||||
.mainmenu-accordion-header:after,
|
||||
.mainmenu-accordion-header-compact:after {
|
||||
content: '\02795';
|
||||
float: right;
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
position: absolute;
|
||||
bottom: 25%;
|
||||
right: 3px;
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #fff;
|
||||
}
|
||||
|
||||
.mainmenu-accordion-header-classic:after {
|
||||
content: '\02795';
|
||||
float: right;
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
color: #fff;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.mainmenu-accordion-header.opened,
|
||||
.mainmenu-accordion-header-classic.opened,
|
||||
.mainmenu-accordion-header-compact.opened {
|
||||
background-color: #222 !important;
|
||||
|
||||
&:after {
|
||||
content: "\2796";
|
||||
}
|
||||
}
|
||||
|
||||
/* Slide down transition */
|
||||
.mainmenu-accordion-panel {
|
||||
max-height: 0;
|
||||
opacity: 1;
|
||||
transition: max-height 0.2s ease-out;
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/* CSS for different main menu pages, such as character info, script editor, etc (but excluding
|
||||
terminal which has its own page) */
|
||||
|
||||
.generic-menupage-container {
|
||||
height: 100%;
|
||||
padding-left: 10px;
|
||||
margin-left: 10%;
|
||||
width: 99%;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
/* Character Info */
|
||||
#character-container {
|
||||
padding-top: 10px;
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
/* World */
|
||||
#world-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#world-city-name,
|
||||
#world-city-desc {
|
||||
padding: 4px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
/* Create program */
|
||||
#create-program-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#create-program-page-text,
|
||||
#create-program-list {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
/* Factions and Faction (Single Faction page) */
|
||||
#factions-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#faction-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.faction-work-div {
|
||||
width: 70%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.faction-work-div-wrapper {
|
||||
overflow: hidden;
|
||||
border: 2px solid #333;
|
||||
padding: 6px;
|
||||
margin: 6px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#faction-container p,
|
||||
#faction-container pre {
|
||||
padding: 4px 6px;
|
||||
margin: 4px 6px;
|
||||
}
|
||||
|
||||
#faction-container pre {
|
||||
width: 70%;
|
||||
white-space: pre-wrap; /* Since CSS 2.1 */
|
||||
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
|
||||
white-space: -pre-wrap; /* Opera 4-6 */
|
||||
white-space: -o-pre-wrap; /* Opera 7 */
|
||||
word-wrap: break-word; /* Internet Explorer 5.5+ */
|
||||
}
|
||||
|
||||
/* World */
|
||||
#world-container li {
|
||||
margin: 0 0 15px 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
/* Tutorial */
|
||||
#tutorial-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#tutorial-text {
|
||||
width: 70%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#tutorial-container a {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/* Dev menu */
|
||||
#dev-menu-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#dev-menu-text {
|
||||
width: 70%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#dev-menu-container a {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
/* Location */
|
||||
#location-container {
|
||||
position: fixed;
|
||||
padding: 6px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#location-container a {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
#location-slums-description {
|
||||
width: 70%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#location-return-to-world-button {
|
||||
margin: 10px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
#location-container > * {
|
||||
margin: 10px 5px 10px 5px;
|
||||
}
|
||||
|
||||
#location-job-reputation,
|
||||
#location-company-favor {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
/* Infiltration */
|
||||
#infiltration-container {
|
||||
position: fixed;
|
||||
margin: 5px;
|
||||
width: 70%;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
#milestones-container {
|
||||
position: fixed;
|
||||
padding: 6px;
|
||||
width: 60%;
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/* css for Missions */
|
||||
|
||||
/* Hacking missions */
|
||||
#mission-container {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.hack-mission-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-gap: 2.5%;
|
||||
height: 90%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
overflow-y: auto;
|
||||
padding-right: 10px;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.hack-mission-node {
|
||||
z-index: 5;
|
||||
background-color: #808080;
|
||||
align-self: center;
|
||||
justify-self: center;
|
||||
display: inline-block;
|
||||
|
||||
p {
|
||||
@include userSelect(none);
|
||||
|
||||
margin-top: 8px;
|
||||
color: #fff;
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hack-mission-player-node {
|
||||
color: #fff;
|
||||
background-color: #00f;
|
||||
}
|
||||
|
||||
.hack-mission-player-node-active {
|
||||
border: 2px solid #fff;
|
||||
background-color: #66f;
|
||||
}
|
||||
|
||||
.hack-mission-enemy-node {
|
||||
color: #fff;
|
||||
background-color: #f00;
|
||||
}
|
||||
|
||||
.hack-mission-cpu-node {
|
||||
@include borderRadius(50%);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.hack-mission-firewall-node {
|
||||
width: 90%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.hack-mission-database-node {
|
||||
@include transform(skew(20deg));
|
||||
|
||||
width: 100%;
|
||||
height: 90%;
|
||||
|
||||
p {
|
||||
@include transform(skew(-20deg));
|
||||
@include userSelect(none);
|
||||
|
||||
color: #fff;
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
margin-top: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hack-mission-transfer-node {
|
||||
@include transform(skew(-20deg));
|
||||
|
||||
width: 100%;
|
||||
height: 90%;
|
||||
|
||||
p {
|
||||
@include transform(skew(20deg));
|
||||
@include userSelect(none);
|
||||
|
||||
color: #fff;
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
margin-top: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.hack-mission-spam-node,
|
||||
.hack-mission-shield-node {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Non-map related DOM elements */
|
||||
|
||||
/* Element at the top of the Hacking Mission page (intro page, start button, guide buttons, etc.) */
|
||||
.hack-mission-header-element {
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.hack-mission-action-buttons-container {
|
||||
border: 2px solid #fff;
|
||||
}
|
||||
@@ -1,200 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
@import "styles";
|
||||
|
||||
/* Pop-up boxes */
|
||||
.popup-box-container {
|
||||
display: none; /* Initially hidden */
|
||||
position: fixed; /* Stay in place */
|
||||
z-index: 10; /* Sit on top */
|
||||
left: 0;
|
||||
top: 0;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
background-color: rbga(var(--my-background-color), 0.4);
|
||||
}
|
||||
|
||||
.popup-box-content {
|
||||
background-color: var(--my-background-color);
|
||||
padding: 12px;
|
||||
border: 5px solid var(--my-highlight-color);
|
||||
width: 70%;
|
||||
max-height: 80%;
|
||||
overflow-y: auto;
|
||||
z-index: 11; /* Sit on top of the container */
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
.popup-box-button,
|
||||
.popup-box-button-inactive {
|
||||
color: #aaa;
|
||||
float: right;
|
||||
font-size: $defaultFontSize;
|
||||
font-weight: bold;
|
||||
padding: 2px;
|
||||
margin: 6px;
|
||||
border: 1px solid #fff;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.popup-box-button:hover,
|
||||
.popup-box-button:focus {
|
||||
color: var(--my-font-color);
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.popupbox-button-inactive {
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
#yes-no-text-input-box-input {
|
||||
color: var(--my-font-color);
|
||||
border: 1px solid #fff;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.dialog-box-container,
|
||||
#log-box-container {
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
width: 50%;
|
||||
height: auto;
|
||||
max-height: 50%;
|
||||
top: 40%;
|
||||
left: 50%;
|
||||
margin: -10% 0 0 -25%;
|
||||
overflow: auto;
|
||||
background-color: var(--my-background-color);
|
||||
border: 5px solid var(--my-highlight-color);
|
||||
}
|
||||
|
||||
.dialog-box-content,
|
||||
#log-box-content {
|
||||
z-index: 2;
|
||||
background-color: var(--my-background-color);
|
||||
padding: 10px;
|
||||
|
||||
p span {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dialog-box-close-button {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
@extend .noselect;
|
||||
|
||||
float: right;
|
||||
color: #aaa;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#log-box-close {
|
||||
position: fixed;
|
||||
right: 27%;
|
||||
}
|
||||
|
||||
#log-box-kill-script {
|
||||
right: 11%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#log-box-close, #log-box-kill-script {
|
||||
float: right;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dialog-box-close-button:hover,
|
||||
.dialog-box-close-button:focus,{
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Faction invitation box */
|
||||
#faction-invitation-box-container {
|
||||
transition: opacity 400ms ease-in;
|
||||
}
|
||||
#faction-invitation-box-warning {
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/* Infiltration-box */
|
||||
#infiltration-box-sell,
|
||||
#infiltration-box-faction {
|
||||
display: block;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
|
||||
#infiltration-box-content span {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#infiltration-faction-select {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
/* Generic Yes No Box */
|
||||
#yes-no-text-input-box-input {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* Game Options */
|
||||
#game-options-container {
|
||||
transition: opacity 400ms ease-in;
|
||||
}
|
||||
|
||||
#game-options-content {
|
||||
background-color: var(--my-background-color);
|
||||
padding: 10px;
|
||||
border: 5px solid var(--my-highlight-color);
|
||||
color: var(--my-font-color);
|
||||
width: 80%;
|
||||
max-height: 80%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#game-options-left-panel,
|
||||
#game-options-right-panel {
|
||||
display: inline-block;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
#game-options-close-button {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
|
||||
color: #aaa;
|
||||
float: right;
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#game-options-close-button:hover,
|
||||
#game-options-close-button:focus {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#game-options-left-panel fieldset {
|
||||
padding: 2px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
#import-game-file-selector {
|
||||
display: none;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for the Red Pill screen (the BitNode selection UI)
|
||||
*/
|
||||
#red-pill-container {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.bitnode {
|
||||
&.level-0 {
|
||||
color: red;
|
||||
}
|
||||
|
||||
&.level-1 {
|
||||
color: yellow;
|
||||
}
|
||||
|
||||
&.level-2 {
|
||||
color: #48d1cc;
|
||||
}
|
||||
|
||||
&.level-3 {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
&.unimplemented {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Styling for the Re-Sleeving Page
|
||||
*/
|
||||
@import "theme";
|
||||
|
||||
.resleeve-container {
|
||||
border: 1px solid white;
|
||||
margin: 4px;
|
||||
width: 75%;
|
||||
|
||||
p {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
}
|
||||
|
||||
.resleeve-panel {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.resleeve-aug-selector {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
|
||||
option {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
}
|
||||
@@ -1,124 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/**
|
||||
* Styling for Script Editor (both Ace and CodeMirror)
|
||||
*/
|
||||
|
||||
#script-editor-container {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#ace-editor {
|
||||
margin: 10px;
|
||||
height: 80%;
|
||||
width: 100%;
|
||||
margin-left: 6px;
|
||||
padding-left: 6px;
|
||||
padding-top: 6px;
|
||||
padding-bottom: 6px;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
z-index: 1;
|
||||
font-family: $fontFamily;
|
||||
}
|
||||
|
||||
/* This temp element is used for auto adjusting filename field */
|
||||
.tmp-element {
|
||||
visibility: hidden;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
#script-editor-container {
|
||||
position: fixed;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#script-editor-buttons-wrapper {
|
||||
width: 100%;
|
||||
padding-right: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#script-editor-wrapper {
|
||||
height: 100%;
|
||||
width: 70%;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#script-editor-filename-wrapper {
|
||||
background-color: #555;
|
||||
margin-left: 6px;
|
||||
margin-right: 0;
|
||||
padding-left: 6px;
|
||||
width: 100%;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
}
|
||||
|
||||
#script-editor-filename-tag {
|
||||
display: inline-block;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 0;
|
||||
float: center;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#script-editor-filename {
|
||||
$boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
|
||||
@include boxShadow($boxShadowArgs);
|
||||
|
||||
background-color: #555;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
float: center;
|
||||
margin: 4px;
|
||||
padding: 2px;
|
||||
resize: none;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
#script-editor-status {
|
||||
float: left;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#script-editor-options-panel {
|
||||
position: absolute;
|
||||
right: 9%;
|
||||
bottom: 15%;
|
||||
border: 2px solid #fff;
|
||||
width: 19%;
|
||||
background-color: #444;
|
||||
padding: 2px;
|
||||
overflow: auto;
|
||||
z-index: 1;
|
||||
color: #fff;
|
||||
max-height: 50%;
|
||||
}
|
||||
|
||||
#script-editor-options-panel fieldset {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
padding: 2px;
|
||||
font-size: $defaultFontSize * 0.75;
|
||||
|
||||
input {
|
||||
margin: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Specific overrides for Ace Editor */
|
||||
.ace_line,
|
||||
.ace_line * {
|
||||
background-color: transparent;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ace_text-input {
|
||||
font-size: $defaultFontSize;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Specified overrides for Code mirror Editor are defined in codemirror-override.scss */
|
||||
@@ -1,29 +0,0 @@
|
||||
/**
|
||||
* Styling for the Sleeves Management page
|
||||
*/
|
||||
@import "theme";
|
||||
|
||||
.sleeve-container {
|
||||
border: 1px solid white;
|
||||
margin: 4px;
|
||||
width: 75%;
|
||||
|
||||
p {
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
}
|
||||
}
|
||||
|
||||
.sleeves-page-info {
|
||||
display: "block";
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.sleeve-panel {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
|
||||
select {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
#stock-market-container {
|
||||
position: fixed;
|
||||
padding: 6px;
|
||||
|
||||
p {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
|
||||
a {
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
}
|
||||
}
|
||||
|
||||
.stock-market-info-and-purchases {
|
||||
> h2 {
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
> p {
|
||||
display: block;
|
||||
margin-left: 10px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
> a, > button {
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
#stock-market-list {
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
button {
|
||||
font-size: $defaultFontSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#stock-market-watchlist-filter {
|
||||
display: block;
|
||||
margin: 5px 5px 5px 10px;
|
||||
padding: 4px;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.stock-market-input {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
margin: 2px;
|
||||
background-color: #000;
|
||||
border: 1px solid #fff;
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
.stock-market-price-movement-warning {
|
||||
border: 1px solid white;
|
||||
color: red;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.stock-market-position-text {
|
||||
color: #fff;
|
||||
display: block;
|
||||
|
||||
p {
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.stock-market-order-list {
|
||||
overflow-y: auto;
|
||||
max-height: 100px;
|
||||
|
||||
li {
|
||||
color: #fff;
|
||||
padding: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.stock-market-order-cancel-btn {
|
||||
background-color: #000;
|
||||
border: 1px solid #fff;
|
||||
color: var(--my-font-color);
|
||||
margin: 2px;
|
||||
padding: 0;
|
||||
}
|
||||
428
css/styles.scss
428
css/styles.scss
@@ -1,428 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
@import "reset";
|
||||
|
||||
:root {
|
||||
--my-font-color: #6f3;
|
||||
--my-background-color: #000;
|
||||
--my-highlight-color: #fff;
|
||||
--my-prompt-color: #f92672;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--my-background-color);
|
||||
}
|
||||
|
||||
p,
|
||||
pre,
|
||||
h2,
|
||||
.text,
|
||||
td {
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: $defaultFontSize * 1.375;
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 2px;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
br {
|
||||
@extend .noselect;
|
||||
}
|
||||
|
||||
#entire-game-container {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Disable border highlight on elements */
|
||||
input:focus,
|
||||
textarea:focus,
|
||||
button:focus,
|
||||
td:focus,
|
||||
tr:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Make html links ("a" elements) nice looking buttons with this class */
|
||||
a:link,
|
||||
a:visited {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
color: #fff;
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
.text-input {
|
||||
color: #fff;
|
||||
background-color: #000;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
/* Notification icon (for create program right now only) */
|
||||
#create-program-tab {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#create-program-notification {
|
||||
font-size: $defaultFontSize * 0.625;
|
||||
position: absolute; /* Position the badge within the relatively positioned button */
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#factions-tab {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#factions-notification {
|
||||
font-size: $defaultFontSize * 0.625;
|
||||
position: absolute; /* Position the badge within the relatively positioned button */
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#augmentations-tab {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#augmentations-notification {
|
||||
font-size: $defaultFontSize * 0.625;
|
||||
position: absolute; /* Position the badge within the relatively positioned button */
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.notification-on {
|
||||
background-color: #fa3e3e;
|
||||
color: #fff;
|
||||
border-radius: 2px;
|
||||
padding: 1px 3px;
|
||||
}
|
||||
|
||||
.notification-off {
|
||||
background-color: #333;
|
||||
color: #333;
|
||||
border-radius: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* help tip. Question mark that opens popup with info/details */
|
||||
.help-tip {
|
||||
background-color: black;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 5px;
|
||||
color: #fff;
|
||||
content: '?';
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.help-tip-big {
|
||||
content: '?';
|
||||
padding: 3px;
|
||||
margin-left: 3px;
|
||||
color: #fff;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 8px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.help-tip:hover,
|
||||
.help-tip-big:hover {
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
.help-tip:active,
|
||||
.help-tip-big:active {
|
||||
@include boxShadow(inset 0 1px 4px rgba(0, 0, 0, 0.6));
|
||||
}
|
||||
|
||||
/* Flashing button (Red) */
|
||||
@-webkit-keyframes glowing {
|
||||
0% { background-color: #b20000; -webkit-box-shadow: 0 0 3px #b20000; }
|
||||
50% { background-color: #f00; -webkit-box-shadow: 0 0 40px #f00; }
|
||||
100% { background-color: #b20000; -webkit-box-shadow: 0 0 3px #b20000; }
|
||||
}
|
||||
|
||||
@-moz-keyframes glowing {
|
||||
0% { background-color: #b20000; -moz-box-shadow: 0 0 3px #b20000; }
|
||||
50% { background-color: #f00; -moz-box-shadow: 0 0 40px #f00; }
|
||||
100% { background-color: #b20000; -moz-box-shadow: 0 0 3px #b20000; }
|
||||
}
|
||||
|
||||
@-o-keyframes glowing {
|
||||
0% { background-color: #b20000; box-shadow: 0 0 3px #b20000; }
|
||||
50% { background-color: #f00; box-shadow: 0 0 40px #f00; }
|
||||
100% { background-color: #b20000; box-shadow: 0 0 3px #b20000; }
|
||||
}
|
||||
|
||||
@keyframes glowing {
|
||||
0% { background-color: #b20000; box-shadow: 0 0 3px #b20000; }
|
||||
50% { background-color: #f00; box-shadow: 0 0 40px #f00; }
|
||||
100% { background-color: #b20000; box-shadow: 0 0 3px #b20000; }
|
||||
}
|
||||
|
||||
.flashing-button {
|
||||
-webkit-animation: glowing 1500ms infinite;
|
||||
-moz-animation: glowing 1500ms infinite;
|
||||
-o-animation: glowing 1500ms infinite;
|
||||
animation: glowing 1500ms infinite;
|
||||
}
|
||||
|
||||
/* Blinking Cursor */
|
||||
/* ----- blinking cursor animation ----- */
|
||||
.typed-cursor {
|
||||
opacity: 1;
|
||||
-webkit-animation: blink 0.95s infinite;
|
||||
-moz-animation: blink 0.95s infinite;
|
||||
-ms-animation: blink 0.95s infinite;
|
||||
-o-animation: blink 0.95s infinite;
|
||||
animation: blink 0.95s infinite;
|
||||
}
|
||||
|
||||
@-keyframes blink{
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
@-webkit-keyframes blink{
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
@-moz-keyframes blink{
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
@-ms-keyframes blink{
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
@-o-keyframes blink{
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
|
||||
/* Status text */
|
||||
@-webkit-keyframes status-text {
|
||||
from {
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.status-text {
|
||||
z-index: 2;
|
||||
-webkit-animation: status-text 3s 1;
|
||||
}
|
||||
|
||||
#status-text-container {
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
#status-text {
|
||||
background-color: transparent;
|
||||
bottom: 0;
|
||||
color: #fff;
|
||||
display: none;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
margin-right: 14px;
|
||||
opacity: 0;
|
||||
padding: 4px;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
/* Scan analyze links from AutoLink */
|
||||
.scan-analyze-link {
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
text-decoration: underline;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Accordion menus (Header with collapsible panel) */
|
||||
.accordion-header {
|
||||
background-color: #444;
|
||||
color: #fff;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
margin: 6px 6px 0 6px;
|
||||
padding: 4px 6px;
|
||||
cursor: pointer;
|
||||
width: 80%;
|
||||
text-align: left;
|
||||
border: none;
|
||||
outline: none;
|
||||
position: relative;
|
||||
|
||||
&.active,
|
||||
&:hover {
|
||||
background-color: #555;
|
||||
}
|
||||
|
||||
&.active:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '\02795'; /* "plus" sign (+) */
|
||||
font-size: $defaultFontSize * 0.875;
|
||||
float: right;
|
||||
color: transparent;
|
||||
text-shadow: 0 0 0 #fff;
|
||||
position: absolute;
|
||||
bottom: 5px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
&.active:after {
|
||||
content: "\2796"; /* "minus" sign (-) */
|
||||
}
|
||||
}
|
||||
|
||||
.accordion-panel {
|
||||
margin: 0 6px 6px 6px;
|
||||
padding: 0 6px 6px 6px;
|
||||
width: 75%;
|
||||
margin-left: 5%;
|
||||
display: none;
|
||||
background-color: #555;
|
||||
overflow-y: auto;
|
||||
overflow-x: none;
|
||||
|
||||
div, ul, p, ul > li {
|
||||
background-color: #555;
|
||||
}
|
||||
}
|
||||
|
||||
/* override the global <span> styling */
|
||||
#active-scripts-total-production-active,
|
||||
#active-scripts-total-prod-aug-total,
|
||||
#active-scripts-total-prod-aug-avg {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Helper Classes */
|
||||
.hacker-green {
|
||||
color: $hacker-green;
|
||||
}
|
||||
|
||||
.money-gold {
|
||||
color: $money-gold;
|
||||
}
|
||||
|
||||
.light-yellow {
|
||||
color: $light-yellow;
|
||||
}
|
||||
|
||||
.failure {
|
||||
color: $alert-red;
|
||||
text-shadow: 0 0 0 $alert-red;
|
||||
}
|
||||
|
||||
.success {
|
||||
color: $success-green;
|
||||
text-shadow: 0 0 0 $success-green;
|
||||
}
|
||||
|
||||
.physical-yellow {
|
||||
color: $my-stat-physical;
|
||||
}
|
||||
|
||||
.charisma-purple {
|
||||
color: $my-stat-cha-color;
|
||||
}
|
||||
|
||||
.reputation {
|
||||
color: $light-yellow;
|
||||
}
|
||||
|
||||
.smallfont {
|
||||
font-size: $defaultFontSize * 0.8125;
|
||||
}
|
||||
|
||||
.samefont {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.noscrollbar {
|
||||
-ms-overflow-style: none; /* IE and Edge */
|
||||
/* stylelint-disable-next-line property-no-unknown */
|
||||
scrollbar-width: none; /* Firefox https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-width */
|
||||
}
|
||||
|
||||
.noscrollbar::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10);
|
||||
}
|
||||
|
||||
.optionCheckbox {
|
||||
margin: 5px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.optionRange {
|
||||
-webkit-appearance: none;
|
||||
background: #777;
|
||||
outline: none;
|
||||
opacity: 0.7;
|
||||
height: 10px;
|
||||
-webkit-transition: 0.2s;
|
||||
transition: opacity 0.2s;
|
||||
margin: 3px;
|
||||
}
|
||||
|
||||
.optionRange::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background: var(--my-font-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.optionRange::-moz-range-thumb {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background: var(--my-font-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.noselect {
|
||||
-moz-user-select: -moz-none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
#terminal-container {
|
||||
position: fixed;
|
||||
margin-left: 10%;
|
||||
height: 100%;
|
||||
width: 99%;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
#terminal {
|
||||
padding-top: 10px;
|
||||
padding-left: 10px;
|
||||
height: auto;
|
||||
width: 70%;
|
||||
font-size: $defaultFontSize;
|
||||
overflow: auto;
|
||||
overflow-y: scroll;
|
||||
background-color: var(--my-background-color);
|
||||
table-layout: fixed;
|
||||
|
||||
.prompt {
|
||||
color: var(--my-prompt-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#terminal-input {
|
||||
background-color: var(--my-background-color);
|
||||
color: var(--my-font-color);
|
||||
transition: height 1s;
|
||||
}
|
||||
|
||||
.terminal-input {
|
||||
display: inline-block;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
border: 0;
|
||||
background-color: var(--my-background-color);
|
||||
font-size: $defaultFontSize;
|
||||
outline: none;
|
||||
color: var(--my-font-color);
|
||||
}
|
||||
|
||||
.terminal-line {
|
||||
width: 70%;
|
||||
word-wrap: break-word;
|
||||
hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
-moz-hyphens: auto;
|
||||
}
|
||||
|
||||
#terminal-input-td {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
#terminal-input-td textarea {
|
||||
overflow: hidden;
|
||||
resize: none;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#terminal-input-header {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
#terminal-input-text-box {
|
||||
margin-left: 2px;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
@import "theme";
|
||||
|
||||
/* Styling for tooltip-style elements */
|
||||
|
||||
/* Tool tips (when hovering over an element */
|
||||
.tooltip {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
|
||||
.tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 300px;
|
||||
background-color: var(--my-background-color);
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
left: 101%;
|
||||
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
/* Positioned to left of element rather than right */
|
||||
.tooltiptextleft {
|
||||
visibility: hidden;
|
||||
width: 300px;
|
||||
background-color: var(--my-background-color);
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-100%, -100%);
|
||||
|
||||
/* Backwards compatibility */
|
||||
-webkit-transform: translate(-100%, -100%);
|
||||
-moz-transform: translate(-100%, -100%);
|
||||
-o-transform: translate(-100%, -100%);
|
||||
-ms-transform: translate(-100%, -100%);
|
||||
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
/* Tooltip goes below cursor instead of above */
|
||||
.tooltiptextlow {
|
||||
visibility: hidden;
|
||||
width: 300px;
|
||||
background-color: var(--my-background-color);
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
left: 101%;
|
||||
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
bottom: 25%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Same thing as a normal tooltip except its a bit higher */
|
||||
.tooltip .tooltiptexthigh {
|
||||
visibility: hidden;
|
||||
width: 300px;
|
||||
background-color: var(--my-background-color);
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
left: 101%;
|
||||
bottom: -25%;
|
||||
|
||||
position: absolute;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.tooltip:hover .tooltiptext,
|
||||
.tooltip:hover .tooltiptexthigh,
|
||||
.tooltip:hover .tooltiptextleft,
|
||||
.tooltip:hover .tooltiptextlow {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.copy_tooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.copy_tooltip_copied {
|
||||
color: #fff;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.copy_tooltip .copy_tooltip_text {
|
||||
visibility: hidden;
|
||||
font-size: 15px;
|
||||
padding: 5px;
|
||||
background-color: var(--my-background-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: 120%;
|
||||
left: 5%;
|
||||
opacity: 0;
|
||||
border: 2px solid var(--my-highlight-color);
|
||||
}
|
||||
|
||||
.copy_tooltip .copy_tooltip_text::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 100%;
|
||||
left: 50%;
|
||||
margin-left: -6px;
|
||||
border-width: 8px;
|
||||
border-style: solid;
|
||||
border-color: transparent transparent white transparent;
|
||||
}
|
||||
|
||||
.copy_tooltip .copy_tooltip_text_visible {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/* required LIB STYLES */
|
||||
/* .Treant se automatski dodaje na svaki chart conatiner */
|
||||
.Treant { position: relative; overflow: hidden; padding: 0 !important; }
|
||||
.Treant > .node,
|
||||
.Treant > .pseudo { position: absolute; display: block; visibility: hidden; }
|
||||
.Treant.Treant-loaded .node,
|
||||
.Treant.Treant-loaded .pseudo { visibility: visible; }
|
||||
.Treant > .pseudo { width: 0; height: 0; border: none; padding: 0; }
|
||||
.Treant .collapse-switch { width: 3px; height: 3px; display: block; border: 1px solid black; position: absolute; top: 1px; right: 1px; cursor: pointer; }
|
||||
.Treant .collapsed .collapse-switch { background-color: #868dee; }
|
||||
.Treant > .node img { border: none; float: left; }
|
||||
.Treant > .node {
|
||||
cursor: pointer;
|
||||
padding: 4px;
|
||||
min-width: 60px;
|
||||
text-align: center;
|
||||
border: 2px solid #e8e8e3;
|
||||
border-radius: 2px;
|
||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.Treant > .researched {
|
||||
background-color: #666;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.Treant > .locked > div {
|
||||
color: red;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.Treant > .node > div {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.Treant > .unlocked:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
@import "mixins";
|
||||
@import "theme";
|
||||
|
||||
/* Both Work in progress and BitNode stuff */
|
||||
.generic-fullscreen-container {
|
||||
color: var(--my-font-color);
|
||||
width: 99%;
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.generic-fullscreen-container-scroll {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
#work-in-progress-container {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
#work-in-progress-text {
|
||||
color: var(--my-font-color);
|
||||
width: 70%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.work-button {
|
||||
@include borderRadius(12px);
|
||||
@include boxShadow(1px 1px 3px #000);
|
||||
|
||||
color: #aaa;
|
||||
float: left;
|
||||
font-size: $defaultFontSize * 1.25;
|
||||
font-weight: bold;
|
||||
margin: 10px;
|
||||
padding: 5px;
|
||||
border: 3px solid #fff;
|
||||
}
|
||||
|
||||
.work-button:hover,
|
||||
.work-button:focus {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#cinematic-text-container {
|
||||
position: fixed;
|
||||
}
|
||||
10
cypress.json
Normal file
10
cypress.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"baseUrl": "http://localhost:8000",
|
||||
"fixturesFolder": false,
|
||||
"trashAssetsBeforeRuns": true,
|
||||
"screenshotsFolder": ".cypress/screenshots",
|
||||
"videosFolder": ".cypress/videos",
|
||||
"videoUploadOnPasses": false,
|
||||
"viewportWidth": 1980,
|
||||
"viewportHeight": 1080
|
||||
}
|
||||
73
cypress/integration/naviguation.spec.ts
Normal file
73
cypress/integration/naviguation.spec.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
export {};
|
||||
|
||||
describe("netscript", () => {
|
||||
it("Do naviguation", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
cy.findByText("Got it!").click();
|
||||
|
||||
cy.findByText("Dev").click();
|
||||
cy.findByText(/Source-Files/i).click();
|
||||
cy.findByLabelText(/all-sf-3/i).click();
|
||||
cy.findByText(/Experience/i).click();
|
||||
cy.findByText(/Tons of exp/i).click();
|
||||
cy.findByText(/General/i).click();
|
||||
cy.findByText(/Hack w0/i).click();
|
||||
cy.findByText(/SEMPOOL INVALID/i);
|
||||
cy.findByText(/Many decades/i, { timeout: 15000 });
|
||||
cy.findByLabelText("enter-bitnode-1").click();
|
||||
cy.findByText(/Enter BN1.2/i).click();
|
||||
|
||||
cy.get("body").type("{esc}");
|
||||
|
||||
cy.findByText("Dev").click();
|
||||
cy.findByText(/Experience/i).click();
|
||||
cy.findByText(/Tons of exp/i).click();
|
||||
|
||||
cy.findByText("Create Script").click();
|
||||
cy.findByText(/Script name:/i);
|
||||
|
||||
cy.findByText("Active Scripts").click();
|
||||
cy.findByText(/Total online production of/i);
|
||||
|
||||
cy.findByText("Create Program").click();
|
||||
cy.findByText(/This page displays/i);
|
||||
|
||||
cy.findByText("Stats").click();
|
||||
cy.findByText(/Current City:/i);
|
||||
|
||||
cy.findByText("Factions").click();
|
||||
cy.findByText(/Lists all/i);
|
||||
|
||||
cy.findByText("Augmentations").click();
|
||||
cy.findByText(/Purchased Augmentations/i);
|
||||
|
||||
cy.findByText("Hacknet").click();
|
||||
cy.findByText(/The Hacknet is a global/i);
|
||||
|
||||
cy.findByText("Sleeves").click();
|
||||
cy.findByText(/Duplicate Sleeves are MK/i);
|
||||
|
||||
cy.findByText("City").click();
|
||||
cy.findByText(/Sector-12/i);
|
||||
cy.findByLabelText("The Slums").click();
|
||||
cy.findByText("City").click();
|
||||
cy.findByLabelText("Powerhouse Gym").click();
|
||||
cy.findByText("City").click();
|
||||
cy.findByLabelText("MegaCorp").click();
|
||||
|
||||
cy.findByText("Travel").click();
|
||||
cy.findByText(/Travel Agency/i);
|
||||
|
||||
cy.findByText("Stock Market").click();
|
||||
cy.findByText(/ECorp/i);
|
||||
|
||||
cy.findByText("Milestones").click();
|
||||
cy.findByText(/don't reward you for/i);
|
||||
|
||||
cy.findByText("Tutorial").click();
|
||||
cy.findByText(/AKA Links to/i);
|
||||
|
||||
cy.findByText("Options").click();
|
||||
cy.findByText(/Netscript exec time/i);
|
||||
});
|
||||
});
|
||||
51
cypress/integration/netscript.spec.ts
Normal file
51
cypress/integration/netscript.spec.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export {};
|
||||
|
||||
describe("netscript", () => {
|
||||
it("creates and runs a NetScript 2.0 script", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
cy.findByText("Got it!").click();
|
||||
|
||||
cy.findByRole("textbox").type("connect n00dles{enter}");
|
||||
cy.findByText(/connected to n00dles/i);
|
||||
|
||||
cy.findByRole("textbox").type("run NUKE.exe{enter}");
|
||||
cy.findByText(/gained root access/i);
|
||||
|
||||
cy.findByRole("textbox").type("home{enter}");
|
||||
cy.findByText(/connected to home/i);
|
||||
|
||||
cy.findByRole("textbox").type("nano script.js{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{selectall}{del}").type(`export const main = async (ns) => {{}
|
||||
while(true) {{}
|
||||
await ns.hack("n00dles");`);
|
||||
|
||||
cy.findByText("RAM: 1.70GB");
|
||||
cy.findByRole("button", { name: /Save & Close/i }).click();
|
||||
|
||||
cy.findByRole("textbox").type("run script.js{enter}");
|
||||
cy.findByText(/Running script with 1 thread/);
|
||||
|
||||
cy.findByRole("textbox").type("ps{enter}");
|
||||
cy.findByText(/\(PID - 1\) script.js/);
|
||||
});
|
||||
|
||||
it("errors and shows a dialog box when static RAM !== dynamic RAM", () => {
|
||||
cy.findByRole("button", { name: "SKIP TUTORIAL" }).click();
|
||||
cy.findByText("Got it!").click();
|
||||
|
||||
cy.findByRole("textbox").type("nano script.js{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{selectall}{del}").type(`export const main = async (ns) => {{}
|
||||
const command = "hack";
|
||||
ns[command]("n00dles");`);
|
||||
|
||||
cy.findByText("RAM: 1.60GB");
|
||||
cy.findByRole("button", { name: /Save & Close/i }).click();
|
||||
|
||||
cy.findByRole("textbox").type("run script.js{enter}");
|
||||
cy.findByText(/Dynamic RAM usage calculated to be greater than initial RAM usage on fn: hack./i);
|
||||
});
|
||||
});
|
||||
96
cypress/integration/tutorial.spec.ts
Normal file
96
cypress/integration/tutorial.spec.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
export {};
|
||||
|
||||
describe("tutorial", () => {
|
||||
it("completes the tutorial", () => {
|
||||
cy.findByText(/dark, dystopian future/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/heading to the Stats page/);
|
||||
cy.findByRole("button", { name: "Stats" }).click();
|
||||
|
||||
cy.findByText(/lot of important information/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/head to your computer's terminal/);
|
||||
cy.findByRole("button", { name: "Terminal" }).click();
|
||||
|
||||
cy.findByText(/is used to interface/);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/Let's try it out/i);
|
||||
cy.findByRole("textbox").type("help{enter}");
|
||||
|
||||
cy.findByText(/displays a list of all available/i);
|
||||
cy.findByRole("textbox").type("ls{enter}");
|
||||
|
||||
cy.findByText(/is a basic command that shows files/i);
|
||||
cy.findByRole("textbox").type("scan{enter}");
|
||||
|
||||
cy.findByText(/that's great and all/i);
|
||||
cy.findByRole("textbox").type("scan-analyze{enter}");
|
||||
|
||||
cy.findByText(/shows more detailed information/i);
|
||||
cy.findByRole("textbox").type("scan-analyze 2{enter}");
|
||||
|
||||
cy.findByText(/now you can see information/i);
|
||||
cy.findByRole("textbox").type("connect n00dles{enter}");
|
||||
|
||||
cy.findByText(/currency has become digital/i);
|
||||
cy.findByRole("textbox").type("analyze{enter}");
|
||||
|
||||
cy.findByText(/For this server, the required hacking skill/i);
|
||||
cy.findByText(/Required number of open ports for NUKE/i);
|
||||
cy.findByRole("textbox").type("run NUKE.exe{enter}");
|
||||
|
||||
cy.findByText(/gained root access to n00dles/i);
|
||||
cy.findByRole("textbox").type("hack{enter}");
|
||||
|
||||
cy.findByText(/now attempting to hack the server/i);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByRole("textbox", { timeout: 15_000 }).should("not.be.disabled").type("home{enter}");
|
||||
|
||||
cy.findByRole("textbox").type("nano n00dles.script{enter}");
|
||||
|
||||
// monaco can take a bit
|
||||
cy.findByRole("code", { timeout: 15_000 }).type("{selectall}{del}").type("while(true) {{}{enter}hack('n00dles');");
|
||||
|
||||
cy.findByRole("button", { name: /Save & Close/i }).click();
|
||||
|
||||
cy.findByText(/now we'll run the script/i);
|
||||
cy.findByRole("textbox").type("free{enter}");
|
||||
|
||||
cy.findByText(/We have 8GB of free RAM on this machine/i);
|
||||
cy.findByRole("textbox").type("run n00dles.script{enter}");
|
||||
|
||||
cy.findByText(/Your script is now running/i);
|
||||
cy.findByRole("button", { name: "Active Scripts" }).click();
|
||||
|
||||
cy.findByText(/This page displays information about all of your scripts/i);
|
||||
cy.findByRole("button", { name: "Terminal" }).click();
|
||||
|
||||
cy.findByText(/each active script contains logs/i);
|
||||
cy.findByRole("textbox").type("tail n00dles.script{enter}");
|
||||
|
||||
cy.findByText(/The log for this script won't show much/i);
|
||||
cy.findByRole("button", { name: "next" }).click();
|
||||
|
||||
cy.findByText(/Hacking is not the only way to earn money/i);
|
||||
cy.findByRole("button", { name: "Hacknet" }).click();
|
||||
|
||||
cy.findByText(/Here you can purchase new Hacknet Nodes/i);
|
||||
cy.findByRole("button", { name: /Purchase Hacknet Node/ }).click();
|
||||
|
||||
cy.findByText(/You just purchased a Hacknet Node!/i);
|
||||
cy.findByRole("button", { name: "City" }).click();
|
||||
|
||||
cy.findByText(/This page lists all of the different locations/i);
|
||||
cy.findByRole("button", { name: "Tutorial" }).click();
|
||||
|
||||
cy.findByText(/a lot of different documentation about the game/i);
|
||||
cy.findByRole("button", { name: "FINISH TUTORIAL" }).click();
|
||||
cy.findByText("Got it!").click();
|
||||
|
||||
cy.findByText(/Tutorial \(AKA Links to Documentation\)/i);
|
||||
});
|
||||
});
|
||||
22
cypress/plugins/index.js
Normal file
22
cypress/plugins/index.js
Normal file
@@ -0,0 +1,22 @@
|
||||
/// <reference types="cypress" />
|
||||
// ***********************************************************
|
||||
// This example plugins/index.js can be used to load plugins
|
||||
//
|
||||
// You can change the location of this file or turn off loading
|
||||
// the plugins file with the 'pluginsFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/plugins-guide
|
||||
// ***********************************************************
|
||||
|
||||
// This function is called when a project is opened or re-opened (e.g. due to
|
||||
// the project's config changing)
|
||||
|
||||
/**
|
||||
* @type {Cypress.PluginConfig}
|
||||
*/
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
module.exports = (on, config) => {
|
||||
// `on` is used to hook into various events Cypress emits
|
||||
// `config` is the resolved Cypress config
|
||||
};
|
||||
1
cypress/support/commands.ts
Normal file
1
cypress/support/commands.ts
Normal file
@@ -0,0 +1 @@
|
||||
import "@testing-library/cypress/add-commands";
|
||||
9
cypress/support/globalHooks.ts
Normal file
9
cypress/support/globalHooks.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export {};
|
||||
|
||||
beforeEach(() => {
|
||||
cy.visit("/");
|
||||
cy.clearLocalStorage();
|
||||
cy.window().then((win) => {
|
||||
win.indexedDB.deleteDatabase("bitburnerSave");
|
||||
});
|
||||
});
|
||||
21
cypress/support/index.js
Normal file
21
cypress/support/index.js
Normal file
@@ -0,0 +1,21 @@
|
||||
// ***********************************************************
|
||||
// This example support/index.js is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import "./globalHooks";
|
||||
import "./commands";
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
||||
4
dist/engine.bundle.js
vendored
4
dist/engine.bundle.js
vendored
File diff suppressed because one or more lines are too long
2
dist/engineStyle.bundle.js
vendored
2
dist/engineStyle.bundle.js
vendored
@@ -1,2 +1,2 @@
|
||||
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],p=0,s=[];p<f.length;p++)i=f[p],u[i]&&s.push(u[i][0]),u[i]=0;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(n[e]=c[e]);for(a&&a(t);s.length;)s.shift()();return r.push.apply(r,l||[]),o()}function o(){for(var n,t=0;t<r.length;t++){for(var o=r[t],e=!0,f=1;f<o.length;f++){var c=o[f];0!==u[c]&&(e=!1)}e&&(r.splice(t--,1),n=i(i.s=o[0]))}return n}var e={},u={1:0},r=[];function i(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=n,i.c=e,i.d=function(n,t,o){i.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:o})},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.t=function(n,t){if(1&t&&(n=i(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var e in n)i.d(o,e,function(t){return n[t]}.bind(null,e));return o},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,"a",t),t},i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.p="";var f=window.webpackJsonp=window.webpackJsonp||[],c=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var a=c;r.push([856,0]),o()}({793:function(n,t,o){},795:function(n,t,o){},797:function(n,t,o){},799:function(n,t,o){},801:function(n,t,o){},803:function(n,t,o){},805:function(n,t,o){},807:function(n,t,o){},809:function(n,t,o){},811:function(n,t,o){},813:function(n,t,o){},815:function(n,t,o){},817:function(n,t,o){},819:function(n,t,o){},821:function(n,t,o){},823:function(n,t,o){},825:function(n,t,o){},827:function(n,t,o){},829:function(n,t,o){},831:function(n,t,o){},833:function(n,t,o){},835:function(n,t,o){},837:function(n,t,o){},839:function(n,t,o){},841:function(n,t,o){},843:function(n,t,o){},845:function(n,t,o){},847:function(n,t,o){},849:function(n,t,o){},851:function(n,t,o){},853:function(n,t,o){},856:function(n,t,o){"use strict";o.r(t);o(855),o(853),o(851),o(849),o(847),o(845),o(843),o(841),o(839),o(837),o(835),o(833),o(831),o(829),o(827),o(825),o(823),o(821),o(819),o(817),o(815),o(813),o(811),o(809),o(807),o(805),o(803),o(801),o(799),o(797),o(795),o(793)}});
|
||||
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],a=0,s=[];a<f.length;a++)i=f[a],Object.prototype.hasOwnProperty.call(r,i)&&r[i]&&s.push(r[i][0]),r[i]=0;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(n[e]=c[e]);for(p&&p(t);s.length;)s.shift()();return u.push.apply(u,l||[]),o()}function o(){for(var n,t=0;t<u.length;t++){for(var o=u[t],e=!0,f=1;f<o.length;f++){var c=o[f];0!==r[c]&&(e=!1)}e&&(u.splice(t--,1),n=i(i.s=o[0]))}return n}var e={},r={2:0},u=[];function i(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=n,i.c=e,i.d=function(n,t,o){i.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:o})},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.t=function(n,t){if(1&t&&(n=i(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var e in n)i.d(o,e,function(t){return n[t]}.bind(null,e));return o},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,"a",t),t},i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.p="";var f=window.webpackJsonp=window.webpackJsonp||[],c=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var p=c;u.push([1281,0]),o()}({1281:function(n,t,o){"use strict";o.r(t);o(1282),o(1284),o(1286),o(1288),o(1290),o(1292),o(1294),o(1296),o(1298),o(1300),o(1302),o(1304),o(1306),o(1308),o(1310),o(1312),o(1314),o(1316),o(1318),o(1320),o(1322),o(1324),o(1326),o(1328),o(1330),o(1332),o(1334),o(1336),o(1338),o(1340)},1284:function(n,t,o){},1286:function(n,t,o){},1288:function(n,t,o){},1290:function(n,t,o){},1292:function(n,t,o){},1294:function(n,t,o){},1296:function(n,t,o){},1298:function(n,t,o){},1300:function(n,t,o){},1302:function(n,t,o){},1304:function(n,t,o){},1306:function(n,t,o){},1308:function(n,t,o){},1310:function(n,t,o){},1312:function(n,t,o){},1314:function(n,t,o){},1316:function(n,t,o){},1318:function(n,t,o){},1320:function(n,t,o){},1322:function(n,t,o){},1324:function(n,t,o){},1326:function(n,t,o){},1328:function(n,t,o){},1330:function(n,t,o){},1332:function(n,t,o){},1334:function(n,t,o){},1336:function(n,t,o){},1338:function(n,t,o){},1340:function(n,t,o){}});
|
||||
//# sourceMappingURL=engineStyle.bundle.js.map
|
||||
1579
dist/engineStyle.css
vendored
1579
dist/engineStyle.css
vendored
File diff suppressed because it is too large
Load Diff
329
dist/vendor.bundle.js
vendored
329
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
5536
dist/vendor.css
vendored
5536
dist/vendor.css
vendored
File diff suppressed because one or more lines are too long
@@ -76,15 +76,15 @@ List of Factions and their Requirements
|
||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||
| Hacking | NiteSec | * Install a backdoor on the avmnite-02h | |
|
||||
| Groups | | server | |
|
||||
| | | * Home Computer RAM of at least 32GB | |
|
||||
| | | | |
|
||||
+ +----------------+-----------------------------------------+-------------------------------+
|
||||
| | The Black Hand | * Install a backdoor on the I.I.I.I | |
|
||||
| | | server | |
|
||||
| | | * Home Computer RAM of at least 64GB | |
|
||||
| | | | |
|
||||
+ +----------------+-----------------------------------------+-------------------------------+
|
||||
| | Bitrunners | * Install a backdoor on the run4theh111z| |
|
||||
| | | server | |
|
||||
| | | * Home Computer RAM of at least 128GB | |
|
||||
| | | | |
|
||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||
| Megacorporations | ECorp | * Have 200k reputation with | |
|
||||
| | | the Corporation | |
|
||||
|
||||
@@ -14,29 +14,46 @@ these for money or for faction reputation. To try and infiltrate a company,
|
||||
visit a company through the 'World' menu. There will be an option that
|
||||
says 'Infiltrate Company'.
|
||||
|
||||
When infiltrating a company, you must progress through clearance levels in
|
||||
the facility. Every clearance level has some form of security that
|
||||
you must get past. There are several forms of security, ranging from
|
||||
high-tech security systems to armed guards. For each form of security,
|
||||
there are a variety of options that you can choose to try and bypass
|
||||
the security. Examples include hacking the security, engaging in combat,
|
||||
assassination, or sneaking past the security. The chance to succeed for
|
||||
each option is determined in part by your stats. So, for example,
|
||||
trying to hack the security system relies on your hacking skill,
|
||||
whereas trying to sneak past the security relies on your agility level.
|
||||
When infiltrating a company you will be presented with short active challenges.
|
||||
None of the challenges use the mouse.
|
||||
|
||||
The facility has a 'security level' that affects your chance of success
|
||||
when trying to get past a clearance level. Every time you advance to the
|
||||
next clearance level, the facility's security level will increase by a
|
||||
fixed percentage. Furthermore the options you choose and whether you
|
||||
succeed or fail will affect the security level as well. For example,
|
||||
if you try to kill a security guard and fail, the security level will
|
||||
increase by a lot. If you choose to sneak past security and succeed,
|
||||
the security level will not increase at all.
|
||||
The difficulty at the top lowers with better combat stats. It is not recommended
|
||||
to attempt infiltrations above mid-normal.
|
||||
|
||||
Every 5 clearance levels, you will steal classified company secrets that
|
||||
can be sold for money or faction reputation. However, in order to sell
|
||||
these secrets you must successfully escape the facility using the
|
||||
'Escape' option. Furthermore, companies have a max clearance level.
|
||||
If you reach the max clearance level you will automatically escape the
|
||||
facility with all of your stolen secrets.
|
||||
* Most use spacebar as "action"
|
||||
* Some use WASD or arrows interchangeably.
|
||||
* A few others use the rest of the keyboard.
|
||||
|
||||
** Slash when his guard is down! **
|
||||
|
||||
Press space when the guard is attacking you.
|
||||
|
||||
** Close the brackets **
|
||||
|
||||
Enter all the matching brackets in reverse order.
|
||||
|
||||
** Type it backward **
|
||||
|
||||
Type the words that are written backward.
|
||||
|
||||
** Say something nice about the guard. **
|
||||
|
||||
Use the arrows to find a compliment for the guard.
|
||||
|
||||
** Enter the Code! **
|
||||
|
||||
Match the arrows as they appears.
|
||||
|
||||
** Match the symbols! **
|
||||
|
||||
Move the cursor to the matching symbol and press space to confirm.
|
||||
|
||||
** Remember all the mines! **
|
||||
|
||||
At first the cursor cannot be moved, remember the positions of the X.
|
||||
Then move the cursor and press space to mark the mines on the board.
|
||||
|
||||
** Cut the wires **
|
||||
|
||||
Follow the instructions and press the numbers 1 through 9 to cut the appropriate
|
||||
wires.
|
||||
@@ -3,7 +3,279 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
v0.52.4 - 2021-07-19 Bladeburner in React (hydroflame)
|
||||
v0.55.0 - 2021-09-20 Material UI (hydroflame & community)
|
||||
-------------------------------------------
|
||||
|
||||
** Global **
|
||||
|
||||
* The game is now 100% in typescript, react, and Material-UI
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Corporations can no longer bribe special factions
|
||||
* Infiltration can no longer lose focus of the keyboard.
|
||||
* Fix terminal line limit
|
||||
* Added theme editor
|
||||
* Theme applies on game load (@Nolshine)
|
||||
* Sleeves no longer consume all bonus time for some actions
|
||||
* Fix a bug where the autocomlete list would get duplicates
|
||||
* Fix tutorial not scaling properly on small screens
|
||||
* Import should be more consistent
|
||||
* Typo with 'help' command
|
||||
* Fix infinite loop in casino
|
||||
* nerf noodle bar
|
||||
|
||||
v0.54.0 - 2021-09-20 One big react node (hydroflame & community)
|
||||
-------------------------------------------
|
||||
|
||||
** UI **
|
||||
|
||||
* The UI is now completely(ish) in react and I'm starting to implement
|
||||
Material-UI everywhere. This will help make the game feel more consistent.
|
||||
* Major help from (@threehams)
|
||||
* New Terminal
|
||||
* New Active Scripts page
|
||||
* New sidebar.
|
||||
* New Character overview
|
||||
* New tutorial
|
||||
* New options page
|
||||
* New create program page (@Nolshine)
|
||||
|
||||
** Netscript **
|
||||
|
||||
* Add companyName to getPlayer
|
||||
|
||||
** Factions **
|
||||
|
||||
* Megacorp factions are no longer removed when installing.
|
||||
|
||||
** Corporation **
|
||||
|
||||
* All research tooltips are always visible.
|
||||
* Smart supply is enabled by default if purchased (@Nolshine)
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Fix "Game saved" animation. (@Nolshine)
|
||||
* Update commitCrime documentation (@Tryneus)
|
||||
* Fix logbox scrolling weird (@Nolshine)
|
||||
* Fix weird scrolling in corporations (@BartKoppelmans)
|
||||
* Fix typo (@BartKoppelmans & @Nolshine)
|
||||
* Delete game now has a confirmation modal (@Nolshine)
|
||||
* Fix issue where skills would not get properly updated when entering new
|
||||
BN. (@Nolshine)
|
||||
* Convert create gang to popup (@vmesecher)
|
||||
* Fixed a bug that prevented travel to Sector-12 and New Tokyo when not using
|
||||
ASCII art.
|
||||
* nerf noodle bar
|
||||
|
||||
v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)
|
||||
-------------------------------------------
|
||||
|
||||
** Dev? **
|
||||
|
||||
* The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)
|
||||
* Lots of test. (@threehams)
|
||||
* Massive improvements to build speed. (@threehams)
|
||||
* Dev notes: This won't affect any players but is immensely useful for me.
|
||||
|
||||
** Hacknet **
|
||||
|
||||
* Converted to ts/react
|
||||
|
||||
** Resleeving **
|
||||
|
||||
* Converted to ts/react
|
||||
|
||||
** Sleeves **
|
||||
|
||||
* Converted to ts/react. The ui should also have a better feel.
|
||||
* Fixed a bug that allowed players to recover shock much faster than intended.
|
||||
|
||||
** BN10 **
|
||||
|
||||
* You have access to Sleeves right away
|
||||
* In BN10 Sleeves start with 75 shock and 25 sync.
|
||||
|
||||
** MathJax **
|
||||
|
||||
* Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation
|
||||
|
||||
** Corporation **
|
||||
|
||||
* Completely rewritten in React. Paving the way for bigger change.
|
||||
* Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.
|
||||
* Several UI fixes.
|
||||
|
||||
** Bladeburner **
|
||||
|
||||
* Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.
|
||||
|
||||
** Factions **
|
||||
|
||||
* No factions have home computer ram requirement. This caused some confusion for new players.
|
||||
|
||||
** Gang **
|
||||
|
||||
* Made it clear when there's a new equipment coming up.
|
||||
|
||||
** Netscript **
|
||||
|
||||
* getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)
|
||||
* getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)
|
||||
* disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)
|
||||
* getPlayer returns numPeopleKilled.
|
||||
* Dynamic RAM calculation errors have a better error message.
|
||||
* Hide some functions from autocomplete.
|
||||
* Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)
|
||||
* Fixed bug where some crime API would return "assassinate" when that's not accepted in other functions.
|
||||
|
||||
** Coding Contract **
|
||||
|
||||
* Spiralize Matrix is easier to read.
|
||||
|
||||
** Misc. **
|
||||
|
||||
* The world map is now used in sleeve travel and bladeburner travel.
|
||||
* noselect a bunch of stuff.
|
||||
* Ascii maps letters are more contrasting
|
||||
* Updated documentation for infiltration.
|
||||
* Most money costs in the game will turn grey/cyan when you don't have enough money.
|
||||
* Donation textbox has better look & feel.
|
||||
* Tech vendors ram & cores buttons have better look and feels.
|
||||
* cores cost modified to be a formula instead of a semi-random array of numbers.
|
||||
* Tech vendors now give a hint about where to get bigger servers.
|
||||
* logboxes now displays whitespaces exactly. (@Cass)
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)
|
||||
-------------------------------------------
|
||||
|
||||
** Active Scripts page **
|
||||
|
||||
* Now less laggy, has pagination.
|
||||
|
||||
** File diagnostic **
|
||||
|
||||
* Added a popup found under options that shows the files you own and how
|
||||
large they are. This help find bugs and leftover massive logs files.
|
||||
|
||||
** Corporation **
|
||||
|
||||
* Added safeguard against a very specific bug that causes NaN money. I'm
|
||||
still not sure what the root cause is but it should prevent corp from
|
||||
breaking.
|
||||
|
||||
** Netscript **
|
||||
|
||||
* tprintf is a new function that doesn't print the filename.
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Infiltration kills you if you try to automate it. (@threehams)
|
||||
* Fix beautify button not working
|
||||
* Added bladeburner_analysis_mult to getPlayer() (@brubsby)
|
||||
* Fixed joining bladeburner via netscript functions. (@omuretsu)
|
||||
* All bladeburner actions are click-to-copy
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Script editor **
|
||||
|
||||
* Correctly reloads old script when clicking "Script Editor"
|
||||
* No longer jumps to the end of the text for no reason.
|
||||
|
||||
** Hash upgrades **
|
||||
|
||||
* Fixed an issue where the default option would say ecorp but was really
|
||||
foodnstuff
|
||||
|
||||
** Misc. **
|
||||
|
||||
* The "Delete all active script" button under the options has a clearer
|
||||
description.
|
||||
* Removed some debug console.log
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Netscript **
|
||||
|
||||
* API BREAKING CHANGE: getActionEstimatedSuccessChance now returns a pair of
|
||||
value to reflect the UI changes. I'm very sorry.
|
||||
|
||||
** Bladeburner **
|
||||
|
||||
* General actions now display time required.
|
||||
* Recruitment now displays success chance.
|
||||
* All other success chance now display a range instead of a single value
|
||||
The real value is guaranteed to be within that range.
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Fix tutorial not working after Monaco upate
|
||||
* Fix logbox logs not taking up the whole logbox
|
||||
* Fix script editor shortcut (ctrl+b)
|
||||
* Fix Corporation popup appearing in the wrong order, hiding one of them
|
||||
* Fix error when loading Corp
|
||||
* Fix logbox dragging (smoother now)
|
||||
* Fix logbox name collision
|
||||
* Fix logbox allowing to open the same box multiple times
|
||||
* Fix netscript write.
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Text Editor **
|
||||
|
||||
* Ace and Codemirror have been removed in favor of monaco (web version of
|
||||
vs-code). The options are a bit lackluster but more will be added as
|
||||
feedback comes.
|
||||
|
||||
** Log boxes **
|
||||
|
||||
* Multiple log boxes can be opened at once. They can be moved around the
|
||||
screen. (but the movement behavior is a bit weird.)
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Job promotion now correctly updates the UI.
|
||||
* Milestones now call the faction CyberSec instead of CSEC
|
||||
* Can no longer create file that break the filesystem.
|
||||
* Remove dollar sign in blade contract UI element
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Terminal **
|
||||
|
||||
* When executing 'run SCRIPT' any script can now add '--tail' to
|
||||
automatically bring up the logs.
|
||||
|
||||
** Netscript **
|
||||
|
||||
* The 'flags' function now works with single letter flags but they only take
|
||||
one dash.
|
||||
* Fix several broken bladeburner netscript functions.
|
||||
* Fix gang.getMemberInformation returning inconsistent data after the gang
|
||||
rework.
|
||||
|
||||
** CPU Cores **
|
||||
|
||||
* CPU Cores on the home computer now provide a bonus to grow() money gain
|
||||
and makes weaken lower more security. Only for scripts running on 'home'
|
||||
|
||||
** Misc. **
|
||||
|
||||
* Fix weird scrolling in the new Bladeburner React console.
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Bladeburner **
|
||||
@@ -25,7 +297,7 @@ v0.52.4 - 2021-07-19 Bladeburner in React (hydroflame)
|
||||
* Linting (no one cares except the dev)
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.3 - 2021-07-15 Gangs were OP (hydroflame)
|
||||
v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)
|
||||
-------------------------------------------
|
||||
|
||||
** Gang **
|
||||
@@ -48,7 +320,7 @@ v0.52.3 - 2021-07-15 Gangs were OP (hydroflame)
|
||||
* Factions list screen converted to React.
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.2 - 2021-07-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
|
||||
v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
|
||||
-------------------------------------------
|
||||
|
||||
** Source-Files **
|
||||
@@ -66,7 +338,7 @@ v0.52.2 - 2021-07-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
|
||||
|
||||
* nerf noodle bar
|
||||
|
||||
v0.52.1 - 2021-07-10 bugfixing (hydroflame & community)
|
||||
v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)
|
||||
-------------------------------------------
|
||||
|
||||
**Misc.**
|
||||
|
||||
@@ -64,9 +64,9 @@ documentation_title = '{0} Documentation'.format(project)
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.52'
|
||||
version = '0.55'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.52.4'
|
||||
release = '0.55.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
@@ -6,8 +6,6 @@ getGrowTime() Netscript Function
|
||||
:RAM cost: 0.05 GB
|
||||
|
||||
:param string hostname: Hostname of target server.
|
||||
:param number hackLvl: Optional hacking level for the calculation. Defaults
|
||||
to player's current hacking level.
|
||||
:returns: seconds it takes to execute :doc:`grow<grow>` on that server.
|
||||
|
||||
The function takes in an optional ``hackLvl`` parameter that can be
|
||||
|
||||
@@ -5,8 +5,6 @@ getHackTime() Netscript Function
|
||||
|
||||
:RAM cost: 0.05 GB
|
||||
:param string hostname: Hostname of target server.
|
||||
:param number hackLvl: Optional hacking level for the calculation. Defaults
|
||||
to player's current hacking level.
|
||||
:returns: seconds it takes to execute :doc:`hack<hack>` on that server.
|
||||
|
||||
The function takes in an optional ``hackLvl`` parameter that can be
|
||||
|
||||
@@ -5,8 +5,6 @@ getWeakenTime() Netscript Function
|
||||
|
||||
:RAM cost: 0.05 GB
|
||||
:param string hostname: Hostname of target server.
|
||||
:param number hackLvl: Optional hacking level for the calculation. Defaults
|
||||
to player's current hacking level.
|
||||
:returns: seconds it takes to execute the :doc:`weaken<weaken>` Netscript
|
||||
function on the target server.
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ grow() Netscript Function
|
||||
server, but there is no required hacking level to run the command. It also
|
||||
raises the security level of the target server by 0.004 per thread.
|
||||
|
||||
Action time is calculated at the start, effect is calculated at the end.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
@@ -27,6 +27,8 @@ hack() Netscript Function
|
||||
A successful :doc:`hack<hack>` on a server will raise that server's security
|
||||
level by 0.002.
|
||||
|
||||
Action time is calculated at the start, effect is calculated at the end.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
17
doc/source/netscript/basicfunctions/tprintf.rst
Normal file
17
doc/source/netscript/basicfunctions/tprintf.rst
Normal file
@@ -0,0 +1,17 @@
|
||||
tprint() Netscript Function
|
||||
===========================
|
||||
|
||||
.. js:function:: tprintf(format, args...)
|
||||
|
||||
:RAM cost: 0 GB
|
||||
:param format: Format of the string to be printed.
|
||||
:param args: Values to be formatted
|
||||
|
||||
Prints a raw formatted string to the terminal.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
tprintf("Hello world!"); // Prints "Hello world!" to the terminal.
|
||||
tprintf("Hello %s", "world!"); // Prints "Hello world!" to the terminal.
|
||||
@@ -6,10 +6,10 @@ getActionEstimatedSuccessChance() Netscript Function
|
||||
:RAM cost: 4 GB
|
||||
:param string type: Type of action. See :ref:`bladeburner_action_types`
|
||||
:param string name: Name of action. Must be an exact match
|
||||
:returns: Estimated success chance in decimal
|
||||
:returns: Array of 2 number, lower and upper bound of the action chance.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
bladeburner.getActionEstimatedSuccessChance("Contracts", "Tracking"); // returns: .3
|
||||
bladeburner.getActionEstimatedSuccessChance("Contracts", "Tracking"); // returns: [.3, .6]
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
growPercent() Netscript Function
|
||||
=================================
|
||||
|
||||
.. js:function:: growPercent(server, threads, player)
|
||||
.. js:function:: growPercent(server, threads, player, cores)
|
||||
|
||||
:RAM cost: 0 GB
|
||||
:param server server: The server that receives the growth.
|
||||
:param number threads: The number of thread that would be used.
|
||||
:param player player: The player.
|
||||
:param number cores: The amount of cores on the host computer.
|
||||
:returns: The amount the server's money would be multiplied by with these
|
||||
parameters.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ hashGainRate() Netscript Function
|
||||
:param number ramUsed: ram used on the server.
|
||||
:param number maxRam: max ram of the server.
|
||||
:param number core: cores of the server.
|
||||
:returns: Money per second that a server with those stats would gain per second.
|
||||
:returns: Hashes per second that a server with those stats would gain.
|
||||
|
||||
If you are not in BitNode-5, then you must have Source-File 5-1 in order to
|
||||
use this function. In addition, if you are not in BitNode-9, then you must
|
||||
|
||||
@@ -13,30 +13,42 @@ getMemberInformation() Netscript Function
|
||||
name: Name of this member.
|
||||
task: Name of currently assigned task.
|
||||
earnedRespect: Total amount of respect earned by this member.
|
||||
|
||||
hack: Hacking stat
|
||||
str: Strength stat
|
||||
def: Defense stat
|
||||
dex: Dexterity stat
|
||||
agi: Agility stat
|
||||
cha: Charisma stat
|
||||
|
||||
hack_exp: Hacking experience
|
||||
str_exp: Strength experience
|
||||
def_exp: Defense experience
|
||||
dex_exp: Dexterity experience
|
||||
agi_exp: Agility experience
|
||||
cha_exp: Charisma experience
|
||||
|
||||
hack_mult: Hacking multiplier from equipment. Decimal form
|
||||
str_mult: Strength multiplier from equipment. Decimal form
|
||||
def_mult: Defense multiplier from equipment. Decimal form
|
||||
dex_mult: Dexterity multiplier from equipment. Decimal form
|
||||
agi_mult: Agility multiplier from equipment. Decimal form
|
||||
cha_mult: Charisma multiplier from equipment. Decimal form
|
||||
|
||||
hack_asc_mult: Hacking multiplier from ascension. Decimal form
|
||||
str_asc_mult: Strength multiplier from ascension. Decimal form
|
||||
def_asc_mult: Defense multiplier from ascension. Decimal form
|
||||
dex_asc_mult: Dexterity multiplier from ascension. Decimal form
|
||||
agi_asc_mult: Agility multiplier from ascension. Decimal form
|
||||
cha_asc_mult: Charisma multiplier from ascension. Decimal form
|
||||
|
||||
hack_asc_points: Hacking ascension points.
|
||||
str_asc_points: Strength ascension points.
|
||||
def_asc_points: Defense ascension points.
|
||||
dex_asc_points: Dexterity ascension points.
|
||||
agi_asc_points: Agility ascension points.
|
||||
cha_asc_points: Charisma ascension points.
|
||||
|
||||
upgrades: Array of names of all owned Non-Augmentation Equipment
|
||||
augmentations: Array of names of all owned Augmentations
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
getTrainingMul() Netscript Function
|
||||
getTrainingMult() Netscript Function
|
||||
===================================
|
||||
|
||||
.. js:function:: getTrainingMul()
|
||||
.. js:function:: getTrainingMult()
|
||||
|
||||
:RAM cost: 0 GB
|
||||
:returns: The multiplier to training that hash upgrades provide to the player.
|
||||
|
||||
@@ -19,6 +19,7 @@ This includes information such as function signatures, what they do, and their r
|
||||
sleep() <basicfunctions/sleep>
|
||||
print() <basicfunctions/print>
|
||||
tprint() <basicfunctions/tprint>
|
||||
tprintf() <basicfunctions/tprint>
|
||||
clearLog() <basicfunctions/clearLog>
|
||||
disableLog() <basicfunctions/disableLog>
|
||||
enableLog() <basicfunctions/enableLog>
|
||||
|
||||
@@ -117,30 +117,6 @@ that are loaded.
|
||||
Examples
|
||||
--------
|
||||
|
||||
**DOM Manipulation (tprintColored.ns)**
|
||||
|
||||
Directly alter the game's terminal and print colored text::
|
||||
|
||||
export function tprintColored(txt, color) {
|
||||
let terminalInput = document.getElementById("terminal-input");
|
||||
let rowElement = document.createElement("tr");
|
||||
let cellElement = document.createElement("td");
|
||||
|
||||
rowElement.classList.add("posted");
|
||||
cellElement.classList.add("terminal-line");
|
||||
cellElement.style.color = color;
|
||||
cellElement.innerText = txt;
|
||||
|
||||
rowElement.appendChild(cellElement);
|
||||
terminalInput.before(rowElement);
|
||||
}
|
||||
|
||||
export async function main(ns) {
|
||||
tprintColored("Red Text!", "red");
|
||||
tprintColored("Blue Text!", "blue");
|
||||
tprintColored("Use Hex Codes!", "#3087E3");
|
||||
}
|
||||
|
||||
**Script Scheduler (scriptScheduler.ns)**
|
||||
|
||||
This script shows some of the new functionality that is available in NetscriptJS,
|
||||
|
||||
@@ -55,8 +55,10 @@ The player has access to all of these functions while in BitNode-4. Completing B
|
||||
getOwnedAugmentations() <singularityfunctions/getOwnedAugmentations>
|
||||
getOwnedSourceFiles() <singularityfunctions/getOwnedSourceFiles>
|
||||
getAugmentationsFromFaction() <singularityfunctions/getAugmentationsFromFaction>
|
||||
getAugmentationPrereq() <singularityfunctions/getAugmentationPrereq>
|
||||
getAugmentationCost() <singularityfunctions/getAugmentationCost>
|
||||
getAugmentationPrereq() <singularityfunctions/getAugmentationPrereq>
|
||||
getAugmentationPrice() <singularityfunctions/getAugmentationPrice>
|
||||
getAugmentationRepReq() <singularityfunctions/getAugmentationRepReq>
|
||||
getAugmentationStats() <singularityfunctions/getAugmentationStats>
|
||||
purchaseAugmentation() <singularityfunctions/purchaseAugmentation>
|
||||
installAugmentations() <singularityfunctions/installAugmentations>
|
||||
|
||||
@@ -26,8 +26,8 @@ commitCrime() Netscript Function
|
||||
This function is used to automatically attempt to commit crimes. If you are already in the middle of some 'working' action
|
||||
(such as working for a company or training at a gym), then running this function will automatically cancel that action and give you your earnings.
|
||||
|
||||
This function returns the number of seconds it takes to attempt the specified crime (e.g It takes 60 seconds to attempt the 'Rob Store' crime,
|
||||
so running ``commitCrime('rob store')`` will return 60).
|
||||
This function returns the number of milliseconds it takes to attempt the specified crime (e.g It takes 60 seconds to attempt the 'Rob Store' crime,
|
||||
so running ``commitCrime('rob store')`` will return 60000).
|
||||
|
||||
Warning: I do not recommend using the time returned from this function to try and schedule your crime attempts.
|
||||
Instead, I would use the :doc:`isBusy<isBusy>` Singularity function to check whether you have finished attempting a crime.
|
||||
|
||||
@@ -3,12 +3,17 @@ getAugmentationCost() Netscript Function
|
||||
|
||||
.. js:function:: getAugmentationCost(augName)
|
||||
|
||||
.. warning:: This function is deprecated. It still functions, but new
|
||||
scripts should prefer :doc:`getAugmentationPrice<getAugmentationPrice>`
|
||||
and :doc:`getAugmentationRepReq<getAugmentationRepReq>` instead.
|
||||
|
||||
:RAM cost: 5 GB
|
||||
:param string augName: Name of Augmentation. case-sensitive.
|
||||
|
||||
:param string augName: Name of Augmentation. CASE-SENSITIVE
|
||||
|
||||
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
||||
|
||||
This function returns an array with two elements that gives the cost for the specified Augmentation.
|
||||
The first element in the returned array is the reputation requirement of the Augmentation, and the second element is the money cost.
|
||||
|
||||
If an invalid Augmentation name is passed in for the ``augName`` argument, this function will return the array [-1, -1].
|
||||
If an invalid Augmentation name is passed in for the ``augName`` argument, this function will throw a runtime error.
|
||||
|
||||
@@ -12,4 +12,4 @@ getAugmentationPrereq() Netscript Function
|
||||
This function returns an array with the names of the prerequisite Augmentation(s) for the specified Augmentation.
|
||||
If there are no prerequisites, a blank array is returned.
|
||||
|
||||
If an invalid Augmentation name is passed in for the *augName* argument, this function will return a blank array.
|
||||
If an invalid Augmentation name is passed in for the *augName* argument, this function will throw a runtime error.
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
getAugmentationPrice() Netscript Function
|
||||
==========================================
|
||||
|
||||
.. js:function:: getAugmentationPrice(augName)
|
||||
|
||||
:RAM cost: 2.5 GB
|
||||
|
||||
:param string augName: Name of Augmentation. CASE-SENSITIVE
|
||||
|
||||
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
||||
|
||||
This function returns the money cost for the specified Augmentation.
|
||||
|
||||
If an invalid Augmentation name is passed in for the *augName* argument, this function will throw a runtime error.
|
||||
@@ -0,0 +1,14 @@
|
||||
getAugmentationRepReq() Netscript Function
|
||||
==========================================
|
||||
|
||||
.. js:function:: getAugmentationRepReq(augName)
|
||||
|
||||
:RAM cost: 2.5 GB
|
||||
|
||||
:param string augName: Name of Augmentation. CASE-SENSITIVE
|
||||
|
||||
If you are not in BitNode-4, then you must have Level 3 of Source-File 4 in order to use this function.
|
||||
|
||||
This function returns the reputation requirement for the specified Augmentation.
|
||||
|
||||
If an invalid Augmentation name is passed in for the *augName* argument, this function will throw a runtime error.
|
||||
@@ -21,10 +21,11 @@ body {
|
||||
background-color: #eeeeec;
|
||||
}
|
||||
|
||||
|
||||
/* Page layout */
|
||||
|
||||
div.header, div.content, div.footer {
|
||||
div.header,
|
||||
div.content,
|
||||
div.footer {
|
||||
width: 70em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
@@ -35,13 +36,13 @@ div.header-wrapper {
|
||||
border-bottom: 3px solid #2e3436;
|
||||
}
|
||||
|
||||
|
||||
/* Default body styles */
|
||||
a {
|
||||
color: #ce5c00;
|
||||
}
|
||||
|
||||
div.bodywrapper a, div.footer a {
|
||||
div.bodywrapper a,
|
||||
div.footer a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@@ -58,22 +59,25 @@ div.bodywrapper a, div.footer a {
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
font-family: "Georgia", "Times New Roman", serif;
|
||||
font-weight: normal;
|
||||
color: #3465a4;
|
||||
margin-bottom: .8em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -81,14 +85,14 @@ h1 {
|
||||
}
|
||||
|
||||
h2 {
|
||||
padding-bottom: .5em;
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid #3465a4;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
color: #dddddd;
|
||||
padding-left: .3em;
|
||||
padding-left: 0.3em;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
@@ -120,7 +124,8 @@ p.admonition-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dt:target, .highlighted {
|
||||
dt:target,
|
||||
.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
@@ -135,8 +140,8 @@ div.header .headertitle {
|
||||
font-family: "Georgia", "Times New Roman", serif;
|
||||
font-weight: normal;
|
||||
font-size: 180%;
|
||||
letter-spacing: .08em;
|
||||
margin-bottom: .8em;
|
||||
letter-spacing: 0.08em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
div.header .headertitle a {
|
||||
@@ -149,19 +154,18 @@ div.header div.rel {
|
||||
|
||||
div.header div.rel a {
|
||||
color: #fcaf3e;
|
||||
letter-spacing: .1em;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
p.logo {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
img.logo {
|
||||
border: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
/* Content */
|
||||
div.content-wrapper {
|
||||
background-color: white;
|
||||
@@ -190,7 +194,7 @@ div.document ul {
|
||||
|
||||
div.document dd {
|
||||
margin-left: 1.2em;
|
||||
margin-top: .4em;
|
||||
margin-top: 0.4em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
@@ -206,13 +210,13 @@ div.document div.highlight {
|
||||
background-color: #eeeeec;
|
||||
border-top: 2px solid #dddddd;
|
||||
border-bottom: 2px solid #dddddd;
|
||||
margin-top: .8em;
|
||||
margin-bottom: .8em;
|
||||
margin-top: 0.8em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
div.document div.literal-block-wrapper {
|
||||
margin-top: .8em;
|
||||
margin-bottom: .8em;
|
||||
margin-top: 0.8em;
|
||||
margin-bottom: 0.8em;
|
||||
}
|
||||
|
||||
div.document div.literal-block-wrapper div.highlight {
|
||||
@@ -220,19 +224,19 @@ div.document div.literal-block-wrapper div.highlight {
|
||||
}
|
||||
|
||||
div.document div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.document div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.document h2 {
|
||||
margin-top: .7em;
|
||||
margin-top: 0.7em;
|
||||
}
|
||||
|
||||
div.document p {
|
||||
margin-bottom: .5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
div.document li.toctree-l1 {
|
||||
@@ -244,7 +248,7 @@ div.document .descname {
|
||||
}
|
||||
|
||||
div.document .sig-paren {
|
||||
font-size: larger;
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
div.document .docutils.literal {
|
||||
@@ -265,16 +269,15 @@ div.document ol {
|
||||
margin: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
/* Sidebar */
|
||||
|
||||
div.sidebar {
|
||||
width: 20em;
|
||||
position:fixed;
|
||||
position: fixed;
|
||||
right: 10%;
|
||||
height:75%;
|
||||
font-size: .9em;
|
||||
overflow-y:auto;
|
||||
height: 75%;
|
||||
font-size: 0.9em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
/*
|
||||
div.sidebar {
|
||||
@@ -284,11 +287,13 @@ div.sidebar {
|
||||
}
|
||||
*/
|
||||
|
||||
div.sidebar a, div.header a {
|
||||
div.sidebar a,
|
||||
div.header a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.sidebar a:hover, div.header a:hover {
|
||||
div.sidebar a:hover,
|
||||
div.header a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@@ -296,7 +301,7 @@ div.sidebar h3 {
|
||||
color: #2e3436;
|
||||
text-transform: uppercase;
|
||||
font-size: 130%;
|
||||
letter-spacing: .1em;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
div.sidebar ul {
|
||||
@@ -308,7 +313,7 @@ div.sidebar li.toctree-l1 a {
|
||||
padding: 1px;
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #eeeeec;
|
||||
margin-bottom: .4em;
|
||||
margin-bottom: 0.4em;
|
||||
padding-left: 3px;
|
||||
color: #2e3436;
|
||||
}
|
||||
@@ -347,7 +352,6 @@ div.sidebar input[type="submit"] {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
|
||||
/* Footer */
|
||||
|
||||
div.footer-wrapper {
|
||||
@@ -358,7 +362,8 @@ div.footer-wrapper {
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
div.footer, div.footer a {
|
||||
div.footer,
|
||||
div.footer a {
|
||||
color: #888a85;
|
||||
}
|
||||
|
||||
@@ -370,48 +375,53 @@ div.footer .left {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/* Styles copied from basic theme */
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
img.align-left,
|
||||
.figure.align-left,
|
||||
object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
img.align-right,
|
||||
.figure.align-right,
|
||||
object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
img.align-center,
|
||||
.figure.align-center,
|
||||
object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number {
|
||||
font-style: italic;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text {
|
||||
@@ -420,122 +430,122 @@ div.figure p.caption span.caption-text {
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li div.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- viewcode extension ---------------------------------------------------- */
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family:: "Verdana", Arial, sans-serif;
|
||||
float: right;
|
||||
font-family: "Verdana", Arial, sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -3px;
|
||||
padding: 0 3px;
|
||||
background-color: #f4debf;
|
||||
border-top: 1px solid #ac9;
|
||||
border-bottom: 1px solid #ac9;
|
||||
margin: -1px -3px;
|
||||
padding: 0 3px;
|
||||
background-color: #f4debf;
|
||||
border-top: 1px solid #ac9;
|
||||
border-bottom: 1px solid #ac9;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
background-color: #ddd;
|
||||
color: #333;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
background-color: #ddd;
|
||||
color: #333;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
.wy-nav-content {
|
||||
max-width: none;
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
version: "3.4"
|
||||
services:
|
||||
web:
|
||||
image: bitburner:dev
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: dev
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- ./src:/app/src
|
||||
- ./css:/app/css
|
||||
- ./utils:/app/utils
|
||||
- ./test:/app/test
|
||||
web:
|
||||
image: bitburner:dev
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: dev
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- ./src:/app/src
|
||||
- ./css:/app/css
|
||||
- ./utils:/app/utils
|
||||
- ./test:/app/test
|
||||
|
||||
BIN
electron/icon.png
Normal file
BIN
electron/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
38
electron/main.js
Normal file
38
electron/main.js
Normal file
@@ -0,0 +1,38 @@
|
||||
const { app, BrowserWindow, Menu, globalShortcut, shell } = require("electron");
|
||||
|
||||
Menu.setApplicationMenu(false);
|
||||
function createWindow() {
|
||||
const win = new BrowserWindow({
|
||||
show: false,
|
||||
webPreferences: {
|
||||
devTools: true,
|
||||
},
|
||||
});
|
||||
|
||||
win.removeMenu();
|
||||
win.maximize();
|
||||
win.loadFile("index.html");
|
||||
win.show();
|
||||
win.webContents.openDevTools();
|
||||
globalShortcut.register("f5", function () {
|
||||
win.loadFile("index.html");
|
||||
});
|
||||
globalShortcut.register("f8", function () {
|
||||
win.loadFile("index.html", { query: { noScripts: "true" } });
|
||||
});
|
||||
|
||||
win.webContents.on("new-window", function (e, url) {
|
||||
// make sure local urls stay in electron perimeter
|
||||
if (url.substr(0, "file://".length) === "file://") {
|
||||
return;
|
||||
}
|
||||
|
||||
// and open every other protocols on the browser
|
||||
e.preventDefault();
|
||||
shell.openExternal(url);
|
||||
});
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
createWindow();
|
||||
});
|
||||
7
electron/package.json
Executable file
7
electron/package.json
Executable file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "bitburner",
|
||||
"version": "1.0.0",
|
||||
"description": "A cyberpunk-themed programming incremental game",
|
||||
"main": "main.js",
|
||||
"author": "Daniel Xie"
|
||||
}
|
||||
663
index.html
663
index.html
@@ -1,628 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Bitburner</title>
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="dist/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="dist/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="dist/favicon-16x16.png">
|
||||
<link rel="manifest" href="dist/site.webmanifest">
|
||||
<link rel="mask-icon" href="dist/safari-pinned-tab.svg" color="#000000">
|
||||
<meta name="apple-mobile-web-app-title" content="Bitburner">
|
||||
<meta name="application-name" content="Bitburner">
|
||||
<meta name="msapplication-TileColor" content="#000000">
|
||||
<meta name="msapplication-config" content="dist/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="dist/apple-touch-icon.png"/>
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="dist/favicon-32x32.png"/>
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="dist/favicon-16x16.png"/>
|
||||
<link rel="manifest" href="dist/site.webmanifest"/>
|
||||
<link rel="mask-icon" href="dist/safari-pinned-tab.svg" color="#000000"/>
|
||||
<meta name="apple-mobile-web-app-title" content="Bitburner"/>
|
||||
<meta name="application-name" content="Bitburner"/>
|
||||
<meta name="msapplication-TileColor" content="#000000"/>
|
||||
<meta name="msapplication-config" content="dist/browserconfig.xml"/>
|
||||
<meta name="theme-color" content="#ffffff"/>
|
||||
|
||||
<!-- Google Analytics -->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
(function (i, s, o, g, r, a, m) {
|
||||
i["GoogleAnalyticsObject"] = r;
|
||||
(i[r] =
|
||||
i[r] ||
|
||||
function () {
|
||||
(i[r].q = i[r].q || []).push(arguments);
|
||||
}),
|
||||
(i[r].l = 1 * new Date());
|
||||
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m);
|
||||
})(window, document, "script", "https://www.google-analytics.com/analytics.js", "ga");
|
||||
</script>
|
||||
<script>
|
||||
ga('create', 'UA-100157497-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<link rel="shortcut icon" href="favicon.ico"><link href="dist/vendor.css" rel="stylesheet"><link href="dist/engineStyle.css" rel="stylesheet"></head>
|
||||
<body>
|
||||
<div id="entire-game-container" style="visibility:hidden;">
|
||||
<div id="mainmenu-container">
|
||||
<!-- Main menu -->
|
||||
<ul id="mainmenu" class="mainmenu noscrollbar">
|
||||
<!-- Hacking dropdown -->
|
||||
<li id="hacking-menu-header-li">
|
||||
<button id="hacking-menu-header" class="mainmenu-accordion-header noselect"> Hacking </button>
|
||||
</li>
|
||||
<li id="terminal-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="terminal-menu-link"> Terminal </button>
|
||||
</li>
|
||||
<li id="create-script-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="create-script-menu-link"> Create Script </button>
|
||||
</li>
|
||||
<li id="active-scripts-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="active-scripts-menu-link"> Active Scripts </button>
|
||||
</li>
|
||||
<li id="create-program-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="create-program-menu-link"> Create Program </button>
|
||||
<span id="create-program-notification" class="notification-off"> </span>
|
||||
</li>
|
||||
|
||||
<!-- Character dropdown -->
|
||||
<li id="character-menu-header-li">
|
||||
<button id="character-menu-header" class="mainmenu-accordion-header noselect"> Character </button>
|
||||
</li>
|
||||
<li id="stats-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="stats-menu-link"> Stats </button>
|
||||
</li>
|
||||
<li id="factions-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="factions-menu-link"> Factions </button>
|
||||
<span id="factions-notification" class="notification-off"> </span>
|
||||
</li>
|
||||
<li id="augmentations-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="augmentations-menu-link" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"> Augmentations </button>
|
||||
<span id="augmentations-notification" class="notification-off"> </span>
|
||||
</li>
|
||||
<li id="hacknet-nodes-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="hacknet-nodes-menu-link"> Hacknet </button>
|
||||
</li>
|
||||
<li id="sleeves-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="sleeves-menu-link"> Sleeves </button>
|
||||
</li>
|
||||
|
||||
<!-- World dropdown -->
|
||||
<li id="world-menu-header-li">
|
||||
<button id="world-menu-header" class="mainmenu-accordion-header noselect">World</button>
|
||||
</li>
|
||||
<li id="city-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="city-menu-link"> City </button>
|
||||
</li>
|
||||
<li id="travel-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="travel-menu-link"> Travel </button>
|
||||
</li>
|
||||
<li id="job-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="job-menu-link"> Job </button>
|
||||
</li>
|
||||
<li id="stock-market-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="stock-market-menu-link"> Stock Market </button>
|
||||
</li>
|
||||
<li id="bladeburner-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="bladeburner-menu-link"> Bladeburner </button>
|
||||
</li>
|
||||
<li id="corporation-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="corporation-menu-link"> Corp </button>
|
||||
</li>
|
||||
<li id="gang-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="gang-menu-link"> Gang </button>
|
||||
</li>
|
||||
|
||||
<li id="help-menu-header-li">
|
||||
<button id="help-menu-header" class="mainmenu-accordion-header noselect"> Help </button>
|
||||
</li>
|
||||
<li id="milestones-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="milestones-menu-link"> Milestones </button>
|
||||
</li>
|
||||
<li id="tutorial-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="tutorial-menu-link"> Tutorial </button>
|
||||
</li>
|
||||
<li id="options-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="options-menu-link"> Options </button>
|
||||
</li>
|
||||
<li id="dev-tab" class="mainmenu-accordion-panel noselect">
|
||||
<button id="dev-menu-link"> Dev </button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="script-editor-container" class="generic-menupage-container">
|
||||
<div id="script-editor-wrapper">
|
||||
|
||||
<div id="script-editor-filename-wrapper">
|
||||
<p id="script-editor-filename-tag"> <strong style="background-color:#555;">Script name: </strong></p>
|
||||
<input id="script-editor-filename" type="text" maxlength="100" tabindex="1"/>
|
||||
</div>
|
||||
|
||||
<div id="ace-editor"></div>
|
||||
<form id="codemirror-form-wrapper"><textarea id="codemirror-editor"></textarea></form>
|
||||
<div id="codemirror-vim-command-display-wrapper">
|
||||
Key Buffer: <span id="codemirror-vim-command-display"></span>
|
||||
</div>
|
||||
|
||||
<div id="script-editor-buttons-wrapper"></div> <!-- Buttons below script editor -->
|
||||
</div> <!-- End wrapper -->
|
||||
|
||||
<div id="script-editor-options-panel">
|
||||
<h1 style="color:white;"> Script Editor Options </h1>
|
||||
<fieldset>
|
||||
<label for="script-editor-option-editor">Editor</label>
|
||||
<select id="script-editor-option-editor" class="dropdown">
|
||||
<option value="Ace">Ace</option>
|
||||
<option value="CodeMirror">CodeMirror</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="script-editor-option-theme">Theme</label>
|
||||
<select id="script-editor-option-theme" class="dropdown"></select>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="script-editor-option-keybinding">Key Binding</label>
|
||||
<select id="script-editor-option-keybinding" class="dropdown"></select>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="script-editor-option-highlightactiveline">Highlight Active Line</label>
|
||||
<input type="checkbox" class="optionCheckbox" name="script-editor-option-highlightactiveline" id="script-editor-option-highlightactiveline" checked>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="script-editor-option-showinvisibles">Show Invisibles</label>
|
||||
<input type="checkbox" class="optionCheckbox" name="script-editor-option-showinvisibles" id="script-editor-option-showinvisibles">
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="script-editor-option-usesofttab">Use Soft Tab</label>
|
||||
<input type="checkbox" class="optionCheckbox" name="script-editor-option-usesofttab" id="script-editor-option-usesofttab" checked>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="script-editor-option-flex1-fieldset"></fieldset>
|
||||
<fieldset id="script-editor-option-flex2-fieldset"></fieldset>
|
||||
<fieldset id="script-editor-option-flex3-fieldset"></fieldset>
|
||||
<fieldset id="script-editor-option-flex4-fieldset"></fieldset>
|
||||
|
||||
</div> <!-- End script editor options panel -->
|
||||
</div>
|
||||
|
||||
<!-- Terminal page -->
|
||||
<div id="terminal-container">
|
||||
<table id="terminal">
|
||||
<tr id="terminal-input">
|
||||
<td id="terminal-input-td" tabindex="2">$
|
||||
<input type="text" id="terminal-input-text-box" class="terminal-input" tabindex="1" onfocus="this.value = this.value;" autocomplete="off"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Character Info page -->
|
||||
<div id="character-container" class="generic-menupage-container">
|
||||
<div id="character-content"></div>
|
||||
</div>
|
||||
|
||||
<!-- Active scripts info page -->
|
||||
<div id="active-scripts-container" class="generic-menupage-container">
|
||||
<p id="active-scripts-text"> This page displays a list of all of your scripts that are currently running across every machine. It also
|
||||
provides information about each script's production. The scripts are categorized by the hostname of the servers on which
|
||||
they are running. </p>
|
||||
<p id="active-scripts-total-prod">Total online production of
|
||||
Active scripts: <span class="money-gold"><span id="active-scripts-total-production-active">$0.000</span> / sec</span><br/>
|
||||
Total online production since last Aug installation: <span id="active-scripts-total-prod-aug-total" class="money-gold">$0.000</span>
|
||||
(<span class="money-gold"><span id="active-scripts-total-prod-aug-avg" class="money-gold">$0.000</span> / sec</span>)</p>
|
||||
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Hacknet Nodes -->
|
||||
<div id="hacknet-nodes-container" class="generic-menupage-container">
|
||||
<!-- React Component -->
|
||||
</div>
|
||||
|
||||
<!-- Create a program(executable) -->
|
||||
<div id="create-program-container" class="generic-menupage-container">
|
||||
<p id="create-program-page-text">
|
||||
This page displays any programs that you are able to create. Writing the code for a program takes time, which
|
||||
can vary based on how complex the program is. If you are working on creating a program you can cancel
|
||||
at any time. Your progress will be saved and you can continue later.
|
||||
</p>
|
||||
|
||||
<ul id="create-program-list"></ul>
|
||||
</div>
|
||||
|
||||
<!-- Factions -->
|
||||
<div id="factions-container" class="generic-menupage-container"></div>
|
||||
|
||||
<!-- Single Faction info (when you select a faction from the Factions menu) -->
|
||||
<div id="faction-container" class="generic-menupage-container"></div>
|
||||
|
||||
<!-- Augmentations -->
|
||||
<div id="augmentations-container" class="generic-menupage-container"></div>
|
||||
|
||||
<!-- Milestones content -->
|
||||
<div id="milestones-container" class="generic-menupage-container"></div>
|
||||
|
||||
<!-- Bladeburner -->
|
||||
<div id="bladeburner-container" class="generic-menupage-container"></div>
|
||||
|
||||
<!-- Tutorial content -->
|
||||
<div id="tutorial-container" class="generic-menupage-container">
|
||||
<h1> Tutorial (AKA Links to Documentation) </h1>
|
||||
<a id="tutorial-getting-started-link" class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/guidesandtips/gettingstartedguideforbeginnerprogrammers.html">
|
||||
Getting Started</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/servers.html">
|
||||
Servers & Networking</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/hacking.html">
|
||||
Hacking</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/scripts.html">
|
||||
Scripts</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/netscript.html">
|
||||
Netscript Programming Language</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/world.html">
|
||||
Traveling</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/companies.html">
|
||||
Companies</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/infiltration.html">
|
||||
Infiltration</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/factions.html">
|
||||
Factions</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/basicgameplay/augmentations.html">
|
||||
Augmentations</a><br><br>
|
||||
<a class="a-link-button" target="_blank" href="https://bitburner.readthedocs.io/en/latest/shortcuts.html">
|
||||
Keyboard Shortcuts</a>
|
||||
</div>
|
||||
|
||||
<!-- Location (visiting a location in World) -->
|
||||
<div id="location-container" class="generic-menupage-container">
|
||||
</div>
|
||||
|
||||
<div id="infiltration-container" class="generic-fullscreen-container">
|
||||
</div>
|
||||
|
||||
<div id="stock-market-container" class="generic-menupage-container">
|
||||
<!-- React Component -->
|
||||
</div>
|
||||
|
||||
<div id="gang-container" class="generic-menupage-container">
|
||||
<!-- React Component -->
|
||||
</div>
|
||||
|
||||
<!-- Log Box -->
|
||||
<div id="log-box-container">
|
||||
<div id="log-box-content">
|
||||
<button id="log-box-close" class="popup-box-button"> Close </button>
|
||||
<button id="log-box-kill-script" class="popup-box-button">Kill Script</button>
|
||||
<p id="log-box-text-header"> </p>
|
||||
<p id="log-box-text"> </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Generic Yes/No Pop Up box -->
|
||||
<div id="yes-no-box-container" class="popup-box-container">
|
||||
<div id="yes-no-box-content" class="popup-box-content">
|
||||
<p id="yes-no-box-text"> </p>
|
||||
<button id="yes-no-box-yes" class="popup-box-button"> Yes </button>
|
||||
<button id="yes-no-box-no" class="popup-box-button"> No </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Generic yes/no pop up box with text entry field -->
|
||||
<div id="yes-no-text-input-box-container" class="popup-box-container">
|
||||
<div id="yes-no-text-input-box-content" class="popup-box-content">
|
||||
<p id="yes-no-text-input-box-text"> </p>
|
||||
<input type="text" id="yes-no-text-input-box-input" pattern="[a-zA-Z0-9-_]" maxlength="30"/>
|
||||
<button id="yes-no-text-input-box-yes" class="popup-box-button"> Yes </button>
|
||||
<button id="yes-no-text-input-box-no" class="popup-box-button"> No </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Faction Invitation Pop-up Box -->
|
||||
<div id="faction-invitation-box-container" class="popup-box-container">
|
||||
<div id="faction-invitation-box-content" class="popup-box-content">
|
||||
<p id="faction-invitation-box-text"> </p>
|
||||
<p id="faction-invitation-box-message"> </p>
|
||||
<p id="faction-invitation-box-warning">
|
||||
Would you like to join? <br/> <br/>
|
||||
Warning: Joining this faction may prevent you from joining other factions during this run!
|
||||
</p>
|
||||
<button id="faction-invitation-box-yes" class="popup-box-button"> Join! </button>
|
||||
<button id="faction-invitation-box-no" class="popup-box-button"> Decide later </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- End of Infiltration pop up box -->
|
||||
<div id="infiltration-box-container" class="popup-box-container">
|
||||
<div id="infiltration-box-content" class="popup-box-content">
|
||||
<p id="infiltration-box-text"> </p>
|
||||
|
||||
<button id="infiltration-box-sell" class="a-link-button"> Sell on Black Market </button> <br/><br/>
|
||||
<select id="infiltration-faction-select" class="dropdown"> </select> <br/>
|
||||
<button id="infiltration-box-faction" class="a-link-button"> Give to Faction for Reputation </button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mission container -->
|
||||
<div id="mission-container" class="generic-fullscreen-container">
|
||||
</div>
|
||||
|
||||
<!-- Work in progress screen -->
|
||||
<div id="work-in-progress-container" class="generic-fullscreen-container">
|
||||
<p id="work-in-progress-text"> </p>
|
||||
|
||||
<button id="work-in-progress-cancel-button" class="work-button"> Cancel Work </button>
|
||||
<button id="work-in-progress-something-else-button" class="work-button"> Do something else simultaneously </button>
|
||||
</div>
|
||||
|
||||
<!-- Red Pill Container -->
|
||||
<div id="red-pill-container" class="generic-fullscreen-container">
|
||||
<div id="red-pill-content" class="generic-fullscreen-container-scroll"></div>
|
||||
</div>
|
||||
|
||||
<!-- Cinematic Text Container -->
|
||||
<div id="cinematic-text-container" class="generic-fullscreen-container"></div>
|
||||
|
||||
<!-- Interactive Tutorial Text Screen -->
|
||||
<div id="interactive-tutorial-wrapper">
|
||||
<div id="interactive-tutorial-container">
|
||||
<p id="interactive-tutorial-text"> </p>
|
||||
<button id="interactive-tutorial-exit"> Exit Tutorial </button>
|
||||
<button id="interactive-tutorial-next"> Next </button>
|
||||
<button id="interactive-tutorial-back"> Back </button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Character Overview Screen -->
|
||||
<div id="character-overview-wrapper">
|
||||
<div id="character-overview-container">
|
||||
<div id="character-overview-text">
|
||||
<!-- ReactJS Component -->
|
||||
</div>
|
||||
<div class="character-quick-options noselect">
|
||||
<button id="character-overview-save-button" class="character-overview-btn">Save Game</button>
|
||||
<button id="character-overview-options-button" class="character-overview-btn">Options</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Status text -->
|
||||
<div id="status-text-container">
|
||||
<p id="status-text"></p>
|
||||
</div>
|
||||
|
||||
<!-- Game Options -->
|
||||
<div id="game-options-container" class="popup-box-container">
|
||||
<div id="game-options-content" class="game-options-box">
|
||||
<button id="game-options-close-button" aria-label="close options dialog">×</button>
|
||||
<h1> Game Options </h1>
|
||||
<br/>
|
||||
<div id="game-options-left-panel">
|
||||
<!-- Netscript execution time -->
|
||||
<fieldset>
|
||||
<label for="settingsNSExecTimeRangeVal" class="tooltip">Netscript exec time:
|
||||
<span class="tooltiptext">
|
||||
The minimum number of milliseconds it takes to execute an operation in Netscript.
|
||||
Setting this too low can result in poor performance if you have many scripts running.
|
||||
The default value is 25ms.
|
||||
</span>
|
||||
</label>
|
||||
|
||||
<input class="optionRange" type="range" max="100" min="10" step="1" name="settingsNSExecTimeRangeVal" id="settingsNSExecTimeRangeVal" value="25"/>
|
||||
<em id="settingsNSExecTimeRangeValLabel" style="font-style: normal;"></em>
|
||||
</fieldset>
|
||||
|
||||
<!-- Log capacity -->
|
||||
<fieldset>
|
||||
<label for="settingsNSLogRangeVal" class="tooltip">Netscript log size:
|
||||
<span class="tooltiptext">
|
||||
The maximum number of lines a script's logs can hold. Setting this too high
|
||||
can cause the game to use a lot of memory if you have many scripts running.
|
||||
The default value is 50.
|
||||
</span>
|
||||
</label>
|
||||
|
||||
<input class="optionRange" type="range" max="100" min="20" step="1" name="settingsNSLogRangeVal" id="settingsNSLogRangeVal" value="50"/>
|
||||
<em id="settingsNSLogRangeValLabel" style="font-style: normal;"></em>
|
||||
</fieldset>
|
||||
|
||||
<!-- Port capacity -->
|
||||
<fieldset>
|
||||
<label for="settingsNSPortRangeVal" class="tooltip">Netscript port size:
|
||||
<span class="tooltiptext">
|
||||
The maximum number of entries that can be written to a port using Netscript's
|
||||
write() function. Setting this too high can cause the game to use a lot of memory.
|
||||
The default value is 50.
|
||||
</span>
|
||||
</label>
|
||||
|
||||
<input class="optionRange" type="range" max="100" min="20" step="1" name="settingsNSPortRangeVal" id="settingsNSPortRangeVal" value="50"/>
|
||||
<em id="settingsNSPortRangeValLabel" style="font-style: normal;"></em>
|
||||
</fieldset>
|
||||
|
||||
<!-- Autosave Interval -->
|
||||
<fieldset>
|
||||
<label for="settingsAutosaveIntervalVal" class="tooltip">Autosave Interval:
|
||||
<span class="tooltiptext">
|
||||
The time (in seconds) between each autosave. Set to 0 to disable autosave.
|
||||
</span>
|
||||
</label>
|
||||
|
||||
<input class="optionRange" type="range" max="600" min="0" step="1" name="settingsAutosaveIntervalVal" id="settingsAutosaveIntervalVal" value="60"/>
|
||||
<em id="settingsAutosaveIntervalValLabel" style="font-style: normal;"></em>
|
||||
</fieldset>
|
||||
|
||||
<!-- Suppress messages -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressMessages" class="tooltip">Suppress Messages:
|
||||
<span class="tooltiptext">
|
||||
If this is set, then any messages you receive will not appear as popups
|
||||
on the screen. They will still get sent to your home computer as '.msg' files
|
||||
and can be viewed with the 'cat' Terminal command.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressMessages" id="settingsSuppressMessages">
|
||||
</fieldset>
|
||||
|
||||
<!-- Suppress faction invites -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressFactionInvites" class="tooltip">Suppress Faction Invites:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, then any faction invites you receive will not appear as popups
|
||||
on the screen. Your outstanding faction invites can be viewed in the 'Factions' page.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressFactionInvites" id="settingsSuppressFactionInvites">
|
||||
</fieldset>
|
||||
|
||||
<!-- Suppress travel confirmation -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressTravelConfirmation" class="tooltip">Suppress Travel Confirmation:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, the confirmation message before traveling will not show up. You will automatically be deducted the travel cost as soon as you click.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressTravelConfirmation" id="settingsSuppressTravelConfirmation">
|
||||
</fieldset>
|
||||
|
||||
|
||||
<!-- Suppress buy aug confirmation -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressBuyAugmentationConfirmation" class="tooltip">Suppress buy augmentation confirmation:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, the confirmation message before buying augmentation will not show up.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressBuyAugmentationConfirmation" id="settingsSuppressBuyAugmentationConfirmation">
|
||||
</fieldset>
|
||||
|
||||
<!-- Hospitalization Popup -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressHospitalizationPopup" class="tooltip">Suppress Hospitalization popup:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, a popup message will no longer be shown when you are hospitalized after taking too much damage.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressHospitalizationPopup" id="settingsSuppressHospitalizationPopup">
|
||||
</fieldset>
|
||||
|
||||
<!-- Suppress Bladeburner popups -->
|
||||
<fieldset>
|
||||
<label for="settingsSuppressBladeburnerPopup" class="tooltip">Suppress Bladeburner Popup:
|
||||
<span class="tooltiptext">
|
||||
If this is set, then having your Bladeburner actions interrupted by being busy with something else will not display a popup message.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsSuppressBladeburnerPopup" id="settingsSuppressBladeburnerPopup">
|
||||
</fieldset>
|
||||
|
||||
<!-- Disable Terminal and Navigation Shortcuts -->
|
||||
<fieldset>
|
||||
<label for="settingsDisableHotkeys" class="tooltip">Disable Hotkeys:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, then most hotkeys (keyboard shortcuts) in the game are disabled.
|
||||
This includes Terminal commands, hotkeys to navigate between different parts of the game,
|
||||
and the "Save and Close (Ctrl + b)" hotkey in the Text Editor.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsDisableHotkeys" id="settingsDisableHotkeys">
|
||||
</fieldset>
|
||||
|
||||
<!-- View city as list of buttons instead of ASCII art. -->
|
||||
<fieldset>
|
||||
<label for="settingsDisableASCIIArt" class="tooltip">Disable ASCII art:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set all ASCII art will be disabled.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsDisableASCIIArt" id="settingsDisableASCIIArt">
|
||||
</fieldset>
|
||||
|
||||
<!-- Disable text effects such as corruption. -->
|
||||
<fieldset>
|
||||
<label for="settingsDisableTextEffects" class="tooltip">Disable Text Effects:
|
||||
<span class="tooltiptexthigh">
|
||||
If this is set, text effects will not be displayed. This can help if text is difficult to read in certain areas.
|
||||
</span>
|
||||
</label>
|
||||
<input class="optionCheckbox" type="checkbox" name="settingsDisableTextEffects" id="settingsDisableTextEffects">
|
||||
</fieldset>
|
||||
|
||||
<!-- Locale for displaying numbers -->
|
||||
<fieldset>
|
||||
<label for="settingsLocale" class="tooltip">Locale:
|
||||
<span class="tooltiptexthigh">
|
||||
Sets the locale for displaying numbers. Defaults to 'en'
|
||||
</span>
|
||||
</label>
|
||||
<select name="settingsLocale" id="settingsLocale" class="dropdown">
|
||||
<option value="en">en</option>
|
||||
<option value="bg">bg</option>
|
||||
<option value="cs">cs</option>
|
||||
<option value="da-dk">da-dk</option>
|
||||
<option value="de">de</option>
|
||||
<option value="en-au">en-au</option>
|
||||
<option value="en-gb">en-gb</option>
|
||||
<option value="es">es</option>
|
||||
<option value="fr">fr</option>
|
||||
<option value="hu">hu</option>
|
||||
<option value="it">it</option>
|
||||
<option value="lv">lv</option>
|
||||
<option value="no">no</option>
|
||||
<option value="pl">pl</option>
|
||||
<option value="ru">ru</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
<!-- Donate button -->
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
||||
<input type="hidden" name="cmd" value="_s-xclick">
|
||||
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHRwYJKoZIhvcNAQcEoIIHODCCBzQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYA2Y2VGE75oWct89z//G2YEJKmzx0uDTXNrpje9ThxmUnBLFZCY+I11Pors7lGRvFqo5okwnu41CfYMPHDxpAgyYyQndMX9pWUX0gLfBMm2BaHwsNBCwt34WmpQqj7TGsQ+aw9NbmkxiJltGnOa+6/gy10mPZAA3HxiieLeCKkGgDELMAkGBSsOAwIaBQAwgcQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI72F1YSzHUd2AgaDMekHU3AKT93Ey9wkB3486bV+ngFSD6VOHrPweH9QATsp+PMe9QM9vmq+s2bGtTbZaYrFqM3M97SnQ0l7IQ5yuOzdZhRdfysu5uJ8dnuHUzq4gLSzqMnZ6/3c+PoHB8AS1nYHUVL4U0+ogZsO1s97IAQyfck9SaoFlxVtqQhkb8752MkQJJvGu3ZQSQGcVC4hFDPk8prXqyq4BU/k/EliwoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwNzI1MDExODE2WjAjBgkqhkiG9w0BCQQxFgQUNo8efiZ7sk7nwKM/6B6Z7sU8hIIwDQYJKoZIhvcNAQEBBQAEgYB+JB4vZ/r48815/1HF/xK3+rOx7bPz3kAXmbhW/mkoF4OUbzqMeljvDIA9q/BDdlCLtxFOw9XlftTzv0eZCW/uCIiwu5wTzPIfPY1SI8WHe4cJbP2f2EYxIVs8D7OSirbW4yVa0+gACaLLj0rzIzNN8P/5PxgB03D+jwkcJABqng==-----END PKCS7-----
|
||||
">
|
||||
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
||||
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
||||
</form>
|
||||
</div>
|
||||
<div id="game-options-right-panel">
|
||||
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/changelog.html" target="_blank"> Changelog </a>
|
||||
<a class="a-link-button" href="https://bitburner.readthedocs.io/en/latest/index.html" target="_blank">Documentation</a>
|
||||
<a class="a-link-button" href="https://discord.gg/TFc3hKD" target="_blank">Discord</a>
|
||||
<a class="a-link-button" href="https://www.reddit.com/r/bitburner" target="_blank">Subreddit</a>
|
||||
<button id="save-game-link" class="a-link-button"> Save Game </button>
|
||||
<button id="delete-game-link" class="a-link-button"> Delete Game </button>
|
||||
<button id="export-game-link" class="a-link-button"> Export Game </button>
|
||||
<input type="file" id="import-game-file-selector" name="file"/>
|
||||
<button id="import-game-link" class="a-link-button"> Import Game </button>
|
||||
<button id="copy-save-to-clipboard-link" class="std-button">
|
||||
Copy Save data to Clipboard
|
||||
</button>
|
||||
<button id="debug-delete-scripts-link" class="a-link-button tooltip">
|
||||
Delete all active scripts
|
||||
<span class="tooltiptextleft">
|
||||
Forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After
|
||||
using this, save the game and then reload the page.
|
||||
</span>
|
||||
</button>
|
||||
<button id="debug-soft-reset" class="a-link-button tooltip">
|
||||
Soft Reset
|
||||
<span class="tooltiptextleft">
|
||||
Perform a soft reset. Resets everything as if you had just purchased an Augmentation.
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Loader (Loading screen) -->
|
||||
<div id="loader" class="loaderoverlay">
|
||||
<div class="loaderspinner"></div>
|
||||
<div class="loaderlabel">Loading Bitburner...</div>
|
||||
<div id="killAllMessageWrapper" class="killAllMessage killAllMessageWrapperHidden">
|
||||
<script>setTimeout(function(){
|
||||
var w = document.getElementById('killAllMessageWrapper');
|
||||
if (w == null) {return;}
|
||||
w.classList.remove("killAllMessageWrapperHidden");
|
||||
w.classList.add("killAllMessageWrapperShow");
|
||||
}, 2000);</script>
|
||||
<p>If the game fails to load, consider <a href="?noScripts">killing all scripts</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="unclickable" style="display: none">Click on this to upgrade your Source-File -1!</div>
|
||||
<script type="text/javascript" src="dist/vendor.bundle.js"></script><script type="text/javascript" src="dist/engine.bundle.js"></script><script type="text/javascript" src="dist/engineStyle.bundle.js"></script></body>
|
||||
|
||||
<!-- Misc Scripts -->
|
||||
<script src="src/ThirdParty/raphael.min.js"></script>
|
||||
<script src="src/ThirdParty/Treant.js"></script>
|
||||
<script>
|
||||
ga("create", "UA-100157497-1", "auto");
|
||||
ga("send", "pageview");
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: black;
|
||||
-ms-overflow-style: none; /* for Internet Explorer, Edge */
|
||||
scrollbar-width: none; /* for Firefox */
|
||||
}
|
||||
|
||||
body::-webkit-scrollbar {
|
||||
display: none; /* for Chrome, Safari, and Opera */
|
||||
}
|
||||
</style>
|
||||
<link rel="shortcut icon" href="favicon.ico"></head>
|
||||
<body>
|
||||
<div id="root"/>
|
||||
<script type="text/javascript" src="dist/vendor.bundle.js"></script><script type="text/javascript" src="main.bundle.js"></script></body>
|
||||
<script src="src/ThirdParty/raphael.min.js"></script>
|
||||
</html>
|
||||
|
||||
9
jest.config.js
Normal file
9
jest.config.js
Normal file
@@ -0,0 +1,9 @@
|
||||
module.exports = {
|
||||
setupFiles: ["./jest.setup.js"],
|
||||
moduleFileExtensions: ["ts", "tsx", "js", "jsx"],
|
||||
transform: {
|
||||
"^.+\\.(js|jsx|ts|tsx)$": "babel-jest",
|
||||
},
|
||||
// testMatch: ["**/?(*.)+(test).[jt]s?(x)"],
|
||||
testEnvironment: "jsdom",
|
||||
};
|
||||
2
jest.setup.js
Normal file
2
jest.setup.js
Normal file
@@ -0,0 +1,2 @@
|
||||
import "regenerator-runtime/runtime";
|
||||
global.$ = require("jquery");
|
||||
20
main.bundle.js
Normal file
20
main.bundle.js
Normal file
File diff suppressed because one or more lines are too long
1
main.bundle.js.map
Normal file
1
main.bundle.js.map
Normal file
File diff suppressed because one or more lines are too long
1
main.css.map
Normal file
1
main.css.map
Normal file
File diff suppressed because one or more lines are too long
33074
package-lock.json
generated
33074
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
91
package.json
91
package.json
@@ -1,4 +1,8 @@
|
||||
{
|
||||
"name": "bitburner",
|
||||
"license": "SEE LICENSE IN license.txt",
|
||||
"version": "0.53.0",
|
||||
"main": "electron-main.js",
|
||||
"author": {
|
||||
"name": "Daniel Xie"
|
||||
},
|
||||
@@ -6,12 +10,20 @@
|
||||
"url": "https://github.com/danielyxie/bitburner/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@material-ui/core": "^4.11.3",
|
||||
"@emotion/react": "^11.4.1",
|
||||
"@emotion/styled": "^11.3.0",
|
||||
"@monaco-editor/react": "^4.2.2",
|
||||
"@mui/icons-material": "^5.0.0-rc.1",
|
||||
"@mui/lab": "^5.0.0-alpha.46",
|
||||
"@mui/material": "^5.0.0-rc.1",
|
||||
"@mui/styles": "^5.0.0-rc.1",
|
||||
"@types/escodegen": "^0.0.7",
|
||||
"@types/js-beautify": "^1.13.2",
|
||||
"@types/numeral": "0.0.25",
|
||||
"@types/react": "^16.8.6",
|
||||
"@types/react-dom": "^16.8.2",
|
||||
"acorn": "^6.4.1",
|
||||
"acorn-walk": "^6.2.0",
|
||||
"@types/react": "^17.0.21",
|
||||
"@types/react-dom": "^17.0.9",
|
||||
"acorn": "^8.4.1",
|
||||
"acorn-walk": "^8.1.1",
|
||||
"ajv": "^5.1.5",
|
||||
"ajv-keywords": "^2.0.0",
|
||||
"arg": "^5.0.0",
|
||||
@@ -29,43 +41,61 @@
|
||||
"jshint": "^2.10.2",
|
||||
"json-loader": "^0.5.4",
|
||||
"jsplumb": "^2.6.8",
|
||||
"jszip": "^3.1.5",
|
||||
"jszip": "^3.7.0",
|
||||
"loader-runner": "^2.3.0",
|
||||
"loader-utils": "^1.1.0",
|
||||
"material-ui-color": "^1.2.0",
|
||||
"mathjax-full": "^3.2.0",
|
||||
"mathjax-react": "^1.0.6",
|
||||
"memory-fs": "~0.4.1",
|
||||
"monaco-editor": "^0.27.0",
|
||||
"node-sass": "^6.0.1",
|
||||
"normalize.css": "^8.0.0",
|
||||
"numeral": "2.0.6",
|
||||
"react": "^16.8.3",
|
||||
"react-dom": "^16.8.3",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-modal": "^3.12.1",
|
||||
"sprintf-js": "^1.1.1",
|
||||
"tapable": "^1.0.0",
|
||||
"treant-js": "^1.0.1",
|
||||
"unused-webpack-plugin": "^2.4.0",
|
||||
"uuid": "^3.2.1",
|
||||
"w3c-blob": "0.0.1"
|
||||
"w3c-blob": "0.0.1",
|
||||
"webpack-deadcode-plugin": "^0.1.15"
|
||||
},
|
||||
"description": "A cyberpunk-themed incremental game",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.3.4",
|
||||
"@babel/preset-env": "^7.15.0",
|
||||
"@babel/preset-react": "^7.0.0",
|
||||
"@types/chai": "^4.1.7",
|
||||
"@babel/preset-typescript": "^7.15.0",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.1",
|
||||
"@testing-library/cypress": "^8.0.1",
|
||||
"@types/file-saver": "^2.0.3",
|
||||
"@types/jest": "^27.0.1",
|
||||
"@types/lodash": "^4.14.168",
|
||||
"@types/mocha": "^5.2.7",
|
||||
"@types/node": "^16.9.1",
|
||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||
"@typescript-eslint/parser": "^4.22.0",
|
||||
"babel-jest": "^27.0.6",
|
||||
"babel-loader": "^8.0.5",
|
||||
"beautify-lint": "^1.0.3",
|
||||
"benchmark": "^2.1.1",
|
||||
"bundle-loader": "~0.5.0",
|
||||
"chai": "^4.2.0",
|
||||
"css-loader": "^0.28.11",
|
||||
"cypress": "^8.3.1",
|
||||
"electron": "^14.0.1",
|
||||
"electron-packager": "^15.4.0",
|
||||
"es6-promise-polyfill": "^1.1.1",
|
||||
"eslint": "^7.24.0",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"file-loader": "^1.1.11",
|
||||
"fork-ts-checker-webpack-plugin": "^6.3.3",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"http-server": "^13.0.1",
|
||||
"i18n-webpack-plugin": "^1.0.0",
|
||||
"istanbul": "^0.4.5",
|
||||
"jest": "^27.1.0",
|
||||
"js-beautify": "^1.5.10",
|
||||
"jsdom": "^15.0.0",
|
||||
"jsdom-global": "^3.0.2",
|
||||
@@ -75,56 +105,61 @@
|
||||
"lodash": "^4.17.21",
|
||||
"mini-css-extract-plugin": "^0.4.1",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mocha": "^6.1.4",
|
||||
"mochapack": "^1.1.1",
|
||||
"null-loader": "^1.0.0",
|
||||
"prettier": "^2.3.2",
|
||||
"raw-loader": "~0.5.0",
|
||||
"react-refresh": "^0.10.0",
|
||||
"regenerator-runtime": "^0.13.9",
|
||||
"sass-loader": "^7.0.3",
|
||||
"script-loader": "~0.7.0",
|
||||
"should": "^11.1.1",
|
||||
"simple-git": "^1.96.0",
|
||||
"sinon": "^2.3.2",
|
||||
"source-map": "^0.7.3",
|
||||
"start-server-and-test": "^1.14.0",
|
||||
"style-loader": "^0.21.0",
|
||||
"stylelint": "^9.2.1",
|
||||
"stylelint-declaration-use-variable": "^1.6.1",
|
||||
"stylelint-order": "^0.8.1",
|
||||
"ts-loader": "^4.5.0",
|
||||
"typescript": "^4.2.4",
|
||||
"uglify-es": "^3.3.9",
|
||||
"uglifyjs-webpack-plugin": "^1.3.0",
|
||||
"url-loader": "^1.0.1",
|
||||
"watchpack": "^1.6.0",
|
||||
"webpack": "^4.12.0",
|
||||
"webpack-cli": "^3.0.4",
|
||||
"webpack-dev-middleware": "^3.1.3",
|
||||
"webpack-dev-server": "^3.2.1",
|
||||
"webpack": "^4.46.0",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-middleware": "^3.7.3",
|
||||
"webpack-dev-server": "^3.11.2",
|
||||
"worker-loader": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8 || <=9"
|
||||
},
|
||||
"homepage": "https://github.com/danielyxie/bitburner",
|
||||
"license": "SEE LICENSE IN license.txt",
|
||||
"name": "bitburner",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/danielyxie/bitburner.git"
|
||||
},
|
||||
"scripts": {
|
||||
"cy:test": "start-server-and-test start http://localhost:8000 cy:run",
|
||||
"cy:dev": "start-server-and-test start:dev http://localhost:8000 cy:open",
|
||||
"cy:open": "cypress open",
|
||||
"cy:run": "cypress run",
|
||||
"format": "prettier --write .",
|
||||
"start": "http-server -p 8000",
|
||||
"start:dev": "webpack-dev-server --progress --env.devServer --mode development",
|
||||
"start:dev-fast": "webpack-dev-server --progress --env.devServer --mode development --fast true",
|
||||
"start:container": "webpack-dev-server --progress --env.devServer --mode development --env.runInContainer",
|
||||
"build": "webpack --mode production",
|
||||
"build:dev": "webpack --mode development",
|
||||
"build:test": "webpack --config webpack.config-test.js",
|
||||
"lint": "npm run lint:jsts & npm run lint:style",
|
||||
"lint:jsts": "eslint --fix '*.{js,jsx,ts,tsx}' './src/**/*.{js,jsx,ts,tsx}' './test/**/*.{js,jsx,ts,tsx}' './utils/**/*.{js,jsx,ts,tsx}'",
|
||||
"lint:jsts": "eslint --fix . --ext js,jsx,ts,tsx",
|
||||
"lint:style": "stylelint --fix ./css/*",
|
||||
"preinstall": "node ./scripts/engines-check.js",
|
||||
"test": "mochapack --webpack-config webpack.config-test.js -r jsdom-global/register ./test/index.js",
|
||||
"test:container": "mochapack --webpack-config webpack.config-test.js --slow 2000 --timeout 10000 -r jsdom-global/register ./test/index.js",
|
||||
"test": "jest",
|
||||
"test:watch": "jest --watch",
|
||||
"watch": "webpack --watch --mode production",
|
||||
"watch:dev": "webpack --watch --mode development"
|
||||
},
|
||||
"version": "0.52.4"
|
||||
"watch:dev": "webpack --watch --mode development",
|
||||
"package-electron": "electron-packager .package bitburner --all --out .build --overwrite --icon .package/icon.png"
|
||||
}
|
||||
}
|
||||
|
||||
19
package.sh
Executable file
19
package.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
# npm install electron --save-dev
|
||||
# npm install electron-packager --save-dev
|
||||
|
||||
mkdir -p .package/dist/src/ThirdParty || true
|
||||
mkdir -p .package/src/ThirdParty || true
|
||||
|
||||
cp index.html .package
|
||||
cp electron/* .package
|
||||
# The css files
|
||||
cp dist/vendor.css .package/dist
|
||||
cp main.css .package/main.css
|
||||
|
||||
# The js files.
|
||||
cp dist/vendor.bundle.js .package/dist/vendor.bundle.js
|
||||
cp main.bundle.js .package/main.bundle.js
|
||||
|
||||
cp src/ThirdParty/raphael.min.js .package/src/ThirdParty/raphael.min.js
|
||||
|
||||
npm run package-electron
|
||||
File diff suppressed because it is too large
Load Diff
@@ -62,9 +62,12 @@ getPackageJson()
|
||||
.then(getEngines)
|
||||
.then(checkNodeVersion)
|
||||
.then(checkNpmVersion)
|
||||
.then(() => true, (error) => {
|
||||
// Specifically disable these as the error message gets lost in the normal unhandled output.
|
||||
/* eslint-disable no-console, no-process-exit */
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
.then(
|
||||
() => true,
|
||||
(error) => {
|
||||
// Specifically disable these as the error message gets lost in the normal unhandled output.
|
||||
/* eslint-disable no-console, no-process-exit */
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -82,7 +82,9 @@ src[NONNUMERICIDENTIFIER] = "\\d*[a-zA-Z-][a-zA-Z0-9-]*";
|
||||
// ## Main Version
|
||||
// Three dot-separated numeric identifiers.
|
||||
src[MAINVERSION] = `(${src[NUMERICIDENTIFIER]})\\.(${src[NUMERICIDENTIFIER]})\\.(${src[NUMERICIDENTIFIER]})`;
|
||||
src[MAINVERSIONLOOSE] = `(${src[NUMERICIDENTIFIERLOOSE]})\\.(${src[NUMERICIDENTIFIERLOOSE]})\\.(${src[NUMERICIDENTIFIERLOOSE]})`;
|
||||
src[
|
||||
MAINVERSIONLOOSE
|
||||
] = `(${src[NUMERICIDENTIFIERLOOSE]})\\.(${src[NUMERICIDENTIFIERLOOSE]})\\.(${src[NUMERICIDENTIFIERLOOSE]})`;
|
||||
|
||||
// ## Pre-release Version Identifier
|
||||
// A numeric identifier, or a non-numeric identifier.
|
||||
@@ -123,10 +125,14 @@ src[XRANGEIDENTIFIERLOOSE] = `${src[NUMERICIDENTIFIERLOOSE]}|x|X|\\*`;
|
||||
src[XRANGEIDENTIFIER] = `${src[NUMERICIDENTIFIER]}|x|X|\\*`;
|
||||
|
||||
/* eslint-disable-next-line max-len */
|
||||
src[XRANGEPLAIN] = `[v=\\s]*(${src[XRANGEIDENTIFIER]})(?:\\.(${src[XRANGEIDENTIFIER]})(?:\\.(${src[XRANGEIDENTIFIER]})(?:${src[PRERELEASE]})?${src[BUILD]}?)?)?`;
|
||||
src[
|
||||
XRANGEPLAIN
|
||||
] = `[v=\\s]*(${src[XRANGEIDENTIFIER]})(?:\\.(${src[XRANGEIDENTIFIER]})(?:\\.(${src[XRANGEIDENTIFIER]})(?:${src[PRERELEASE]})?${src[BUILD]}?)?)?`;
|
||||
|
||||
/* eslint-disable-next-line max-len */
|
||||
src[XRANGEPLAINLOOSE] = `[v=\\s]*(${src[XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[XRANGEIDENTIFIERLOOSE]})(?:${src[PRERELEASELOOSE]})?${src[BUILD]}?)?)?`;
|
||||
src[XRANGEPLAINLOOSE] =
|
||||
`[v=\\s]*(${src[XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[XRANGEIDENTIFIERLOOSE]})` +
|
||||
`(?:\\.(${src[XRANGEIDENTIFIERLOOSE]})(?:${src[PRERELEASELOOSE]})?${src[BUILD]}?)?)?`;
|
||||
|
||||
src[XRANGE] = `^${src[GTLT]}\\s*${src[XRANGEPLAIN]}$`;
|
||||
src[XRANGELOOSE] = `^${src[GTLT]}\\s*${src[XRANGEPLAINLOOSE]}$`;
|
||||
@@ -134,7 +140,9 @@ src[XRANGELOOSE] = `^${src[GTLT]}\\s*${src[XRANGEPLAINLOOSE]}$`;
|
||||
// Coercion.
|
||||
// Extract anything that could conceivably be a part of a valid semver
|
||||
/* eslint-disable-next-line max-len */
|
||||
src[COERCE] = `(?:^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`;
|
||||
src[
|
||||
COERCE
|
||||
] = `(?:^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`;
|
||||
|
||||
// Tilde ranges.
|
||||
// Meaning is "reasonably at or greater than"
|
||||
@@ -222,10 +230,7 @@ function compareIdentifiers(left, right) {
|
||||
// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
|
||||
// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
|
||||
// 1.2 - 3.4 => >=1.2.0 <3.5.0
|
||||
function hyphenReplace($0,
|
||||
from, fM, fm, fp, fpr, fb,
|
||||
to, tM, tm, tp, tpr) {
|
||||
|
||||
function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) {
|
||||
if (isX(fM)) {
|
||||
from = "";
|
||||
} else if (isX(fm)) {
|
||||
@@ -254,7 +259,7 @@ function hyphenReplace($0,
|
||||
function replaceTilde(comp, loose) {
|
||||
const regex = loose ? re[TILDELOOSE] : re[TILDE];
|
||||
|
||||
return comp.replace(regex, function(match, major, minor, patch, prerelease) {
|
||||
return comp.replace(regex, function (match, major, minor, patch, prerelease) {
|
||||
let ret;
|
||||
|
||||
if (isX(major)) {
|
||||
@@ -295,7 +300,7 @@ function replaceTildes(comp, loose) {
|
||||
function replaceCaret(comp, loose) {
|
||||
const regex = loose ? re[CARETLOOSE] : re[CARET];
|
||||
|
||||
return comp.replace(regex, function(match, major, minor, patch, prerelease) {
|
||||
return comp.replace(regex, function (match, major, minor, patch, prerelease) {
|
||||
let ret;
|
||||
|
||||
if (isX(major)) {
|
||||
@@ -353,7 +358,7 @@ function replaceXRange(comp, loose) {
|
||||
comp = comp.trim();
|
||||
const regex = loose ? re[XRANGELOOSE] : re[XRANGE];
|
||||
|
||||
return comp.replace(regex, function(ret, operator, major, minor, patch) {
|
||||
return comp.replace(regex, function (ret, operator, major, minor, patch) {
|
||||
const xM = isX(major);
|
||||
const xm = xM || isX(minor);
|
||||
const xp = xm || isX(patch);
|
||||
@@ -441,11 +446,11 @@ function parseComparator(comp, loose) {
|
||||
class SemVer {
|
||||
|
||||
/**
|
||||
* A semantic version.
|
||||
* @param {string} version The version.
|
||||
* @param {boolean} loose If this is a loose representation of a version.
|
||||
* @returns {SemVer} a new instance.
|
||||
*/
|
||||
* A semantic version.
|
||||
* @param {string} version The version.
|
||||
* @param {boolean} loose If this is a loose representation of a version.
|
||||
* @returns {SemVer} a new instance.
|
||||
*/
|
||||
constructor(version, loose) {
|
||||
if (version instanceof SemVer) {
|
||||
if (version.loose === loose) {
|
||||
@@ -483,7 +488,7 @@ class SemVer {
|
||||
// Numberify any prerelease numeric ids
|
||||
if (matches[4]) {
|
||||
this.prerelease = matches[4].split(".").map((id) => {
|
||||
if (/^[0-9]+$/.test(id)) {
|
||||
if ((/^[0-9]+$/).test(id)) {
|
||||
const num = Number(id);
|
||||
if (num >= 0 && num < MAX_SAFE_INTEGER) {
|
||||
return num;
|
||||
@@ -513,10 +518,10 @@ class SemVer {
|
||||
}
|
||||
|
||||
/**
|
||||
* Comares the current instance against another instance.
|
||||
* @param {SemVer} other The SemVer to comare to.
|
||||
* @returns {0|1|-1} A comparable value for sorting.
|
||||
*/
|
||||
* Comares the current instance against another instance.
|
||||
* @param {SemVer} other The SemVer to comare to.
|
||||
* @returns {0|1|-1} A comparable value for sorting.
|
||||
*/
|
||||
compare(other) {
|
||||
return this.compareMain(other) || this.comparePre(other);
|
||||
}
|
||||
@@ -526,7 +531,9 @@ class SemVer {
|
||||
other = new SemVer(other, this.loose);
|
||||
}
|
||||
|
||||
return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
|
||||
return (
|
||||
compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch)
|
||||
);
|
||||
}
|
||||
|
||||
comparePre(other) {
|
||||
@@ -629,10 +636,10 @@ function testSet(set, version) {
|
||||
}
|
||||
|
||||
if (version.prerelease.length) {
|
||||
// Find the set of versions that are allowed to have prereleases
|
||||
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
||||
// That should allow `1.2.3-pr.2` to pass.
|
||||
// However, `1.2.4-alpha.notready` should NOT be allowed, even though it's within the range set by the comparators.
|
||||
// Find the set of versions that are allowed to have prereleases
|
||||
// For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
|
||||
// That should allow `1.2.3-pr.2` to pass.
|
||||
// However, `1.2.4-alpha.notready` should NOT be allowed, even though it's within the range set by the comparators.
|
||||
for (let idx = 0; idx < set.length; idx++) {
|
||||
if (set[idx].semver !== ANY) {
|
||||
if (set[idx].semver.prerelease.length > 0) {
|
||||
@@ -728,14 +735,16 @@ class Range {
|
||||
this.loose = loose;
|
||||
// First, split based on boolean or ||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
* @type {string}
|
||||
*/
|
||||
this.raw = range;
|
||||
// Throw out any that are not relevant for whatever reason
|
||||
const hasLength = (item) => item.length;
|
||||
this.set = this.raw.split(/\s*\|\|\s*/).map(function (range1) {
|
||||
return this.parseRange(range1.trim());
|
||||
}, this)
|
||||
this.set = this.raw
|
||||
.split(/\s*\|\|\s*/)
|
||||
.map(function (range1) {
|
||||
return this.parseRange(range1.trim());
|
||||
}, this)
|
||||
.filter(hasLength);
|
||||
if (!this.set.length) {
|
||||
throw new TypeError(`Invalid SemVer Range: ${range}`);
|
||||
@@ -744,7 +753,8 @@ class Range {
|
||||
}
|
||||
|
||||
format() {
|
||||
this.range = this.set.map((comps) => comps.join(" ").trim())
|
||||
this.range = this.set
|
||||
.map((comps) => comps.join(" ").trim())
|
||||
.join("||")
|
||||
.trim();
|
||||
|
||||
@@ -771,7 +781,9 @@ class Range {
|
||||
range = range.split(/\s+/).join(" ");
|
||||
// At this point, the range is completely trimmed and ready to be split into comparators.
|
||||
const compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
|
||||
let set = range.split(" ").map((comp) => parseComparator(comp, loose))
|
||||
let set = range
|
||||
.split(" ")
|
||||
.map((comp) => parseComparator(comp, loose))
|
||||
.join(" ")
|
||||
.split(/\s+/);
|
||||
if (loose) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user