Compare commits

...

618 Commits

Author SHA1 Message Date
Olivier Gagnon
50cf362b3b v0.55.0 2021-10-01 16:22:33 -04:00
Olivier Gagnon
5ba7b2796d build gang in mui 2021-10-01 15:39:56 -04:00
Olivier Gagnon
9cbb525da3 remove hacking missions 2021-10-01 15:26:12 -04:00
Olivier Gagnon
0ae8b72188 100% mui I think 2021-10-01 15:19:37 -04:00
Olivier Gagnon
1e641468f7 build the little mui conversions 2021-10-01 13:40:16 -04:00
Olivier Gagnon
3187bb990d Everything except Gang is Muified 2021-10-01 13:36:59 -04:00
Olivier Gagnon
4e8bb96f3f removing some of the classes 2021-10-01 13:08:37 -04:00
Olivier Gagnon
97c04a1037 logbox manager, alert manager and fix bitverse colors 2021-10-01 10:39:09 -04:00
Olivier Gagnon
62cd8ffcc6 pre-dialogbox-convert 2021-10-01 01:00:50 -04:00
Olivier Gagnon
0d9caac455 mui-fy some modals 2021-09-30 20:06:40 -04:00
Olivier Gagnon
f701cbffa7 lint 2021-09-30 18:57:44 -04:00
Olivier Gagnon
73d0dd98f2 stock market in Mui 2021-09-30 18:56:09 -04:00
Olivier Gagnon
c05be66c60 corp in mui 2021-09-30 17:24:08 -04:00
Olivier Gagnon
b0e4a2a775 finalize corp in mui 2021-09-30 17:02:07 -04:00
Olivier Gagnon
86ddc940aa convert some corp to mui 2021-09-30 15:12:06 -04:00
Olivier Gagnon
510fcedf90 convert some corp to mui 2021-09-30 13:51:55 -04:00
Olivier Gagnon
5cce1c255c convert some corp to mui 2021-09-29 19:05:25 -04:00
Olivier Gagnon
854239ceb1 convert some corp to mui 2021-09-29 17:41:19 -04:00
Olivier Gagnon
73834d03cd faction dont rerender 2021-09-29 10:33:21 -04:00
Olivier Gagnon
cefd499ff6 use tabs for corp 2021-09-29 01:54:17 -04:00
Olivier Gagnon
c5713fa6d8 learned and implemented default props 2021-09-29 01:49:22 -04:00
Olivier Gagnon
b0739f8942 fix bad scritp not dying properly 2021-09-28 20:48:44 -04:00
Olivier Gagnon
a6d7f93111 work on corp mui 2021-09-28 19:38:51 -04:00
Olivier Gagnon
86678b6290 convert blade to mui 2021-09-27 17:09:48 -04:00
Olivier Gagnon
498a204c88 rm unused log 2021-09-26 21:38:21 -04:00
Olivier Gagnon
d6584386ff set disabled color 2021-09-26 21:37:22 -04:00
Olivier Gagnon
b5abbbc240 hacknet nodes in mui 2021-09-26 21:26:25 -04:00
Olivier Gagnon
514b467e27 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-09-26 21:22:13 -04:00
Olivier Gagnon
1fc2e6fd2a added unfocus aug 2021-09-26 21:11:49 -04:00
hydroflame
b758807ba1 Merge pull request #1384 from vmesecher/dev
Fixes Corporation bribe uninentionally affect Bladeburners under cert…
2021-09-26 20:59:12 -04:00
Olivier Gagnon
14e6dd0158 sleeves to mui 2021-09-26 20:55:38 -04:00
vmesecher
ce578206eb Fixes Corporation bribe uninentionally affect Bladeburners under certain circumstances. Also contains small lint fixes found by running npm run lint. 2021-09-25 15:43:30 -07:00
Olivier Gagnon
3289f76cd0 safeguards 2021-09-25 17:29:51 -04:00
Olivier Gagnon
3aacab504b convert casino to mui 2021-09-25 15:42:37 -04:00
Olivier Gagnon
6d179be018 buttons should have typograaphy as child 2021-09-25 15:41:00 -04:00
Olivier Gagnon
86da356478 convert most of the city to mui 2021-09-25 15:34:12 -04:00
Olivier Gagnon
c0e1706128 rm the top level utils folder 2021-09-25 14:45:12 -04:00
Olivier Gagnon
06f716c0fa moved a bunch of files 2021-09-25 14:42:57 -04:00
Olivier Gagnon
07bc697477 remove uneeded part of the tutorial 2021-09-25 14:21:34 -04:00
Olivier Gagnon
60a91cd9f7 index.html is empty now 2021-09-25 14:14:50 -04:00
Olivier Gagnon
97624395c1 convert game saved to snackbar, index.html is nearly empty now 2021-09-25 14:10:32 -04:00
Olivier Gagnon
d49fea4cbc convert unclickable inside the react tree 2021-09-25 14:00:38 -04:00
Olivier Gagnon
125e9484f7 Work on hacknet to mui 2021-09-25 13:52:26 -04:00
Olivier Gagnon
ef17f0d617 ui 2021-09-25 13:31:42 -04:00
Olivier Gagnon
f7aa393a8f fix getNodeStats error 2021-09-25 13:03:09 -04:00
Olivier Gagnon
7fb2b8b590 fix tooltips 2021-09-25 11:23:56 -04:00
Olivier Gagnon
cba40c71b2 mui stuff 2021-09-25 03:09:27 -04:00
Olivier Gagnon
4254cc2807 small improvements to augmentation page. 2021-09-25 02:42:21 -04:00
Olivier Gagnon
8b15adda8a lint 2021-09-25 02:36:49 -04:00
Olivier Gagnon
b0f20c8c8f lint 2021-09-25 01:26:03 -04:00
Olivier Gagnon
5c6c472b64 Augmentations in mui 2021-09-25 01:06:17 -04:00
Olivier Gagnon
5170c0e004 create script in mui 2021-09-24 23:36:28 -04:00
Olivier Gagnon
fe18c55173 removed some unused files. 2021-09-24 23:09:18 -04:00
Olivier Gagnon
69c9b20e68 sleeve ui says bonus time and sleeves cant consume all bonus time at once. 2021-09-24 23:02:27 -04:00
Olivier Gagnon
2d45784102 theme editor now allows import/export 2021-09-24 22:54:25 -04:00
Olivier Gagnon
65cb519801 fix infiltration keybinding 2021-09-24 22:15:19 -04:00
Olivier Gagnon
76e6cb4ecc forgot one ts in utils 2021-09-24 22:04:30 -04:00
hydroflame
7b6f9293c7 Merge pull request #1379 from danielyxie/netscript-functions-ts
all typescript
2021-09-24 21:50:09 -04:00
Olivier Gagnon
dc2bf871cf all typescript 2021-09-24 21:49:49 -04:00
Olivier Gagnon
1d349c25f7 imrpove terminal performance 2021-09-24 19:12:53 -04:00
Olivier Gagnon
5484c64a95 build script not dying 2021-09-24 19:10:20 -04:00
Olivier Gagnon
ec33fb411c fix scripts not dying 2021-09-24 19:09:19 -04:00
Olivier Gagnon
2a966d0726 build the typescript conversion 2021-09-24 18:43:30 -04:00
Olivier Gagnon
29143999a6 move JSInterpreter 2021-09-24 18:42:13 -04:00
Olivier Gagnon
a32b8eabe3 SaveObject in ts 2021-09-24 18:40:17 -04:00
Olivier Gagnon
43723a3fbb engine in ts 2021-09-24 18:29:25 -04:00
Olivier Gagnon
ad75fa5ebc convert to ts 2021-09-24 18:13:20 -04:00
Olivier Gagnon
4abc1df840 convert to ts 2021-09-24 17:56:30 -04:00
Olivier Gagnon
da488e586b convert to ts 2021-09-24 17:16:14 -04:00
Olivier Gagnon
413333c919 convert to ts 2021-09-24 17:07:53 -04:00
Olivier Gagnon
4f219a3214 convert to ts 2021-09-24 16:37:42 -04:00
Olivier Gagnon
2e05f14c0d convert to ts 2021-09-24 16:34:21 -04:00
Olivier Gagnon
47f54a11c3 ts convertion 2021-09-24 16:02:38 -04:00
Olivier Gagnon
b8faa9dc0b convert player to ts 2021-09-23 18:47:43 -04:00
Olivier Gagnon
8fd6b2e7da convert some files to ts 2021-09-23 13:30:13 -04:00
Olivier Gagnon
cdd9c174e7 electron always dev tools 2021-09-23 13:15:27 -04:00
Olivier Gagnon
e6291a09a0 refresh theme on load 2021-09-22 13:43:23 -04:00
hydroflame
9ccfca3c72 Merge pull request #1368 from MartinFournier/theme-load-at-startup
Load theme from settings during game load (#1364)
2021-09-22 13:40:27 -04:00
Martin Fournier
346024af45 Load theme from settings during game load (#1364) 2021-09-22 13:33:41 -04:00
Olivier Gagnon
66a2adaeb4 update prettier 2021-09-22 12:56:55 -04:00
Olivier Gagnon
c1945ab12e fix donation 2021-09-22 12:49:29 -04:00
Olivier Gagnon
3a7c64872a fix messge problem 2021-09-22 12:38:13 -04:00
Olivier Gagnon
06edf5b70c theme editor with color picker 2021-09-22 12:06:03 -04:00
hydroflame
d2008e86b4 Merge pull request #1361 from MartinFournier/theme-color-picker
Add material-ui-color picker in theme editor
2021-09-22 12:03:44 -04:00
Martin Fournier
32d1affb50 Add material-ui-color picker in theme editor 2021-09-22 12:00:00 -04:00
Olivier Gagnon
558b671206 few bugfix 2021-09-22 11:32:04 -04:00
Olivier Gagnon
a954259e25 can buy trp 2021-09-22 10:59:58 -04:00
Olivier Gagnon
64c7831c81 convert milestones to mui 2021-09-22 03:33:15 -04:00
Olivier Gagnon
61dd393bb5 convert tutorial screen to mui 2021-09-22 03:30:06 -04:00
Olivier Gagnon
28aca06208 convert work in progress to mui 2021-09-22 03:25:12 -04:00
Olivier Gagnon
c79fa240e1 Factions have a property explaining if they should keep on install 2021-09-22 03:09:37 -04:00
Olivier Gagnon
e1741778f9 add new sort option 2021-09-22 02:56:15 -04:00
Olivier Gagnon
80560ce9f6 build theme editor 2021-09-22 02:20:29 -04:00
Olivier Gagnon
f9a4eadb71 removed some of fconf 2021-09-22 01:36:17 -04:00
Olivier Gagnon
96f0879230 fix bug with nano 2021-09-22 01:10:29 -04:00
Olivier Gagnon
9c40cf6f28 fix infiltration timer 2021-09-22 01:03:25 -04:00
Olivier Gagnon
55901f0574 Let player copy terminal 2021-09-22 00:57:37 -04:00
Olivier Gagnon
43f0746be7 fix ls not working on dir 2021-09-22 00:48:13 -04:00
Olivier Gagnon
8eeed583c2 corp research show research points 2021-09-22 00:42:45 -04:00
Olivier Gagnon
dc518e7032 asdf 2021-09-21 20:39:25 -04:00
Olivier Gagnon
0c932dd4d1 build bunch of fixes 2021-09-21 20:30:00 -04:00
Olivier Gagnon
c94ec2f170 remove message from covenant when you're maxed sleeves 2021-09-21 18:04:47 -04:00
Olivier Gagnon
6111c50eb1 updatedco 2021-09-21 17:47:27 -04:00
Olivier Gagnon
8977f299e5 respect disable ascii art 2021-09-21 17:46:01 -04:00
Olivier Gagnon
2a8b1c2116 Fix corp not moving 2021-09-21 17:38:51 -04:00
Olivier Gagnon
9a6b185141 few fixes 2021-09-21 17:36:42 -04:00
Olivier Gagnon
501ce70702 re-add back button from faction to factions 2021-09-21 17:13:35 -04:00
Olivier Gagnon
9b94692942 fix faction screen size 2021-09-21 17:12:16 -04:00
Olivier Gagnon
06880c68e1 fix casino infinite loop 2021-09-21 16:58:20 -04:00
Olivier Gagnon
637f88efcd add bug report button 2021-09-21 16:50:33 -04:00
Olivier Gagnon
57a5c8b0b4 add difficulty to bitnode screen 2021-09-21 16:49:38 -04:00
Olivier Gagnon
c3ac16f330 electron open pages in external browser 2021-09-21 13:32:06 -04:00
Olivier Gagnon
c564de40b3 add f5f8 to electron 2021-09-21 13:29:16 -04:00
Olivier Gagnon
1b26d25a53 aug screen popup 2021-09-21 13:21:25 -04:00
Olivier Gagnon
7aa2d00460 fix aug page 2021-09-21 13:08:05 -04:00
Olivier Gagnon
ffa9600302 active scritp production typo and add new page size 2021-09-21 11:50:48 -04:00
hydroflame
db35fde42e Merge pull request #1307 from Nolshine/improve_gang_ascend_modal
improve gang ascend modal
2021-09-21 11:04:23 -04:00
hydroflame
d73040fdc5 Merge pull request #1319 from Nolshine/fix_missing_onclick_for_bulk_purchase
fix 'confirm bulk purchase' button missing onclick
2021-09-21 11:03:39 -04:00
hydroflame
a38df2e613 Merge pull request #1318 from Nolshine/visibility_icons
implement visibility icon toggling
2021-09-21 11:03:25 -04:00
hydroflame
b931ab5566 Merge pull request #1323 from Nolshine/documentation_1273
amend deprecation warning warning on getAugmentationCost's doc
2021-09-21 11:03:11 -04:00
Nolshine
4e44e784c6 amend warning on getAugmentationCost doc
now directs players to use the desired functions
2021-09-21 14:11:51 +01:00
Nolshine
aa4451b12d fix 'confirm bulk purchase' button missing onclick 2021-09-21 12:22:04 +01:00
Nolshine
2a52f6fa2b implement visibility icon toggling 2021-09-21 07:07:47 +01:00
Olivier Gagnon
8b7723338b change electron so it works. 2021-09-20 22:30:11 -04:00
Olivier Gagnon
9e62438b43 Rework faction augs menu 2021-09-20 20:42:13 -04:00
Olivier Gagnon
74906cc9e6 0.54 build 2021-09-20 17:28:53 -04:00
hydroflame
483590ef8b Merge pull request #1309 from Nolshine/fix_status_message_position
change status-text-container's position to fixed
2021-09-20 17:27:11 -04:00
hydroflame
7cd821ef5e Merge pull request #1312 from Nolshine/options_menu_unnecessary_link
remove duplicate changelog link from options menu
2021-09-20 17:27:02 -04:00
Olivier Gagnon
5e48530e14 0.54 again 2021-09-20 17:26:47 -04:00
Olivier Gagnon
bb4de3f62c fix infiltration 2021-09-20 17:10:44 -04:00
Nolshine
bb546ef6e1 remove duplicate changelog link from options menu 2021-09-20 20:14:02 +01:00
Olivier Gagnon
9552ae3ef1 readd some used code 2021-09-20 13:53:04 -04:00
Nolshine
d1974a3e70 change status-text-container's position to fixed 2021-09-20 09:28:23 +01:00
hydroflame
e9b030c450 Merge pull request #1308 from Nolshine/fix_typo_in_prestige_js
fix typo in Prestige.js
2021-09-20 01:52:39 -04:00
Nolshine
dffc0c5858 fix typo in Prestige.js 2021-09-20 06:51:08 +01:00
Nolshine
a9c57e23a5 improve gang ascend modal 2021-09-20 06:47:13 +01:00
Olivier Gagnon
8db57d7e81 hotfix 2021-09-20 01:45:32 -04:00
Olivier Gagnon
34313e8100 fix create gang not working. 2021-09-20 01:24:39 -04:00
Olivier Gagnon
91c7ae53ef Factions screen in Mui 2021-09-20 01:18:20 -04:00
Olivier Gagnon
44d6845883 biuld 0.54.0 2021-09-20 00:38:05 -04:00
Olivier Gagnon
a3e624deba remove ns2 example doing DOM manip 2021-09-20 00:14:30 -04:00
Olivier Gagnon
7355f4212b no more console log 2021-09-19 23:30:46 -04:00
Olivier Gagnon
fb37f6b94d lint 2021-09-19 23:29:02 -04:00
Olivier Gagnon
4a3201cba3 update packagelock 2021-09-19 18:28:44 -04:00
hydroflame
48eb0df99f Merge pull request #1303 from Nolshine/fix_status_text_animation_not_resetting
fix status text animation not resetting properly
2021-09-19 18:28:28 -04:00
hydroflame
a282d5d7fd Merge pull request #1285 from threehams/fast-refresh
Add React Fast Refresh
2021-09-19 18:24:53 -04:00
Olivier Gagnon
3554da5a53 load a top level react node and everything else under it. 2021-09-19 18:22:52 -04:00
Olivier Gagnon
d78309f3b0 remove unused elements from index.html 2021-09-19 18:05:25 -04:00
Olivier Gagnon
9bc20526ff get loading screen inside GameRoot 2021-09-19 18:04:12 -04:00
Olivier Gagnon
7a2dd16092 Hacking missions inside GameRoot 2021-09-19 17:05:27 -04:00
Olivier Gagnon
0a2dbe66e4 character overview player hookd 2021-09-19 16:19:24 -04:00
Olivier Gagnon
dade51a26b re-enable arrows in sidebar categories. 2021-09-19 14:45:14 -04:00
Olivier Gagnon
505040137f added overview ui hooks 2021-09-19 14:39:34 -04:00
Nolshine
db31b70efc fix stats text animation not resetting properly 2021-09-19 10:22:27 +01:00
Olivier Gagnon
ce3898367c remove unused css file 2021-09-19 03:38:43 -04:00
Olivier Gagnon
cd0aa192f5 fix terminal not cancelling. 2021-09-19 03:29:36 -04:00
Olivier Gagnon
374b81ffae Rework tutorial 2021-09-19 03:13:49 -04:00
Olivier Gagnon
652428b164 merge master 2021-09-19 00:59:13 -04:00
hydroflame
93706d31ee Merge pull request #1300 from danielyxie/hf2
build terminal string parsing fix
2021-09-19 00:55:52 -04:00
Olivier Gagnon
38408294cc build terminal string parsing fix 2021-09-19 00:55:29 -04:00
Olivier Gagnon
023f2b8309 ITutorial in react 2021-09-19 00:46:39 -04:00
Olivier Gagnon
61e3959a25 Improve event emitter 2021-09-18 15:44:39 -04:00
Olivier Gagnon
4b6a6300f5 build dev 2021-09-18 13:33:15 -04:00
Olivier Gagnon
e5abf014b2 build dev 2021-09-18 13:29:01 -04:00
Olivier Gagnon
e087420519 build dev 2021-09-18 12:13:20 -04:00
Olivier Gagnon
e1a22016b5 build dev 2021-09-18 04:01:07 -04:00
Olivier Gagnon
bdfa4be71f build dev 2021-09-18 03:00:07 -04:00
Olivier Gagnon
eb2a44e213 build dev 2021-09-18 02:39:01 -04:00
Olivier Gagnon
23e8bc2e71 merge master 2021-09-18 02:38:15 -04:00
hydroflame
48cfa14366 Merge pull request #1298 from danielyxie/hotfix
fix terminal not saving state
2021-09-18 02:36:05 -04:00
Olivier Gagnon
aef4aac61a fix terminal not saving state 2021-09-18 02:34:59 -04:00
Olivier Gagnon
f545726980 build 2021-09-18 02:24:51 -04:00
Olivier Gagnon
9471e8d4a0 Merge branch 'master' into dev 2021-09-18 02:23:04 -04:00
hydroflame
c85ebe9ee2 Merge pull request #1297 from danielyxie/hotfix
Hotfix
2021-09-18 02:22:45 -04:00
Olivier Gagnon
b5d7b3c108 build 2021-09-18 02:22:34 -04:00
Olivier Gagnon
be9b595590 fix terminal wrap 2021-09-18 02:21:48 -04:00
Olivier Gagnon
eacf15b463 minor tweaks 2021-09-18 02:11:20 -04:00
Olivier Gagnon
425c998435 minor tweaks 2021-09-18 01:12:15 -04:00
Olivier Gagnon
549c8b61db minor tweaks 2021-09-18 01:06:37 -04:00
Olivier Gagnon
244e669b2b improvements on active scripts 2021-09-18 01:01:51 -04:00
Olivier Gagnon
6f20b0bc30 Added tree-like hierarchy to active scripts 2021-09-18 00:31:14 -04:00
hydroflame
d1cb5b313a Merge pull request #1294 from danielyxie/big-container
Active Scripts in Mui
2021-09-18 00:16:24 -04:00
Olivier Gagnon
1996deaf0a Active Scripts 2021-09-18 00:16:02 -04:00
Olivier Gagnon
907314e76b more work 2021-09-17 21:30:02 -04:00
hydroflame
f359fe661e Merge pull request #1291 from danielyxie/big-container
Big container
2021-09-17 19:46:30 -04:00
Olivier Gagnon
45f2f85a30 big work 2021-09-17 19:43:08 -04:00
hydroflame
fd55155fea Merge pull request #1289 from Tryneus/patch-1
Clarify that `commitCrime` returns milliseconds, not seconds
2021-09-17 12:12:27 -04:00
Tryneus
70205e06ee Clarify that commitCrime returns milliseconds, not seconds 2021-09-17 09:04:14 -07:00
Olivier Gagnon
1344a17482 Merge branch 'dev' into big-container 2021-09-17 03:09:42 -04:00
hydroflame
affc79a499 Merge pull request #1288 from danielyxie/dev
fix term issues
2021-09-17 03:08:42 -04:00
Olivier Gagnon
aa0008862c fix term issues 2021-09-17 03:08:15 -04:00
Olivier Gagnon
89ea9aaff5 oops 2021-09-17 02:58:02 -04:00
Olivier Gagnon
1883bea906 one big container ready 2021-09-17 02:31:19 -04:00
Olivier Gagnon
4a3658ea13 Merge branch 'dev' into big-container 2021-09-17 02:10:26 -04:00
hydroflame
812dec6cb2 Merge pull request #1287 from danielyxie/dev
Hotfix hacking missions failing.
2021-09-17 02:09:59 -04:00
Olivier Gagnon
19a73a2802 hotfix hacking missiong failing 2021-09-17 02:09:53 -04:00
Olivier Gagnon
92ec4785a9 fix hacking mission looking for a container 2021-09-17 02:07:08 -04:00
Olivier Gagnon
acd51e8328 work 2021-09-17 02:04:44 -04:00
David Edmondson
6013bacc60 Add fast-refresh 2021-09-16 20:52:38 -07:00
Olivier Gagnon
ff726afcd6 added icon to hide stats 2021-09-16 22:16:40 -04:00
Olivier Gagnon
cab823bcdf take less space in sidebar 2021-09-16 21:59:12 -04:00
hydroflame
2cb762184f Merge pull request #1283 from danielyxie/dev
New terminal
2021-09-16 21:54:07 -04:00
Olivier Gagnon
7837454f18 build new terminal for release 2021-09-16 21:53:42 -04:00
Olivier Gagnon
8e764a5524 re-add badges 2021-09-16 21:49:38 -04:00
Olivier Gagnon
757b38327f build 2021-09-16 21:31:29 -04:00
Olivier Gagnon
628572cf21 save button becomes gray when save is disabled 2021-09-16 21:23:03 -04:00
Olivier Gagnon
744f3bc067 fix megacorp factions not letting you join them after soft reset 2021-09-16 21:19:53 -04:00
Olivier Gagnon
195dff7c44 fix not being able to ctrlc the terminal 2021-09-16 21:03:14 -04:00
hydroflame
4bf3e5a2e4 Merge pull request #1282 from danielyxie/mui5
few more fixes
2021-09-16 20:52:00 -04:00
Olivier Gagnon
defaa2ccd6 few more fixes 2021-09-16 20:51:25 -04:00
hydroflame
6d70d9708f Merge pull request #1280 from danielyxie/mui5
Mui5
2021-09-16 20:14:47 -04:00
Olivier Gagnon
b6924d6889 better terminal scrolling 2021-09-16 20:14:09 -04:00
Olivier Gagnon
3fc46c8fc6 mui5 migration 2021-09-16 19:45:53 -04:00
Olivier Gagnon
d7a86ab8b9 upgrade to Mui5 2021-09-16 19:42:55 -04:00
Olivier Gagnon
407ed70ae3 mui5 2021-09-16 19:23:03 -04:00
Olivier Gagnon
a21c0f4a0b update packages 2021-09-16 18:15:04 -04:00
Olivier Gagnon
3acf965dad fix some bugs 2021-09-16 18:10:28 -04:00
Olivier Gagnon
0cf2e2469e fix game not loading 2021-09-16 18:10:28 -04:00
Olivier Gagnon
7ba37397dd small simplification 2021-09-16 18:10:28 -04:00
Olivier Gagnon
18f40a8d9f fix lint 2021-09-16 18:10:28 -04:00
Olivier Gagnon
22648df857 refactor temrinal input for more performace 2021-09-16 18:10:28 -04:00
Olivier Gagnon
07721e1cc5 got rid of some containers 2021-09-16 18:10:28 -04:00
Olivier Gagnon
b682a442fe terminal wrap but it's not perfect 2021-09-16 18:10:28 -04:00
Olivier Gagnon
4a5fb04d41 More work on terminal. 2021-09-16 18:10:28 -04:00
Olivier Gagnon
f628a18551 scan-analyze still doesnt work but at least its not full of html 2021-09-16 18:10:28 -04:00
Olivier Gagnon
1890f1fd44 fix terminal not printing the command you just ran. 2021-09-16 18:10:28 -04:00
Olivier Gagnon
34dda1f252 fix help 2021-09-16 18:10:28 -04:00
Olivier Gagnon
8e1d31423f where did build go? 2021-09-16 18:10:28 -04:00
Olivier Gagnon
05718e00ea mostly convert terminal to react 2021-09-16 18:10:28 -04:00
Olivier Gagnon
aba97d2baa move some stuff 2021-09-16 18:10:28 -04:00
Olivier Gagnon
f0f57150aa character overview in mui 2021-09-16 18:10:28 -04:00
Nolshine
088657f162 fix the error introduced by previous fix
skills and multipliers should now recalc correctly on both soft reset
and new bitnode.
2021-09-16 18:10:28 -04:00
Nolshine
302e105bdf fix typo 'supress' in options menu 2021-09-16 18:10:28 -04:00
Bart Koppelmans
867dd3ba91 Removed unnecessary question mark 2021-09-16 18:10:28 -04:00
Nolshine
5866f47151 convert Create Program to mui 2021-09-16 18:10:28 -04:00
Nolshine
5d9f9d2681 implement game delete confirmation modal 2021-09-16 18:10:28 -04:00
Olivier Gagnon
2922e42055 most terminal converted to ts 2021-09-16 18:10:28 -04:00
Bart Koppelmans
8097364242 Fixed corporation industry unnecessarily centering vertically
This gave some weird situations where the main information was too far down when creating many products.
2021-09-16 18:10:27 -04:00
Olivier Gagnon
ac80be1b40 electron build 2021-09-16 18:10:27 -04:00
hydroflame
bd26e2f9ca Merge pull request #1278 from danielyxie/hotfix
hotfix
2021-09-16 18:10:07 -04:00
Olivier Gagnon
3f447b7fa1 hotfix 2021-09-16 18:09:25 -04:00
hydroflame
206edd8df5 Merge pull request #1256 from danielyxie/dev
Fix import not working
2021-09-15 10:56:39 -04:00
Olivier Gagnon
e4e539c067 fix import not working 2021-09-15 10:56:21 -04:00
hydroflame
ff2d238ea4 Merge pull request #1254 from Nolshine/fix_script_log_positioning
fix script log box staying behind when scrolling
2021-09-15 10:54:42 -04:00
Olivier Gagnon
96dc1eb1f4 fix import 2021-09-15 10:54:05 -04:00
Nolshine
f393baaa82 fix script log box staying behind when scrolling 2021-09-15 07:55:11 +01:00
Olivier Gagnon
409cb53597 remove unused files 2021-09-15 01:35:19 -04:00
hydroflame
22bf958e2e Merge pull request #1253 from Nolshine/1242_enable_smartsupply_by_default
implement #1242
2021-09-14 22:06:31 -04:00
Nolshine
11a345dd66 implement #1242 2021-09-15 03:01:23 +01:00
hydroflame
4ca54dbe00 Merge pull request #1252 from danielyxie/dev
remove options from overview
2021-09-14 21:51:32 -04:00
Olivier Gagnon
63a4a30189 remove options from overview 2021-09-14 21:51:20 -04:00
hydroflame
56680d5b17 Merge pull request #1251 from danielyxie/dev
fix diagnostic file
2021-09-14 21:48:12 -04:00
Olivier Gagnon
4c15d4ef42 fix diagnostic file 2021-09-14 21:47:42 -04:00
hydroflame
55769b5005 Merge pull request #1250 from danielyxie/dev
rework options menu & fix terminal scrolling on added lines
2021-09-14 21:10:31 -04:00
Olivier Gagnon
684a254ac8 build terminal not scrolling properly with new lines 2021-09-14 21:09:46 -04:00
Olivier Gagnon
dc9b5c3341 rework options menu 2021-09-14 21:05:49 -04:00
hydroflame
ed461ccca5 Merge pull request #1247 from danielyxie/dev
contextually hide sidebar items
2021-09-14 15:23:28 -04:00
Olivier Gagnon
f895da118d contextually hide sidebar items 2021-09-14 15:23:16 -04:00
hydroflame
2833b881ea Merge pull request #1246 from danielyxie/dev
fix terminal scrolling
2021-09-14 14:55:03 -04:00
Olivier Gagnon
8a0f33daf0 fix terminal scrolling 2021-09-14 14:54:45 -04:00
hydroflame
2ba04a602e Merge pull request #1245 from danielyxie/dev
hide terminal scrollbar
2021-09-14 14:44:37 -04:00
Olivier Gagnon
cb3b5b10d7 hide terminal scrollbar 2021-09-14 14:44:23 -04:00
hydroflame
d9bdc5bf5f Merge pull request #1244 from danielyxie/dev
Remove options from new sidebar
2021-09-14 14:23:06 -04:00
Olivier Gagnon
25c4f9047f t push
Merge branch 'dev' of github.com:danielyxie/bitburner into dev
2021-09-14 14:22:49 -04:00
Olivier Gagnon
7e2fd52ae2 remove options from new sidebar 2021-09-14 14:22:40 -04:00
hydroflame
fd0b4f7b01 Merge pull request #1239 from Nolshine/1200_replace_text
address #1200
2021-09-14 14:16:43 -04:00
hydroflame
8ed9f8a64d Merge pull request #1243 from danielyxie/dev
New sidebar and fix BN6 end screen
2021-09-14 14:15:22 -04:00
Olivier Gagnon
89a85c73ec Fix popup boxes not on top 2021-09-14 14:15:05 -04:00
Olivier Gagnon
9adf69afbd fix BN6 end screen 2021-09-14 14:10:59 -04:00
Olivier Gagnon
2d463b60a0 litn 2021-09-13 22:27:43 -04:00
Olivier Gagnon
05fd85002c dev menu in mui 2021-09-13 20:37:35 -04:00
hydroflame
f8b9c50563 Merge pull request #1241 from danielyxie/dev
Add companyName to getPlayer
2021-09-13 17:12:40 -04:00
Olivier Gagnon
70cb4b215d Add companyName to getPlayer 2021-09-13 17:12:21 -04:00
Olivier Gagnon
8c2d6616e3 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-09-13 17:11:44 -04:00
hydroflame
ab29f249c1 Merge pull request #1240 from danielyxie/dev
Add companyName to getPlayer
2021-09-13 17:11:39 -04:00
Olivier Gagnon
e345edb74f add companyName to getPlayer 2021-09-13 17:11:02 -04:00
hydroflame
a991dbf54f Merge pull request #1237 from Nolshine/maintain_megacorp_membership_on_aug
maintain megacorp membership on aug
2021-09-13 15:52:03 -04:00
Nolshine
fe065d23eb address #1200 2021-09-13 20:51:16 +01:00
Nolshine
8e4e9dabd9 implement #1209 2021-09-13 20:39:25 +01:00
hydroflame
ae15caf45a Merge pull request #1235 from danielyxie/dev
Fix travel to s12 in list view
2021-09-13 14:44:07 -04:00
Olivier Gagnon
4ad5b06e19 fix travel to s12 on list world map 2021-09-13 14:43:23 -04:00
Olivier Gagnon
acc215cc61 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-09-13 14:02:17 -04:00
hydroflame
e52a2b19e8 Merge pull request #1234 from Nolshine/fix_bitnodes_stats_not_updating
Fix bitnodes stats not updating
2021-09-13 12:59:20 -04:00
Olivier Gagnon
8fba57fd24 mui v1 2021-09-13 12:44:46 -04:00
Nolshine
8ec585e0b6 fix #1233 2021-09-13 09:34:39 +01:00
hydroflame
38cf4bd3cd Merge pull request #1226 from threehams/corp-overview-perf
Stop remounting components on every render on corp overview
2021-09-13 00:22:01 -04:00
hydroflame
4412a8e5b0 Merge pull request #1232 from danielyxie/dev
fix bn12 missing
2021-09-12 23:43:44 -04:00
Olivier Gagnon
0ed93ec0a5 fix bn12 missing 2021-09-12 23:43:28 -04:00
hydroflame
dadd4fe03d Merge pull request #1231 from danielyxie/dev
All popups in react
2021-09-12 23:23:39 -04:00
Olivier Gagnon
83f785a791 build popups 2021-09-12 23:23:09 -04:00
Olivier Gagnon
d515db0842 remove some now unused files 2021-09-12 18:06:21 -04:00
Olivier Gagnon
5f8de7e426 bunch of react conversion 2021-09-12 18:03:07 -04:00
David Edmondson
2f2923dd8b Stop remounting on corp overview
Make upgrade buttons real buttons
2021-09-12 09:39:15 -07:00
Olivier Gagnon
b8b0948a1a Casino record loss 2021-09-11 23:42:53 -04:00
Olivier Gagnon
d84d93ad3b Blackjack record loss 2021-09-11 23:41:56 -04:00
hydroflame
1b63f833be Merge pull request #1230 from danielyxie/dev
fix tooltip cut off
2021-09-11 23:36:30 -04:00
Olivier Gagnon
752a330735 fix tooltip cut off 2021-09-11 23:36:18 -04:00
hydroflame
4480423b7f Merge pull request #1229 from danielyxie/dev
fix faction scrolling
2021-09-11 23:29:21 -04:00
Olivier Gagnon
a9c80f0691 fix faction scrolling 2021-09-11 23:29:04 -04:00
hydroflame
5b4bc0a68f Merge pull request #1227 from danielyxie/dev
fix faction invitations
2021-09-11 17:24:46 -04:00
Olivier Gagnon
1a5651ae8b fix faction invitations 2021-09-11 17:23:56 -04:00
hydroflame
3b314f5d1d Merge pull request #1225 from danielyxie/dev
Fix scrolling and pages display
2021-09-11 13:25:00 -04:00
Olivier Gagnon
aeb0a7d3e3 Fix new sidebar and pages 2021-09-11 13:24:23 -04:00
Olivier Gagnon
75af7a096b script editor take more space 2021-09-11 12:58:39 -04:00
Olivier Gagnon
7ac1d24d61 fix scrit editor 2021-09-11 12:58:05 -04:00
Olivier Gagnon
e79ea4d3cb text editor is squished 2021-09-11 12:56:08 -04:00
Olivier Gagnon
b9dcffdf58 re-introduce the css that was there before 2021-09-11 12:51:46 -04:00
Olivier Gagnon
8d1adff2ae get rid of scrollbar for pages 2021-09-11 12:42:41 -04:00
Olivier Gagnon
2c427b1116 better scrolling 2021-09-11 12:28:31 -04:00
Olivier Gagnon
42aa4ca23f Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-09-11 12:24:14 -04:00
Olivier Gagnon
dd27158cf0 make things scrollable. 2021-09-11 12:24:09 -04:00
hydroflame
1593b0b3f3 Merge pull request #1223 from vmesecher/dev
Adds CreateGangPopup React element.
2021-09-11 12:07:56 -04:00
vmesecher
705b154f13 Adds CreateGangPopup React element. 2021-09-11 09:02:59 -07:00
Olivier Gagnon
1edcbe88ee rewrite travel popup 2021-09-11 03:19:52 -04:00
Olivier Gagnon
609ba34804 build a few fixes 2021-09-11 02:32:15 -04:00
Olivier Gagnon
99e82cd867 few fixes in the purchase server popup 2021-09-11 02:16:14 -04:00
hydroflame
bc33f67409 Merge pull request #1210 from vmesecher/dev
Changes PurchaseServerPopup to a React element. Small CSS changes on popups.
2021-09-11 02:12:32 -04:00
hydroflame
224463e6dd Merge branch 'dev' into dev 2021-09-11 02:12:28 -04:00
Olivier Gagnon
02fd09c5d3 re-introduce badges 2021-09-11 02:11:41 -04:00
Olivier Gagnon
33aeeb7977 fix dev menu 2021-09-11 01:58:01 -04:00
Olivier Gagnon
add19d353e sidebar is react, fix a few bugs 2021-09-11 01:54:19 -04:00
Olivier Gagnon
4bedf05b1c refactored a bunch of engine.jsx, now all the react container load into the same div 2021-09-10 17:29:07 -04:00
Olivier Gagnon
5f64187a0f dev menu in react 2021-09-10 16:57:05 -04:00
Olivier Gagnon
339d9a8d96 more cleanup in engine 2021-09-10 16:08:58 -04:00
Olivier Gagnon
b45ab657c5 unify the way engine loads pages 2021-09-10 15:08:51 -04:00
Olivier Gagnon
c9611cc824 delete workflows 2021-09-10 12:30:41 -04:00
Olivier Gagnon
4b051468ad all research tooltip are always visible 2021-09-10 12:26:53 -04:00
Olivier Gagnon
9df926427b fix formatting of sleeve task description 2021-09-10 12:20:24 -04:00
vmesecher
8460df99df Changes PurchaseServerPopup to a React element. Small CSS changes on popups. 2021-09-10 01:49:24 -07:00
Olivier Gagnon
dc890a908b gang member popup styling 2021-09-10 02:35:41 -04:00
Olivier Gagnon
e5dcb424a2 sneak in corp API. 2021-09-10 02:17:55 -04:00
Olivier Gagnon
e906a6331f change modals so they close on mouse down outside the box 2021-09-10 00:53:39 -04:00
hydroflame
c4617e4b9a Merge pull request #1203 from danielyxie/corp-api
corp api
2021-09-10 00:15:02 -04:00
Olivier Gagnon
76404dd83a fix mc 2021-09-10 00:14:53 -04:00
Olivier Gagnon
be08161442 corp api 2021-09-10 00:13:28 -04:00
hydroflame
f93ee45254 Merge pull request #1202 from danielyxie/revert-1185-jest-cypress-types
Revert "Jest cypress types"
2021-09-10 00:13:16 -04:00
hydroflame
7e8e9e03fc Revert "Jest cypress types" 2021-09-10 00:13:03 -04:00
hydroflame
715bc541ec Merge pull request #1185 from threehams/jest-cypress-types
Jest cypress types
2021-09-09 22:58:17 -04:00
Olivier Gagnon
cb31954b08 v0.53.0 2021-09-09 22:57:37 -04:00
Olivier Gagnon
7f1d39a298 the world map is used every place a travel is done 2021-09-09 22:06:59 -04:00
Olivier Gagnon
d5c9306395 Convert sleeves to react, fix shock recovery bug 2021-09-09 21:38:05 -04:00
Olivier Gagnon
b0fcdb8363 some sleeve conversion 2021-09-09 16:04:36 -04:00
Olivier Gagnon
ab8937870c resleeve in react 2021-09-09 15:19:11 -04:00
Olivier Gagnon
4e22b880bb removed Corporation rerender and drilled down a rerender function in the react. 2021-09-09 14:21:21 -04:00
Olivier Gagnon
f77ab4e871 engine work 2021-09-09 13:48:21 -04:00
Olivier Gagnon
0a210555e9 remove some createElement 2021-09-09 13:00:06 -04:00
Olivier Gagnon
3df298e91e fix contract 2021-09-09 12:52:43 -04:00
Olivier Gagnon
b7e07bc7f2 convert all hacknet to ts 2021-09-09 03:17:01 -04:00
David Edmondson
0bc9bfb0f2 Update jest 2021-09-08 22:13:47 -07:00
David Edmondson
5cd72860e3 Add to CONTRIBUTING doc 2021-09-08 22:13:47 -07:00
David Edmondson
e44813b65d Only include jest tests in jest
Don't generate sourcemaps for TS
Remove github actions
2021-09-08 22:13:47 -07:00
David Edmondson
3473fc2ea6 Revert "fix tests"
This reverts commit 82c3362adc.
2021-09-08 22:13:46 -07:00
David Edmondson
0c0adf29d5 Separate src, test, cypress 2021-09-08 22:12:23 -07:00
Olivier Gagnon
c97fece747 UI work on corps 2021-09-09 00:34:13 -04:00
Olivier Gagnon
a2aaf6bd2e build sleeve memory fix 2021-09-08 23:48:42 -04:00
Olivier Gagnon
2a13db39c7 fix sleeve memory bug 2021-09-08 23:47:34 -04:00
hydroflame
bada8a5f39 Merge pull request #1192 from vmesecher/dev
Adds getAugmentationPrice() and getAugmentationReqRep() Netscript Singularity functions.
2021-09-08 00:16:14 -04:00
vmesecher
6979082be7 Adds getAugmentationPrice() and getAugmentationReqRep() Netscript Singularity functions. Deprecates getAugmentationCost() Netscript singularity function. 2021-09-07 20:33:34 -07:00
Olivier Gagnon
1c9542d102 tech vendor buttons update better 2021-09-07 17:26:49 -04:00
Olivier Gagnon
0d5a302580 few more bug fixes 2021-09-07 17:18:02 -04:00
Olivier Gagnon
7bc0764d5d noselect some blade stuff 2021-09-07 16:49:11 -04:00
Olivier Gagnon
bc034bb417 Added more complex customization to smart supply 2021-09-07 16:46:36 -04:00
Olivier Gagnon
ea99166f7f better ascii maps 2021-09-07 15:09:05 -04:00
Olivier Gagnon
82c3362adc fix tests 2021-09-07 14:31:47 -04:00
hydroflame
e7d77b7569 Merge pull request #1167 from threehams/cypress
Add browser tests for tutorial, NetScript 2
2021-09-07 14:00:58 -04:00
Olivier Gagnon
c5af4f8177 remove debug log 2021-09-07 13:29:35 -04:00
Olivier Gagnon
d0cb0e3f5b remove ram requirements from joining factinos 2021-09-07 13:22:39 -04:00
Olivier Gagnon
f7adadd671 Blade action count replenishes more consistently 2021-09-07 13:15:27 -04:00
Olivier Gagnon
faa6f75027 UI improvements for corps. 2021-09-07 02:03:39 -04:00
Olivier Gagnon
3b0cf6714a build corp fixes 2021-09-07 01:16:28 -04:00
Olivier Gagnon
cd43f25bf5 make smart supply actually kinda smart 2021-09-07 01:14:55 -04:00
Olivier Gagnon
6e670e88e2 Fix manual management issues 2021-09-06 19:10:40 -04:00
David Edmondson
20062b11b9 Add test for static/dynamic RAM check 2021-09-06 13:51:55 -07:00
David Edmondson
d0ca2d8c36 Set up cy:test for production tests 2021-09-06 13:51:54 -07:00
David Edmondson
20e41e8006 Add back command import 2021-09-06 13:49:34 -07:00
David Edmondson
7ef7fc1b26 Remove getId for now 2021-09-06 13:49:34 -07:00
David Edmondson
6352704608 Remove placeholder fixture 2021-09-06 13:49:34 -07:00
David Edmondson
072f7693f4 gitignore cypress output 2021-09-06 13:49:34 -07:00
David Edmondson
fbe70f51c2 Add browser tests for tutorial, NetScript 2 2021-09-06 13:49:34 -07:00
David Edmondson
27e2b2ea65 separate PR/dev actions 2021-09-06 13:46:59 -07:00
David Edmondson
6320189717 Specify node version 2021-09-06 13:32:18 -07:00
David Edmondson
17da325585 Cache npm install, add tests 2021-09-06 13:29:35 -07:00
David Edmondson
5873b5fe19 Try again 2021-09-06 13:24:33 -07:00
David Edmondson
6d8b52c0d6 npm install 2021-09-06 13:20:07 -07:00
David Edmondson
8faa7faf8a Set up GitHub Actions 2021-09-06 13:17:42 -07:00
Olivier Gagnon
66a593e06b expand new city and new industry dont appear if you cant 2021-09-06 15:53:31 -04:00
Olivier Gagnon
506122f5b8 fmt, remove corp routing, lint 2021-09-06 15:06:08 -04:00
hydroflame
91434b7972 Merge pull request #1173 from threehams/source-maps
Speed up sourcemaps in dev mode
2021-09-06 13:05:13 -04:00
David Edmondson
ba46262426 Speed up sourcemaps in dev mode 2021-09-05 11:32:52 -07:00
Olivier Gagnon
aa91e8aecc fix ts warning 2021-09-05 14:18:33 -04:00
hydroflame
2874112946 Merge pull request #1171 from threehams/ts-check-1169
Add async TS checker to build
2021-09-05 14:13:36 -04:00
David Edmondson
3f8aa2aa9e Add async TS checker to build 2021-09-05 11:10:23 -07:00
Olivier Gagnon
b9acfde363 fix research box not displaying well on big screens. 2021-09-05 13:48:38 -04:00
Olivier Gagnon
b4c9655782 reword hacking skill aug effect 2021-09-05 01:56:37 -04:00
Olivier Gagnon
f50b2a9d9f remove debug log 2021-09-05 01:51:27 -04:00
Olivier Gagnon
a475e6297e fix miscalc in favor 2021-09-05 01:50:26 -04:00
Olivier Gagnon
cfdf23cd11 fix whitespace from new build 2021-09-05 01:33:05 -04:00
hydroflame
d6aa331310 Merge pull request #1163 from threehams/world-map
Fix world map and casino visuals.
2021-09-05 01:31:36 -04:00
David Edmondson
306facc0d1 Switch to babel for builds.
Fix whitespace mangled by prettier
2021-09-04 22:17:30 -07:00
hydroflame
5e11e77282 Merge pull request #1161 from threehams/fixed-builds
Fixed builds
2021-09-04 21:05:52 -04:00
David Edmondson
daafdbbddf Target ES2017 browsers and above 2021-09-04 17:52:23 -07:00
David Edmondson
8501c9bb1b Revert swc change due to prod crash 2021-09-04 17:45:30 -07:00
Olivier Gagnon
05f3b1c390 remove some function from autocomplete. 2021-09-04 20:14:33 -04:00
Olivier Gagnon
7f15a19f12 fix bad import 2021-09-04 20:09:22 -04:00
hydroflame
4011542b97 Merge pull request #1157 from threehams/faster-builds
Switch ts and babel for swc-loader
2021-09-04 20:05:51 -04:00
Olivier Gagnon
858b1e7468 documentation 2021-09-04 20:05:24 -04:00
David Edmondson
cfbdae6def Switch ts and babel for swc-loader
Replace old <> assertion syntax
2021-09-04 16:57:49 -07:00
Olivier Gagnon
05a6f2a20e fix formatting of Spiralize Matrix contract 2021-09-04 19:54:08 -04:00
Olivier Gagnon
05bab22807 Better error message for dynamic ram miscalculation 2021-09-04 19:27:16 -04:00
Olivier Gagnon
a18bdd6afc prettify, sorry for the big ass commit 2021-09-04 19:09:30 -04:00
hydroflame
3d7cdb4ef9 Merge pull request #1105 from danielyxie/dependabot/npm_and_yarn/jszip-3.7.0
Bump jszip from 3.1.5 to 3.7.0
2021-09-04 19:03:43 -04:00
hydroflame
eed915dbbd Merge pull request #1154 from threehams/num-people-killed
Add numPeopleKilled to getPlayer return
2021-09-04 19:03:36 -04:00
hydroflame
570e5b17a2 Merge pull request #1122 from threehams/upgrade-acorn
Support optional chaining in static RAM calculator.
2021-09-04 19:03:22 -04:00
hydroflame
4a7fcda86f Merge pull request #1152 from threehams/prettier
Configure `prettier`.
2021-09-04 19:03:05 -04:00
David Edmondson
a63178f30c Run eslint on js,jsx files 2021-09-04 14:56:54 -07:00
David Edmondson
2914bbb789 Add numPeopleKilled to getPlayer return 2021-09-04 14:51:59 -07:00
David Edmondson
1e42f73e2a Add prettier, and fix some CSS/line errors. 2021-09-04 13:18:35 -07:00
hydroflame
2d322e7a6a Merge pull request #1115 from danielyxie/react-corp
React corp
2021-09-04 15:11:43 -04:00
Olivier Gagnon
75d77410ea merge dev 2021-09-04 15:11:17 -04:00
Olivier Gagnon
0ad05c7bad fix disableLog issue 2021-09-04 14:51:50 -04:00
Olivier Gagnon
69ec6f6679 Travel cost greys out 2021-09-04 14:46:13 -04:00
Olivier Gagnon
c8dd17d573 added formula for cores cost, ram cost, and changed core cost formula 2021-09-04 14:43:22 -04:00
Olivier Gagnon
1241cc5128 Avoid use of any in CONSTANTS.ts 2021-09-04 14:09:57 -04:00
Olivier Gagnon
e1c29f25e2 Fix missing money display 2021-09-04 14:03:19 -04:00
Olivier Gagnon
c9efa977fb BN10 now has the sleeve you would gain but inside, also it starts with 25-25 sync-shock 2021-09-04 12:15:16 -04:00
Olivier Gagnon
6e013e4e6a Change money to automatically color grey when something cannot be bought. 2021-09-04 03:27:31 -04:00
Olivier Gagnon
3a943e0e50 made tech vendors button a tad smarter. 2021-09-04 02:21:31 -04:00
Olivier Gagnon
f2edb42aca gave some love to the donations 2021-09-04 01:39:34 -04:00
Olivier Gagnon
e1cb0e529c Tech vendors give a tip that you can buy bigger servers via scripts. 2021-09-03 18:04:05 -04:00
Olivier Gagnon
008b233c9d reword faction reputation and favor tooltips 2021-09-03 17:42:23 -04:00
Olivier Gagnon
cc9a07c09f Fix 180 favor issue, reworked favor and reputation mathjax 2021-09-03 17:12:55 -04:00
Olivier Gagnon
2866bfaa70 more corp API 2021-09-03 16:02:41 -04:00
David Edmondson
38880f69e1 Update acorn for optional chaining support 2021-09-02 13:56:30 -07:00
Olivier Gagnon
eb01051ad6 rebuild 2021-09-02 16:42:24 -04:00
Olivier Gagnon
5dd6145d53 build player patch 2021-09-02 13:34:59 -04:00
hydroflame
a652140224 Merge pull request #1124 from TomCassWindred/WrapOnLineBreak
Set log messages to wrap on line breaks
2021-09-02 13:24:30 -04:00
Cass
aa929b1837 Set log messages to wrap on line breaks
This retains \n characters on strings given as inputs
2021-09-02 18:15:42 +01:00
Olivier Gagnon
9b501e061a merge dev 2021-09-02 03:16:58 -04:00
dependabot[bot]
6f3db27373 Bump jszip from 3.1.5 to 3.7.0
Bumps [jszip](https://github.com/Stuk/jszip) from 3.1.5 to 3.7.0.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/master/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.1.5...v3.7.0)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 07:11:42 +00:00
Olivier Gagnon
454a792f0a Added mathjax formulas for favor and made favor calculation faster. 2021-09-02 03:10:12 -04:00
Olivier Gagnon
8d17495e85 corp API 2021-09-02 00:36:33 -04:00
Olivier Gagnon
d3aeda8ad5 more conversion 2021-09-01 22:16:48 -04:00
Olivier Gagnon
65158e4db7 merge dev 2021-08-31 16:30:01 -04:00
Olivier Gagnon
fd85a00b8f Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-08-31 16:26:54 -04:00
Olivier Gagnon
a239f0ad58 Build some PRs for the players 2021-08-31 16:26:06 -04:00
hydroflame
d936f68c7a Merge pull request #1111 from brubsby/patch-2
Update all general actions to have infinity count
2021-08-31 16:24:57 -04:00
hydroflame
feebdc8ee5 Merge pull request #1112 from brubsby/patch-3
Update getActionEstimatedSuccessChance
2021-08-31 16:24:47 -04:00
hydroflame
0eeb868e25 Merge pull request #1117 from TomCassWindred/IndividualLogEnable
Individual log enable
2021-08-31 16:22:34 -04:00
Olivier Gagnon
d9c9c30fdd more conversion 2021-08-31 16:19:58 -04:00
Cass
294640d27e Quick Tidy 2021-08-31 21:04:40 +01:00
Cass
fe25460997 Replace "ALL" log flag with individually disabling every log.
https://github.com/danielyxie/bitburner/issues/1116
2021-08-31 21:03:39 +01:00
Olivier Gagnon
f987ff9e2a no more any in corp 2021-08-31 15:51:27 -04:00
Olivier Gagnon
d65cbf07f4 Narrow down corporation types 2021-08-31 14:47:07 -04:00
Olivier Gagnon
2624e13c34 build dev menu 2021-08-31 13:06:23 -04:00
Olivier Gagnon
7c9c4d3f4d No more use of any in Corporations. 2021-08-31 13:04:33 -04:00
Olivier Gagnon
a2379b21ec more conversion 2021-08-31 03:39:04 -04:00
Olivier Gagnon
68885ceff5 more conversion 2021-08-31 03:18:44 -04:00
Olivier Gagnon
1ae17677c0 jsts corporation 2021-08-31 03:07:20 -04:00
Olivier Gagnon
67be13c6d6 more conversion 2021-08-31 02:49:57 -04:00
Olivier Gagnon
d4349e85b1 fix some of the research popup stuff 2021-08-31 01:05:51 -04:00
Olivier Gagnon
a721c49e1d more conversion 2021-08-31 00:54:57 -04:00
hydroflame
2d2c20bfc7 Merge pull request #1114 from threehams/autocomplete
Add tests for autocomplete
2021-08-30 22:08:16 -04:00
David Edmondson
ed035a2e89 Add tests for autocomplete 2021-08-30 17:58:01 -07:00
Olivier Gagnon
cf72d72bb0 Finished converting all the popups. 2021-08-30 17:59:11 -04:00
Olivier Gagnon
3ba04220e1 I made a mistake but caught it. 2021-08-30 03:18:12 -04:00
Olivier Gagnon
a72d1aa99f more conversion 2021-08-30 03:07:14 -04:00
Olivier Gagnon
21008ba65a more conversion 2021-08-28 14:45:55 -04:00
Olivier Gagnon
a760ede129 more conversion 2021-08-28 14:22:36 -04:00
Olivier Gagnon
717b32b0b4 more conversion 2021-08-28 14:03:07 -04:00
Olivier Gagnon
4b6d049da2 more conversion 2021-08-28 13:41:25 -04:00
Olivier Gagnon
8bb4e8b7cf more conversion 2021-08-28 13:07:35 -04:00
Olivier Gagnon
0d30544a52 more conversion 2021-08-28 12:00:18 -04:00
Olivier Gagnon
361ef31fe7 more conversion 2021-08-28 03:49:15 -04:00
Olivier Gagnon
0de3deee3f Even more conversion 2021-08-28 03:31:47 -04:00
Olivier Gagnon
94ad7ccf4b more conversion 2021-08-28 02:57:57 -04:00
Olivier Gagnon
4b53d6ecf7 more convertion 2021-08-28 02:50:06 -04:00
Olivier Gagnon
3d2aeb63a0 more convert 2021-08-28 00:29:19 -04:00
Olivier Gagnon
b621359a9e fix changelog dates 2021-08-28 00:13:08 -04:00
Olivier Gagnon
07c0b708d7 more convertion 2021-08-28 00:11:42 -04:00
brubsby
b372f23b6e Update getActionEstimatedSuccessChance
ns.bladeburner.getActionEstimatedSuccessChance("general", "Diplomacy") returned [-1, -1] (as well as "Hyperbolic Regeneration Chamber"), even though both tasks automatically succeed. Also Training and Field Analysis both previously returned [1, 1].
2021-08-27 17:06:01 -05:00
Olivier Gagnon
a8254e7144 one component 2021-08-27 17:39:15 -04:00
brubsby
02a21cf2d9 Update all general actions to have infinity count
ns.bladeburner.getActionCountRemaining("general", "Diplomacy") currently returns -1. I think it'd be more intuitive if all the general actions returned Infinity, instead of just two of them
2021-08-27 16:13:22 -05:00
Olivier Gagnon
bcb0606900 fix typo 2021-08-27 15:31:54 -04:00
Olivier Gagnon
42704d8695 v0.52.9 2021-08-27 15:26:12 -04:00
Olivier Gagnon
e75197dee3 build 2021-08-27 14:19:36 -04:00
Olivier Gagnon
9e92df47a5 Added file diagnostic. 2021-08-27 14:17:25 -04:00
Olivier Gagnon
c110c22efb My corp infinity safeguard from 2 patch ago wasn't actually preventing it, just logging, now it returns to avoid it. 2021-08-27 11:18:06 -04:00
Olivier Gagnon
c9ab7908a7 another blocker against mku equal 0 and added tprintf 2021-08-27 11:05:36 -04:00
Olivier Gagnon
3ab306f9d7 fix the errors about node setTimeout instead of window 2021-08-27 01:11:11 -04:00
hydroflame
f08aa8924c Merge pull request #1102 from threehams/test-runner
Switch out test runner for jest
2021-08-27 00:53:45 -04:00
Olivier Gagnon
c4914fa54f build community prs 2021-08-27 00:45:11 -04:00
hydroflame
fa5e2f4964 Merge pull request #1079 from threehams/infil-instakill
Instakill player when automating infiltration
2021-08-26 21:42:08 -04:00
hydroflame
77eda1fd75 Merge pull request #1098 from brubsby/patch-1
add bladeburner_analysis_mult to getPlayer()
2021-08-26 21:42:01 -04:00
Olivier Gagnon
c987c91a11 add corp safeguard 2021-08-26 21:39:51 -04:00
David Edmondson
feaa74ed34 Only compile down imports during tests 2021-08-26 17:02:02 -07:00
David Edmondson
701fba7ec7 Drop cross-env 2021-08-26 16:45:39 -07:00
David Edmondson
51bd626e88 Remove unneeded stuff, .vscode on gitignore 2021-08-26 16:44:37 -07:00
David Edmondson
ab4863e7df Swap out mocha/chai for jest 2021-08-26 16:43:11 -07:00
David Edmondson
1a8bcf66cc Fix existing tests, update to jest 2021-08-26 16:43:03 -07:00
David Edmondson
7bfceb1690 Replace old-style import with type 2021-08-26 16:42:57 -07:00
David Edmondson
27e22814a9 Remove missing + unused variable 2021-08-26 16:42:47 -07:00
Olivier Gagnon
ceb4e304fd Hotfix corp mku getting set to zero and causing infinity 2021-08-26 15:22:06 -04:00
Olivier Gagnon
e2d74f9432 fix beautify 2021-08-25 16:14:47 -04:00
Olivier Gagnon
79345a49b4 Bladeburner automation status always displays the commands, even when disabled 2021-08-25 11:50:33 -04:00
Olivier Gagnon
7066a793a1 build fix 2021-08-24 21:40:50 -04:00
hydroflame
2a5cf62168 Merge pull request #1097 from Snarling/patch-2
Fix joining blade via ns
2021-08-24 21:39:29 -04:00
brubsby
6495be5705 add bladeburner_analysis_mult to getPlayer() 2021-08-24 20:02:39 -05:00
Snarling
0d6d05db49 Fix joining blade via ns
Pass Player as an argument in Bladeburner constructor call for ns.bladeburner.joinBladeburnerDivision()
2021-08-24 20:08:29 -04:00
Olivier Gagnon
5d59620dce click to copy every bladeburner action 2021-08-23 11:42:14 -04:00
Olivier Gagnon
60d95a90d0 Fix script not being saved on their individual computers. 2021-08-23 09:33:49 -04:00
Olivier Gagnon
51debc60da build omuretsu fix 2021-08-23 09:18:43 -04:00
Snarling
faf625b34d Update Root.tsx
Went back to tracking lastServer as a hostname, since server IPs are not static.
2021-08-23 04:04:52 -07:00
Snarling
1a8b194341 Update Root.tsx
Removed unnecessary conversions between server and ip
2021-08-23 04:04:52 -07:00
Snarling
386f8a11c5 Change lastServer to reference the server ip
Should fix issue with newly saved scripts failing to run
2021-08-23 04:04:52 -07:00
hydroflame
4278191b0e Merge pull request #1090 from danielyxie/dev
v0.52.8
2021-08-23 02:09:55 -04:00
Olivier Gagnon
6d2b8b4f6f v0.52.8 2021-08-23 02:09:49 -04:00
Olivier Gagnon
b148b2f0b5 logbox close on escape now 2021-08-23 01:15:20 -04:00
hydroflame
4a9bac99d2 Merge pull request #1083 from danielyxie/dev
Fix monaco jumping to end of file.
2021-08-22 23:57:16 -04:00
Olivier Gagnon
0b3c114cd0 Fix monaco jumping to end of file. 2021-08-22 23:57:00 -04:00
hydroflame
49cc75a575 Merge pull request #1082 from danielyxie/dev
trying to fix the jumping bug
2021-08-22 23:47:44 -04:00
Olivier Gagnon
e0d631f8b3 trying to fix the jumping bug 2021-08-22 23:46:30 -04:00
hydroflame
8289c9fc75 Merge pull request #1080 from danielyxie/dev
Fixed Script Editor not loading the same file after manually clicking it
2021-08-22 01:31:00 -04:00
Olivier Gagnon
d66e36b637 Fixed Script Editor not loading the same file after manually clicking it 2021-08-22 01:30:28 -04:00
David Edmondson
6cd7465b82 Instakill player when automating infiltration 2021-08-21 15:00:00 -07:00
hydroflame
c7125e2e46 Merge pull request #1077 from danielyxie/dev
Fix a few other bugs
2021-08-21 14:01:05 -04:00
Olivier Gagnon
a564957092 v0.52.7 2021-08-21 14:00:28 -04:00
Olivier Gagnon
4b8e63f342 Fix a few other bugs 2021-08-21 11:30:31 -04:00
hydroflame
480d47eece Merge pull request #1076 from danielyxie/dev
Fix log box dragging.
2021-08-21 02:39:17 -04:00
Olivier Gagnon
4de20f8cce Made logbox drag a little smoother. 2021-08-21 02:31:37 -04:00
Olivier Gagnon
4b38d296a8 Fix corp industry wrong initial value. 2021-08-21 02:10:58 -04:00
hydroflame
9ac75d5bf5 Merge pull request #1075 from danielyxie/dev
Fix Corp research popup box appearing behind one another.
2021-08-21 02:07:10 -04:00
Olivier Gagnon
6561413137 Fix Corp research popup box appearing behind one another. 2021-08-21 02:06:48 -04:00
hydroflame
1fb5105d0a Merge pull request #1074 from danielyxie/dev
hotfix broken editor shortcuts
2021-08-21 01:55:05 -04:00
Olivier Gagnon
b67c03ff8a hotfix broken editor shortcuts 2021-08-21 01:54:39 -04:00
hydroflame
7db3716256 Merge pull request #1072 from danielyxie/dev
hotfix the tutorial
2021-08-21 00:58:58 -04:00
Olivier Gagnon
ee5a70901b hotfix logbox width 2021-08-21 00:58:24 -04:00
Olivier Gagnon
63b2c77907 hotfix the tutorial 2021-08-21 00:51:07 -04:00
hydroflame
aa3ad3164c Merge pull request #1068 from danielyxie/dev
v0.52.6
2021-08-21 00:32:04 -04:00
Olivier Gagnon
474befa091 v0.52.6 2021-08-21 00:31:42 -04:00
hydroflame
cd1c1ce145 Merge pull request #1067 from danielyxie/monaco
Monaco
2021-08-21 00:17:58 -04:00
Olivier Gagnon
5aa24f22c4 final changes for monac 2021-08-21 00:17:26 -04:00
Olivier Gagnon
f02c6443cc ok figured out how to make the javascript autocomplete. 2021-08-20 17:14:20 -04:00
Olivier Gagnon
4497143785 basic autocomplete working 2021-08-20 16:11:49 -04:00
Olivier Gagnon
0b3c48827b Ok we can load a thing but it has no effect. 2021-08-20 15:46:59 -04:00
Olivier Gagnon
86de11e794 link for monaco 2021-08-20 15:46:59 -04:00
Olivier Gagnon
fb87385704 Added function definition for netscritp in typescript 2021-08-20 15:46:59 -04:00
Olivier Gagnon
b1caea796a another link 2021-08-20 15:46:59 -04:00
Olivier Gagnon
2dfd19c9e0 rename, kinda add option for tabs vs space 2021-08-20 15:46:59 -04:00
Olivier Gagnon
0e24020796 Move monaco UI back where it belongs ish 2021-08-20 15:46:59 -04:00
Olivier Gagnon
ed62a3ebc2 deleted ace and monaco 2021-08-20 15:46:59 -04:00
Olivier Gagnon
258716388e focus works 2021-08-20 15:46:59 -04:00
Olivier Gagnon
73ec97db87 first pass at monaco. 2021-08-20 15:46:58 -04:00
Olivier Gagnon
567c5dc230 lint 2021-08-20 15:45:21 -04:00
Olivier Gagnon
980665b77c Fix job bug 2021-08-20 15:41:15 -04:00
Olivier Gagnon
dcddc0c2d5 fix a few things 2021-08-20 14:39:24 -04:00
Olivier Gagnon
6e1100750e script log boxes can now be dragged around and multiple of them can be on screen at once. 2021-08-19 22:22:21 -04:00
hydroflame
fea25249a8 Merge pull request #1062 from danielyxie/dev
v0.52.5
2021-08-19 16:38:26 -04:00
Olivier Gagnon
df457a0c6e v0.52.5 2021-08-19 16:37:59 -04:00
hydroflame
3826de72ef Merge pull request #1061 from danielyxie/dev
hotfix some blade netscript functions not working
2021-08-19 11:04:24 -04:00
Olivier Gagnon
ee3530d9b9 hotfix some blade netscript functions not working 2021-08-19 11:04:01 -04:00
hydroflame
5098ef6232 Merge pull request #1057 from danielyxie/dev
v0.52.4 - Bladeburner in React
2021-08-19 01:46:16 -04:00
Olivier Gagnon
1a1a43c1ce v0.52.4 2021-08-19 01:45:26 -04:00
Olivier Gagnon
d6b349b6ff dialogBoxCreate now uses the same logic as other popups, now all popup can be dismissed with escape. 2021-08-18 00:51:51 -04:00
Olivier Gagnon
5c92360310 convert a few variables to const. 2021-08-18 00:08:23 -04:00
hydroflame
1fbb971d6f Merge pull request #1049 from danielyxie/react-blade
React blade
2021-08-17 23:54:52 -04:00
Olivier Gagnon
fa78b3f421 Fix React list without keys, fix int miscalculation of blade skills. 2021-08-17 23:52:18 -04:00
Olivier Gagnon
9af9bf58b6 fix final bugs 2021-08-17 23:28:40 -04:00
Olivier Gagnon
99afb156fa Refactoring mostly done, still a few bugs and test to do. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
8d550157bc Blade is fully converted to React but now it needs refactoring. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
4865563f26 Almost done converting blade to react. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
cc8de58cff More converting blade to react. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
58ada6d128 converting the giant Bladeburner object. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
ae6f95b59a The blade UI is fully converted to React, the business logic is left to do. 2021-08-17 23:28:40 -04:00
Olivier Gagnon
99d4f17cdb work on blade to react 2021-08-17 23:28:40 -04:00
Olivier Gagnon
33f0efd49c converting more blade to react 2021-08-17 23:28:40 -04:00
Olivier Gagnon
988ca37764 converting more blade to react/ts 2021-08-17 23:28:40 -04:00
Olivier Gagnon
0e9d7450c9 Converting bladeburner to react 2021-08-17 23:28:40 -04:00
hydroflame
27ee65f524 Merge pull request #1051 from danielyxie/dev
hotfix 0 territory being softlocked.
2021-08-17 17:47:58 -04:00
Olivier Gagnon
78cd319c21 hotfix 0 territory being softlocked. 2021-08-17 17:47:22 -04:00
hydroflame
1d0f193c34 Merge pull request #1050 from danielyxie/dev
hotfix blocked in Gang
2021-08-17 17:14:11 -04:00
Olivier Gagnon
7367167019 hotfix blocked in Gang 2021-08-17 17:13:32 -04:00
hydroflame
08908c87ea Merge pull request #1048 from danielyxie/dev
Hotfix weird bladeburner ui bug
2021-08-15 17:14:38 -04:00
Olivier Gagnon
392f164f8e Hotfix weird bladeburner ui bug 2021-08-15 17:14:05 -04:00
hydroflame
3957a517db Merge pull request #1047 from danielyxie/dev
v0.52.3 - 2021-07-15 Gangs were OP (hydroflame)
2021-08-15 16:26:52 -04:00
Olivier Gagnon
e4b2a6853d v0.52.3 2021-08-15 16:23:54 -04:00
Olivier Gagnon
697a8119b0 update Changelog. 2021-08-15 16:20:34 -04:00
Olivier Gagnon
b31b3dc735 Factions list screen converted to React. 2021-08-15 16:20:10 -04:00
Olivier Gagnon
5848fa53b7 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-08-15 15:24:23 -04:00
Olivier Gagnon
539b206cb5 update patch notes. 2021-08-15 15:23:39 -04:00
hydroflame
0f92890f0c Merge pull request #1045 from danielyxie/gang2
Gang rework
2021-08-15 15:01:27 -04:00
Olivier Gagnon
056f0213dd Fixed an issue where a faction could be joined twice. 2021-08-15 14:31:38 -04:00
Olivier Gagnon
41871de26c More adjustments to gang rework 2021-08-15 14:09:58 -04:00
Olivier Gagnon
5803ddc613 popup now all can be dismissed by clicking outside the window and have grey background 2021-08-15 12:16:16 -04:00
Olivier Gagnon
99263309ba Fix gaining too much asc pts, reduce reputation gain in gangs. 2021-08-15 12:14:56 -04:00
Olivier Gagnon
8a78ee4cf6 build dev for beta branch 2021-08-15 12:11:18 -04:00
Olivier Gagnon
af46324c6d Changed the ascension mechanic 2021-08-15 12:09:44 -04:00
Olivier Gagnon
42aa6525a6 the gang UI has a force update on ascension. 2021-08-15 12:09:44 -04:00
Olivier Gagnon
05b1b55e9a bit more code cleanups 2021-08-15 12:09:44 -04:00
Olivier Gagnon
febf0835c2 tweaks to how the gang ui is loaded, making it more like stock market 2021-08-15 12:09:44 -04:00
Olivier Gagnon
94ea0d253c Removed all DOM id 2021-08-15 12:09:44 -04:00
Olivier Gagnon
31cf02e8e4 some comments 2021-08-15 12:09:44 -04:00
Olivier Gagnon
97fdf7cb7f Format/cleanup of Gang UI 2021-08-15 12:09:44 -04:00
Olivier Gagnon
2c7fbc03cf Remove all uses of any in Gang, Train Combat and Train Hacking are now the best exp gains, gang equipment and augs now give exp boosts 2021-08-15 12:09:43 -04:00
Olivier Gagnon
07cca48a17 converted everything to ts 2021-08-15 12:09:43 -04:00
Olivier Gagnon
43d0fcb9f9 little cleanup 2021-08-15 12:09:43 -04:00
Olivier Gagnon
99b8dfa0c1 Converted GangMember to tsx, only Gang left 2021-08-15 12:09:43 -04:00
Olivier Gagnon
4cdd65e96c more gang react conversion 2021-08-15 12:09:43 -04:00
Olivier Gagnon
9e345b1375 Mostly done converting Gang UI to React 2021-08-15 12:09:43 -04:00
Olivier Gagnon
9466017906 modifying gang stats 2021-08-15 12:09:43 -04:00
Olivier Gagnon
9c24f1325f Gang member accordion done 2021-08-15 12:09:43 -04:00
Olivier Gagnon
26401fbb93 more panels! 2021-08-15 12:09:43 -04:00
Olivier Gagnon
69dfbb6673 panel 2 done 2021-08-15 12:09:43 -04:00
Olivier Gagnon
5863797b03 minor refactor 2021-08-15 12:09:43 -04:00
Olivier Gagnon
25f546c691 part 1 of converting gang to react 2021-08-15 12:09:43 -04:00
hydroflame
21daab32c1 Merge pull request #1044 from danielyxie/dev
v0.52.2
2021-08-15 02:15:03 -04:00
hydroflame
5e2ed7a79e Merge pull request #1042 from danielyxie/dev
hotfix revert tutorial instructing the player to make a script on n00…
2021-08-11 01:05:46 -04:00
hydroflame
d9e60ea124 Merge pull request #1039 from danielyxie/dev
rebuild with the version inside the game correctly udpated
2021-08-10 21:10:00 -04:00
hydroflame
2750eb293a Merge pull request #1038 from danielyxie/dev
v0.52.1
2021-08-10 21:04:05 -04:00
842 changed files with 115557 additions and 94030 deletions

View File

@@ -1,3 +0,0 @@
{
"presets": ["@babel/preset-react"]
}

3
.browserslistrc Normal file
View File

@@ -0,0 +1,3 @@
last 4 versions
not dead
not ie <= 11

View File

@@ -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

File diff suppressed because it is too large Load Diff

10
.gitignore vendored
View File

@@ -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
View File

@@ -0,0 +1,4 @@
node_modules
package.json
dist
doc/build/

5
.prettierrc Normal file
View File

@@ -0,0 +1,5 @@
{
"trailingComma": "all",
"tabWidth": 2,
"printWidth": 120
}

View File

@@ -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.

View File

@@ -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.

View File

@@ -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
View File

@@ -0,0 +1,3 @@
module.exports = {
presets: ["@babel/preset-react", "@babel/preset-env", "@babel/preset-typescript"],
};

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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%;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -1,114 +0,0 @@
@import "mixins";
@import "theme";
/**
* 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 {
text-decoration: none;
background-color: #555;
color: #fff;
padding: 3px 5px;
margin: 5px;
border: 1px solid #333;
-moz-user-select: none;
-ms-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
&: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 {
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? */
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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%;
}
}

View File

@@ -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

File diff suppressed because one or more lines are too long

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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%;
}

View File

@@ -1,5 +0,0 @@
#milestones-container {
position: fixed;
padding: 6px;
width: 60%;
}

View File

@@ -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;
}

View File

@@ -1,197 +0,0 @@
@import "mixins";
@import "theme";
/* 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;
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);
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;
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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 */

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -1,424 +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;
}
#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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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
View 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
}

View 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);
});
});

View 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);
});
});

View 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
View 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
};

View File

@@ -0,0 +1 @@
import "@testing-library/cypress/add-commands";

View 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
View 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')

File diff suppressed because one or more lines are too long

View File

@@ -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([853,0]),o()}({790:function(n,t,o){},792:function(n,t,o){},794:function(n,t,o){},796:function(n,t,o){},798:function(n,t,o){},800:function(n,t,o){},802:function(n,t,o){},804:function(n,t,o){},806:function(n,t,o){},808:function(n,t,o){},810:function(n,t,o){},812:function(n,t,o){},814:function(n,t,o){},816:function(n,t,o){},818:function(n,t,o){},820:function(n,t,o){},822:function(n,t,o){},824:function(n,t,o){},826:function(n,t,o){},828:function(n,t,o){},830:function(n,t,o){},832:function(n,t,o){},834:function(n,t,o){},836:function(n,t,o){},838:function(n,t,o){},840:function(n,t,o){},842:function(n,t,o){},844:function(n,t,o){},846:function(n,t,o){},848:function(n,t,o){},850:function(n,t,o){},853:function(n,t,o){"use strict";o.r(t);o(852),o(850),o(848),o(846),o(844),o(842),o(840),o(838),o(836),o(834),o(832),o(830),o(828),o(826),o(824),o(822),o(820),o(818),o(816),o(814),o(812),o(810),o(808),o(806),o(804),o(802),o(800),o(798),o(796),o(794),o(792),o(790)}});
!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

2381
dist/engineStyle.css vendored

File diff suppressed because it is too large Load Diff

329
dist/vendor.bundle.js vendored

File diff suppressed because one or more lines are too long

5536
dist/vendor.css vendored

File diff suppressed because one or more lines are too long

View File

@@ -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 | |

View File

@@ -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.

View File

@@ -3,7 +3,324 @@
Changelog
=========
v0.52.2 - 2021-07-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
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 **
* The entire UI was rebuild in React. It should be more responsive
** Hacknet **
* Displays how many time each hash upgrade was bought.
* Displays cummulative effect of the upgrade.
* Removed "Close" button from hash upgrade menu.
** Misc. **
* More popup/modals have dark background, can be dismissed by clicking
outside, or by pressing escape.
* Small reword in the guide.
* Fix several typos in the bladeburner documentation.
* Linting (no one cares except the dev)
* nerf noodle bar
v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)
-------------------------------------------
** Gang **
* Significant rework. Ascension is now based on exp gained.
* All upgrades give exp bonuses.
* Maximum gang members reduced to 12.
* Respect required to recruit sharply increased.
* Rewritten in React, the UI should be smoother and less laggy now.
** Infiltration **
* Now isTrusted protected.
** Misc. **
* Many UI element are now "noselect" protected.
* Fixed an issue where you could join the same faction twice via script and
UI simultaneously.
* Factions list screen converted to React.
* nerf noodle bar
v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
-------------------------------------------
** Source-Files **
@@ -17,7 +334,11 @@ v0.52.2 - 2021-07-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
programs.
* Augmentation descriptions are now more concise and consistent.
v0.52.1 - 2021-07-10 bugfixing (hydroflame & community)
** Misc. **
* nerf noodle bar
v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)
-------------------------------------------
**Misc.**
@@ -36,6 +357,7 @@ v0.52.1 - 2021-07-10 bugfixing (hydroflame & community)
* Plenty of typo/description fixed (@MageKing17)
* Cleanup description of singularity function on readthedocs (@PurePandemonium)
* Fix bug when autolinking a server while backdooring (@schroederIT)
* nerf noodle bar
v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)
--------------------------------------------------------------
@@ -85,6 +407,7 @@ v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)
* Fixed an issue where reputation could be transfered to new jobs when unfocused.
* Empty stack traces should no longer appear.
* Purchasing anything with Infinity money doesn't result in NaN.
* nerf noodle bar
v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)
-----------------------------------------------------
@@ -128,6 +451,7 @@ v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)
* Very large number will no longer appear as "$NaNt"
* Hash capacity now displays in the "big number" format.
* nerf noodle bar
v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)
---------------------------------------------------------------
@@ -181,6 +505,7 @@ v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)
* Updated several dependencies (big who cares, I know)
* ls no longer prints lingering newline.
* Money earned/spent by sleeves is now tracked under Character>Money
* nerf noodle bar
v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)
@@ -238,6 +563,7 @@ v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)
* Fix infiltration number formatting.
* script income transfers to parent on death. This helps keep track of
income for scripts that spawn short lived scripts.
* nerf noodle bar
v0.51.7 - 2021-04-28 n00dles (hydroflame & community)
-----------------------------------------
@@ -295,6 +621,7 @@ v0.51.7 - 2021-04-28 n00dles (hydroflame & community)
* Money amount under 1000 dont display 3 decimal anymore.
* Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)
* Faction invite text says "Decide later"/"Join!" instead of "No"/"Yes"
* nerf noodle bar
v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)
@@ -345,6 +672,7 @@ v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)
* so many documentation and typos fixes (@Pimgd)
* A corruption visual effect has been added to location with servers that
have backdoor installed. (@dewint)
* nerf noodle bar
v0.51.5 - 2021-04-20 Flags! (hydroflame)
@@ -369,6 +697,7 @@ v0.51.5 - 2021-04-20 Flags! (hydroflame)
* Souce-File typo fix
* Fix 'while you were away' screen.
* Bladeburner team size can no longer be set to negative amounts.
* nerf noodle bar
v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)
-------------------------------------------------------
@@ -404,6 +733,7 @@ v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)
* The text editor now remembers the location of your cursor and restores it.
* skills are recalculated instantly.
* Fix typo in Operation Zero description.
* nerf noodle bar
v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)
-----------------------------------------------------------------
@@ -445,6 +775,7 @@ v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)
* Hacknet node names is easier to handle for screen readers.
* Money spent on classes is now tracked independently of work money.
* running coding contract from the terminal will display its name.
* nerf noodle bar
v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)
----------------------------------------------
@@ -459,6 +790,7 @@ v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)
* Link to discord added under options
* 'getMemberInformation' doc updated, oops
* tech vendor now handle max ram and cores.
* nerf noodle bar
v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)
------------------------------------------------------------------------------------------
@@ -490,6 +822,7 @@ v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's h
* 'fl1ght.exe' will no longer suggest the combat path. Related faction
requirements unchanged.
* nerf noodle bar
v0.51.0 - 2021-03-31 Formulas (hydroflame)
------------------------------------------
@@ -516,6 +849,10 @@ v0.51.0 - 2021-03-31 Formulas (hydroflame)
* Certain UI elements are now 'click-to-copy'
** Misc. **
* nerf noodle bar
v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)
--------------------------------------------------------------
@@ -533,6 +870,7 @@ v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)
* New shortcut, Alt + b, brings you to bladeburner
* New shortcut, Alt + g, brings you to gang
* nerf noodle bar
v0.50.1 - 2021-03-22 (hydroflame)
---------------------------------
@@ -555,6 +893,7 @@ v0.50.1 - 2021-03-22 (hydroflame)
**Misc.**
* Minor spacing in stats tables.
* nerf noodle bar
v0.50.0 - 2021-03-20 Intelligence (hydroflame)
----------------------------------------------
@@ -575,6 +914,7 @@ v0.50.0 - 2021-03-20 Intelligence (hydroflame)
* number formatting
* remove wiki button in Hacking Missions.
* Fix NaN displayed when very very large numbers are reached.
* nerf noodle bar
v0.49.2 - 2021-03-13 (hydroflame)
---------------------------------
@@ -612,6 +952,7 @@ v0.49.2 - 2021-03-13 (hydroflame)
**Misc.**
* Fix issue where the effective stats under Character>Stats were being calculated.
* nerf noodle bar
v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)
------------------------------------------------
@@ -639,6 +980,7 @@ v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)
* Minor formatting under Hacking>Active Scripts
* option menu colors now match the rest of the game, kinda.
* nerf noodle bar
v0.48.0 - ASCII - 2021-03-07 (hydroflame)
@@ -686,6 +1028,7 @@ v0.48.0 - ASCII - 2021-03-07 (hydroflame)
has bought but not installed
* Character>Factions has a badge indicating how many factions have pending
invites.
* nerf noodle bar
v0.47.2 - 7/15/2019
-------------------

View File

@@ -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.2'
release = '0.55.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@@ -636,7 +636,7 @@ This tells me that I can reach :code:`CSEC` by going through :code:`iron-gym`::
from CSEC once you hit 50 hacking, you cannot actually pass their test
until your hacking is high enough to install a backdoor on their server.
After you are connected to the :code:`CSEC` server, you can hack it. Note that this
After you are connected to the :code:`CSEC` server, you can backdoor it. Note that this
server requires one open port in order to gain root access. We can open the SSH port
using the :code:`BruteSSH.exe` program we created earlier. In |Terminal|::

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View 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.

View File

@@ -12,7 +12,7 @@ getActionCountRemaining() Netscript Function
This function will return 'Infinity' for actions such as 'Training' and
'Field Analysis'.
This function will return 1 for BlackOps not yet completed regardless of
wether the player has the required rank to attempt the mission or not.
whether the player has the required rank to attempt the mission or not.
Example:

View File

@@ -12,4 +12,4 @@ getActionCurrentLevel() Netscript Function
.. code-block:: javascript
bladeburner.getActionCountRemaining("Contracts", "Tracking"); // returns: 7
bladeburner.getActionCurrentLevel("Contracts", "Tracking"); // returns: 9

View File

@@ -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]

View File

@@ -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.

View File

@@ -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

View File

@@ -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
}

View File

@@ -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.

View File

@@ -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>

View File

@@ -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,

View File

@@ -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>

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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;
}

View File

@@ -1,3 +1,3 @@
.wy-nav-content {
max-width: none;
max-width: none;
}

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

38
electron/main.js Normal file
View 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
View File

@@ -0,0 +1,7 @@
{
"name": "bitburner",
"version": "1.0.0",
"description": "A cyberpunk-themed programming incremental game",
"main": "main.js",
"author": "Daniel Xie"
}

View File

@@ -1,622 +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');
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"> Hacking </button>
</li>
<li id="terminal-tab" class="mainmenu-accordion-panel">
<button id="terminal-menu-link"> Terminal </button>
</li>
<li id="create-script-tab" class="mainmenu-accordion-panel">
<button id="create-script-menu-link"> Create Script </button>
</li>
<li id="active-scripts-tab" class="mainmenu-accordion-panel">
<button id="active-scripts-menu-link"> Active Scripts </button>
</li>
<li id="create-program-tab" class="mainmenu-accordion-panel">
<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"> Character </button>
</li>
<li id="stats-tab" class="mainmenu-accordion-panel">
<button id="stats-menu-link"> Stats </button>
</li>
<li id="factions-tab" class="mainmenu-accordion-panel">
<button id="factions-menu-link"> Factions </button>
<span id="factions-notification" class="notification-off"> </span>
</li>
<li id="augmentations-tab" class="mainmenu-accordion-panel">
<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">
<button id="hacknet-nodes-menu-link"> Hacknet </button>
</li>
<li id="sleeves-tab" class="mainmenu-accordion-panel">
<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">World</button>
</li>
<li id="city-tab" class="mainmenu-accordion-panel">
<button id="city-menu-link"> City </button>
</li>
<li id="travel-tab" class="mainmenu-accordion-panel">
<button id="travel-menu-link"> Travel </button>
</li>
<li id="job-tab" class="mainmenu-accordion-panel">
<button id="job-menu-link"> Job </button>
</li>
<li id="stock-market-tab" class="mainmenu-accordion-panel">
<button id="stock-market-menu-link"> Stock Market </button>
</li>
<li id="bladeburner-tab" class="mainmenu-accordion-panel">
<button id="bladeburner-menu-link"> Bladeburner </button>
</li>
<li id="corporation-tab" class="mainmenu-accordion-panel">
<button id="corporation-menu-link"> Corp </button>
</li>
<li id="gang-tab" class="mainmenu-accordion-panel">
<button id="gang-menu-link"> Gang </button>
</li>
<li id="help-menu-header-li">
<button id="help-menu-header" class="mainmenu-accordion-header"> Help </button>
</li>
<li id="milestones-tab" class="mainmenu-accordion-panel">
<button id="milestones-menu-link"> Milestones </button>
</li>
<li id="tutorial-tab" class="mainmenu-accordion-panel">
<button id="tutorial-menu-link"> Tutorial </button>
</li>
<li id="options-tab" class="mainmenu-accordion-panel">
<button id="options-menu-link"> Options </button>
</li>
<li id="dev-tab" class="mainmenu-accordion-panel">
<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>
<!-- 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>
<!-- 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">
<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">&times;</button>
<h1> Game Options </h1>
<br/>
<div id="game-options-left-panel">
<!-- Netscript execution time -->
<fieldset>
<label for="settingsNSExecTimeRangeVal" class="tooltip">Netscript exec time:&nbsp;
<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:&nbsp;&nbsp;
<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:&nbsp;
<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:&nbsp;&nbsp;&nbsp;
<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>
<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
View 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
View File

@@ -0,0 +1,2 @@
import "regenerator-runtime/runtime";
global.$ = require("jquery");

20
main.bundle.js Normal file

File diff suppressed because one or more lines are too long

1
main.bundle.js.map Normal file

File diff suppressed because one or more lines are too long

6008
main.css Normal file

File diff suppressed because it is too large Load Diff

1
main.css.map Normal file

File diff suppressed because one or more lines are too long

33074
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -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.2"
"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
View 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

Some files were not shown because too many files have changed in this diff Show More