mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-22 01:03:01 +02:00
Compare commits
1034 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 50cf362b3b | |||
| 5ba7b2796d | |||
| 9cbb525da3 | |||
| 0ae8b72188 | |||
| 1e641468f7 | |||
| 3187bb990d | |||
| 4e8bb96f3f | |||
| 97c04a1037 | |||
| 62cd8ffcc6 | |||
| 0d9caac455 | |||
| f701cbffa7 | |||
| 73d0dd98f2 | |||
| c05be66c60 | |||
| b0e4a2a775 | |||
| 86ddc940aa | |||
| 510fcedf90 | |||
| 5cce1c255c | |||
| 854239ceb1 | |||
| 73834d03cd | |||
| cefd499ff6 | |||
| c5713fa6d8 | |||
| b0739f8942 | |||
| a6d7f93111 | |||
| 86678b6290 | |||
| 498a204c88 | |||
| d6584386ff | |||
| b5abbbc240 | |||
| 514b467e27 | |||
| 1fc2e6fd2a | |||
| b758807ba1 | |||
| 14e6dd0158 | |||
| ce578206eb | |||
| 3289f76cd0 | |||
| 3aacab504b | |||
| 6d179be018 | |||
| 86da356478 | |||
| c0e1706128 | |||
| 06f716c0fa | |||
| 07bc697477 | |||
| 60a91cd9f7 | |||
| 97624395c1 | |||
| d49fea4cbc | |||
| 125e9484f7 | |||
| ef17f0d617 | |||
| f7aa393a8f | |||
| 7fb2b8b590 | |||
| cba40c71b2 | |||
| 4254cc2807 | |||
| 8b15adda8a | |||
| b0f20c8c8f | |||
| 5c6c472b64 | |||
| 5170c0e004 | |||
| fe18c55173 | |||
| 69c9b20e68 | |||
| 2d45784102 | |||
| 65cb519801 | |||
| 76e6cb4ecc | |||
| 7b6f9293c7 | |||
| dc2bf871cf | |||
| 1d349c25f7 | |||
| 5484c64a95 | |||
| ec33fb411c | |||
| 2a966d0726 | |||
| 29143999a6 | |||
| a32b8eabe3 | |||
| 43723a3fbb | |||
| ad75fa5ebc | |||
| 4abc1df840 | |||
| da488e586b | |||
| 413333c919 | |||
| 4f219a3214 | |||
| 2e05f14c0d | |||
| 47f54a11c3 | |||
| b8faa9dc0b | |||
| 8fd6b2e7da | |||
| cdd9c174e7 | |||
| e6291a09a0 | |||
| 9ccfca3c72 | |||
| 346024af45 | |||
| 66a2adaeb4 | |||
| c1945ab12e | |||
| 3a7c64872a | |||
| 06edf5b70c | |||
| d2008e86b4 | |||
| 32d1affb50 | |||
| 558b671206 | |||
| a954259e25 | |||
| 64c7831c81 | |||
| 61dd393bb5 | |||
| 28aca06208 | |||
| c79fa240e1 | |||
| e1741778f9 | |||
| 80560ce9f6 | |||
| f9a4eadb71 | |||
| 96f0879230 | |||
| 9c40cf6f28 | |||
| 55901f0574 | |||
| 43f0746be7 | |||
| 8eeed583c2 | |||
| dc518e7032 | |||
| 0c932dd4d1 | |||
| c94ec2f170 | |||
| 6111c50eb1 | |||
| 8977f299e5 | |||
| 2a8b1c2116 | |||
| 9a6b185141 | |||
| 501ce70702 | |||
| 9b94692942 | |||
| 06880c68e1 | |||
| 637f88efcd | |||
| 57a5c8b0b4 | |||
| c3ac16f330 | |||
| c564de40b3 | |||
| 1b26d25a53 | |||
| 7aa2d00460 | |||
| ffa9600302 | |||
| db35fde42e | |||
| d73040fdc5 | |||
| a38df2e613 | |||
| b931ab5566 | |||
| 4e44e784c6 | |||
| aa4451b12d | |||
| 2a52f6fa2b | |||
| 8b7723338b | |||
| 9e62438b43 | |||
| 74906cc9e6 | |||
| 483590ef8b | |||
| 7cd821ef5e | |||
| 5e48530e14 | |||
| bb4de3f62c | |||
| bb546ef6e1 | |||
| 9552ae3ef1 | |||
| d1974a3e70 | |||
| e9b030c450 | |||
| dffc0c5858 | |||
| a9c57e23a5 | |||
| 8db57d7e81 | |||
| 34313e8100 | |||
| 91c7ae53ef | |||
| 44d6845883 | |||
| a3e624deba | |||
| 7355f4212b | |||
| fb37f6b94d | |||
| 4a3201cba3 | |||
| 48eb0df99f | |||
| a282d5d7fd | |||
| 3554da5a53 | |||
| d78309f3b0 | |||
| 9bc20526ff | |||
| 7a2dd16092 | |||
| 0a2dbe66e4 | |||
| dade51a26b | |||
| 505040137f | |||
| db31b70efc | |||
| ce3898367c | |||
| cd0aa192f5 | |||
| 374b81ffae | |||
| 652428b164 | |||
| 93706d31ee | |||
| 38408294cc | |||
| 023f2b8309 | |||
| 61e3959a25 | |||
| 4b6a6300f5 | |||
| e5abf014b2 | |||
| e087420519 | |||
| e1a22016b5 | |||
| bdfa4be71f | |||
| eb2a44e213 | |||
| 23e8bc2e71 | |||
| 48cfa14366 | |||
| aef4aac61a | |||
| f545726980 | |||
| 9471e8d4a0 | |||
| c85ebe9ee2 | |||
| b5d7b3c108 | |||
| be9b595590 | |||
| eacf15b463 | |||
| 425c998435 | |||
| 549c8b61db | |||
| 244e669b2b | |||
| 6f20b0bc30 | |||
| d1cb5b313a | |||
| 1996deaf0a | |||
| 907314e76b | |||
| f359fe661e | |||
| 45f2f85a30 | |||
| fd55155fea | |||
| 70205e06ee | |||
| 1344a17482 | |||
| affc79a499 | |||
| aa0008862c | |||
| 89ea9aaff5 | |||
| 1883bea906 | |||
| 4a3658ea13 | |||
| 812dec6cb2 | |||
| 19a73a2802 | |||
| 92ec4785a9 | |||
| acd51e8328 | |||
| 6013bacc60 | |||
| ff726afcd6 | |||
| cab823bcdf | |||
| 2cb762184f | |||
| 7837454f18 | |||
| 8e764a5524 | |||
| 757b38327f | |||
| 628572cf21 | |||
| 744f3bc067 | |||
| 195dff7c44 | |||
| 4bf3e5a2e4 | |||
| defaa2ccd6 | |||
| 6d70d9708f | |||
| b6924d6889 | |||
| 3fc46c8fc6 | |||
| d7a86ab8b9 | |||
| 407ed70ae3 | |||
| a21c0f4a0b | |||
| 3acf965dad | |||
| 0cf2e2469e | |||
| 7ba37397dd | |||
| 18f40a8d9f | |||
| 22648df857 | |||
| 07721e1cc5 | |||
| b682a442fe | |||
| 4a5fb04d41 | |||
| f628a18551 | |||
| 1890f1fd44 | |||
| 34dda1f252 | |||
| 8e1d31423f | |||
| 05718e00ea | |||
| aba97d2baa | |||
| f0f57150aa | |||
| 088657f162 | |||
| 302e105bdf | |||
| 867dd3ba91 | |||
| 5866f47151 | |||
| 5d9f9d2681 | |||
| 2922e42055 | |||
| 8097364242 | |||
| ac80be1b40 | |||
| bd26e2f9ca | |||
| 3f447b7fa1 | |||
| 206edd8df5 | |||
| e4e539c067 | |||
| ff2d238ea4 | |||
| 96dc1eb1f4 | |||
| f393baaa82 | |||
| 409cb53597 | |||
| 22bf958e2e | |||
| 11a345dd66 | |||
| 4ca54dbe00 | |||
| 63a4a30189 | |||
| 56680d5b17 | |||
| 4c15d4ef42 | |||
| 55769b5005 | |||
| 684a254ac8 | |||
| dc9b5c3341 | |||
| ed461ccca5 | |||
| f895da118d | |||
| 2833b881ea | |||
| 8a0f33daf0 | |||
| 2ba04a602e | |||
| cb3b5b10d7 | |||
| d9bdc5bf5f | |||
| 25c4f9047f | |||
| 7e2fd52ae2 | |||
| fd0b4f7b01 | |||
| 8ed9f8a64d | |||
| 89a85c73ec | |||
| 9adf69afbd | |||
| 2d463b60a0 | |||
| 05fd85002c | |||
| f8b9c50563 | |||
| 70cb4b215d | |||
| 8c2d6616e3 | |||
| ab29f249c1 | |||
| e345edb74f | |||
| a991dbf54f | |||
| fe065d23eb | |||
| 8e4e9dabd9 | |||
| ae15caf45a | |||
| 4ad5b06e19 | |||
| acc215cc61 | |||
| e52a2b19e8 | |||
| 8fba57fd24 | |||
| 8ec585e0b6 | |||
| 38cf4bd3cd | |||
| 4412a8e5b0 | |||
| 0ed93ec0a5 | |||
| dadd4fe03d | |||
| 83f785a791 | |||
| d515db0842 | |||
| 5f8de7e426 | |||
| 2f2923dd8b | |||
| b8b0948a1a | |||
| d84d93ad3b | |||
| 1b63f833be | |||
| 752a330735 | |||
| 4480423b7f | |||
| a9c80f0691 | |||
| 5b4bc0a68f | |||
| 1a5651ae8b | |||
| 3b314f5d1d | |||
| aeb0a7d3e3 | |||
| 75af7a096b | |||
| 7ac1d24d61 | |||
| e79ea4d3cb | |||
| b9dcffdf58 | |||
| 8d1adff2ae | |||
| 2c427b1116 | |||
| 42aa4ca23f | |||
| dd27158cf0 | |||
| 1593b0b3f3 | |||
| 705b154f13 | |||
| 1edcbe88ee | |||
| 609ba34804 | |||
| 99e82cd867 | |||
| bc33f67409 | |||
| 224463e6dd | |||
| 02fd09c5d3 | |||
| 33aeeb7977 | |||
| add19d353e | |||
| 4bedf05b1c | |||
| 5f64187a0f | |||
| 339d9a8d96 | |||
| b45ab657c5 | |||
| c9611cc824 | |||
| 4b051468ad | |||
| 9df926427b | |||
| 8460df99df | |||
| dc890a908b | |||
| e5dcb424a2 | |||
| e906a6331f | |||
| c4617e4b9a | |||
| 76404dd83a | |||
| be08161442 | |||
| f93ee45254 | |||
| 7e8e9e03fc | |||
| 715bc541ec | |||
| cb31954b08 | |||
| 7f1d39a298 | |||
| d5c9306395 | |||
| b0fcdb8363 | |||
| ab8937870c | |||
| 4e22b880bb | |||
| f77ab4e871 | |||
| 0a210555e9 | |||
| 3df298e91e | |||
| b7e07bc7f2 | |||
| 0bc9bfb0f2 | |||
| 5cd72860e3 | |||
| e44813b65d | |||
| 3473fc2ea6 | |||
| 0c0adf29d5 | |||
| c97fece747 | |||
| a2aaf6bd2e | |||
| 2a13db39c7 | |||
| bada8a5f39 | |||
| 6979082be7 | |||
| 1c9542d102 | |||
| 0d5a302580 | |||
| 7bc0764d5d | |||
| bc034bb417 | |||
| ea99166f7f | |||
| 82c3362adc | |||
| e7d77b7569 | |||
| c5af4f8177 | |||
| d0cb0e3f5b | |||
| f7adadd671 | |||
| faa6f75027 | |||
| 3b0cf6714a | |||
| cd43f25bf5 | |||
| 6e670e88e2 | |||
| 20062b11b9 | |||
| d0ca2d8c36 | |||
| 20e41e8006 | |||
| 7ef7fc1b26 | |||
| 6352704608 | |||
| 072f7693f4 | |||
| fbe70f51c2 | |||
| 27e2b2ea65 | |||
| 6320189717 | |||
| 17da325585 | |||
| 5873b5fe19 | |||
| 6d8b52c0d6 | |||
| 8faa7faf8a | |||
| 66a593e06b | |||
| 506122f5b8 | |||
| 91434b7972 | |||
| ba46262426 | |||
| aa91e8aecc | |||
| 2874112946 | |||
| 3f8aa2aa9e | |||
| b9acfde363 | |||
| b4c9655782 | |||
| f50b2a9d9f | |||
| a475e6297e | |||
| cfdf23cd11 | |||
| d6aa331310 | |||
| 306facc0d1 | |||
| 5e11e77282 | |||
| daafdbbddf | |||
| 8501c9bb1b | |||
| 05f3b1c390 | |||
| 7f15a19f12 | |||
| 4011542b97 | |||
| 858b1e7468 | |||
| cfbdae6def | |||
| 05a6f2a20e | |||
| 05bab22807 | |||
| a18bdd6afc | |||
| 3d7cdb4ef9 | |||
| eed915dbbd | |||
| 570e5b17a2 | |||
| 4a7fcda86f | |||
| a63178f30c | |||
| 2914bbb789 | |||
| 1e42f73e2a | |||
| 2d322e7a6a | |||
| 75d77410ea | |||
| 0ad05c7bad | |||
| 69ec6f6679 | |||
| c8dd17d573 | |||
| 1241cc5128 | |||
| e1c29f25e2 | |||
| c9efa977fb | |||
| 6e013e4e6a | |||
| 3a943e0e50 | |||
| f2edb42aca | |||
| e1cb0e529c | |||
| 008b233c9d | |||
| cc9a07c09f | |||
| 2866bfaa70 | |||
| 38880f69e1 | |||
| eb01051ad6 | |||
| 5dd6145d53 | |||
| a652140224 | |||
| aa929b1837 | |||
| 9b501e061a | |||
| 6f3db27373 | |||
| 454a792f0a | |||
| 8d17495e85 | |||
| d3aeda8ad5 | |||
| 65158e4db7 | |||
| fd85a00b8f | |||
| a239f0ad58 | |||
| d936f68c7a | |||
| feebdc8ee5 | |||
| 0eeb868e25 | |||
| d9c9c30fdd | |||
| 294640d27e | |||
| fe25460997 | |||
| f987ff9e2a | |||
| d65cbf07f4 | |||
| 2624e13c34 | |||
| 7c9c4d3f4d | |||
| a2379b21ec | |||
| 68885ceff5 | |||
| 1ae17677c0 | |||
| 67be13c6d6 | |||
| d4349e85b1 | |||
| a721c49e1d | |||
| 2d2c20bfc7 | |||
| ed035a2e89 | |||
| cf72d72bb0 | |||
| 3ba04220e1 | |||
| a72d1aa99f | |||
| 21008ba65a | |||
| a760ede129 | |||
| 717b32b0b4 | |||
| 4b6d049da2 | |||
| 8bb4e8b7cf | |||
| 0d30544a52 | |||
| 361ef31fe7 | |||
| 0de3deee3f | |||
| 94ad7ccf4b | |||
| 4b53d6ecf7 | |||
| 3d2aeb63a0 | |||
| b621359a9e | |||
| 07c0b708d7 | |||
| b372f23b6e | |||
| a8254e7144 | |||
| 02a21cf2d9 | |||
| bcb0606900 | |||
| 42704d8695 | |||
| e75197dee3 | |||
| 9e92df47a5 | |||
| c110c22efb | |||
| c9ab7908a7 | |||
| 3ab306f9d7 | |||
| f08aa8924c | |||
| c4914fa54f | |||
| fa5e2f4964 | |||
| 77eda1fd75 | |||
| c987c91a11 | |||
| feaa74ed34 | |||
| 701fba7ec7 | |||
| 51bd626e88 | |||
| ab4863e7df | |||
| 1a8bcf66cc | |||
| 7bfceb1690 | |||
| 27e22814a9 | |||
| ceb4e304fd | |||
| e2d74f9432 | |||
| 79345a49b4 | |||
| 7066a793a1 | |||
| 2a5cf62168 | |||
| 6495be5705 | |||
| 0d6d05db49 | |||
| 5d59620dce | |||
| 60d95a90d0 | |||
| 51debc60da | |||
| faf625b34d | |||
| 1a8b194341 | |||
| 386f8a11c5 | |||
| 4278191b0e | |||
| 6d2b8b4f6f | |||
| b148b2f0b5 | |||
| 4a9bac99d2 | |||
| 0b3c114cd0 | |||
| 49cc75a575 | |||
| e0d631f8b3 | |||
| 8289c9fc75 | |||
| d66e36b637 | |||
| 6cd7465b82 | |||
| c7125e2e46 | |||
| a564957092 | |||
| 4b8e63f342 | |||
| 480d47eece | |||
| 4de20f8cce | |||
| 4b38d296a8 | |||
| 9ac75d5bf5 | |||
| 6561413137 | |||
| 1fb5105d0a | |||
| b67c03ff8a | |||
| 7db3716256 | |||
| ee5a70901b | |||
| 63b2c77907 | |||
| aa3ad3164c | |||
| 474befa091 | |||
| cd1c1ce145 | |||
| 5aa24f22c4 | |||
| f02c6443cc | |||
| 4497143785 | |||
| 0b3c48827b | |||
| 86de11e794 | |||
| fb87385704 | |||
| b1caea796a | |||
| 2dfd19c9e0 | |||
| 0e24020796 | |||
| ed62a3ebc2 | |||
| 258716388e | |||
| 73ec97db87 | |||
| 567c5dc230 | |||
| 980665b77c | |||
| dcddc0c2d5 | |||
| 6e1100750e | |||
| fea25249a8 | |||
| df457a0c6e | |||
| 3826de72ef | |||
| ee3530d9b9 | |||
| 5098ef6232 | |||
| 1a1a43c1ce | |||
| d6b349b6ff | |||
| 5c92360310 | |||
| 1fbb971d6f | |||
| fa78b3f421 | |||
| 9af9bf58b6 | |||
| 99afb156fa | |||
| 8d550157bc | |||
| 4865563f26 | |||
| cc8de58cff | |||
| 58ada6d128 | |||
| ae6f95b59a | |||
| 99d4f17cdb | |||
| 33f0efd49c | |||
| 988ca37764 | |||
| 0e9d7450c9 | |||
| 27ee65f524 | |||
| 78cd319c21 | |||
| 1d0f193c34 | |||
| 7367167019 | |||
| 08908c87ea | |||
| 392f164f8e | |||
| 3957a517db | |||
| e4b2a6853d | |||
| 697a8119b0 | |||
| b31b3dc735 | |||
| 5848fa53b7 | |||
| 539b206cb5 | |||
| 0f92890f0c | |||
| 056f0213dd | |||
| 41871de26c | |||
| 5803ddc613 | |||
| 99263309ba | |||
| 8a78ee4cf6 | |||
| af46324c6d | |||
| 42aa6525a6 | |||
| 05b1b55e9a | |||
| febf0835c2 | |||
| 94ea0d253c | |||
| 31cf02e8e4 | |||
| 97fdf7cb7f | |||
| 2c7fbc03cf | |||
| 07cca48a17 | |||
| 43d0fcb9f9 | |||
| 99b8dfa0c1 | |||
| 4cdd65e96c | |||
| 9e345b1375 | |||
| 9466017906 | |||
| 9c24f1325f | |||
| 26401fbb93 | |||
| 69dfbb6673 | |||
| 5863797b03 | |||
| 25f546c691 | |||
| 21daab32c1 | |||
| 67e5e413e4 | |||
| 796d91835c | |||
| be8d56ced9 | |||
| 0671c48c86 | |||
| 5e2ed7a79e | |||
| 94388ba6af | |||
| d9e60ea124 | |||
| 306fe97ed8 | |||
| 2750eb293a | |||
| c9b47ac3a6 | |||
| 8c9f78394b | |||
| 643d2525c5 | |||
| cb6e7ef5e9 | |||
| f7f9065472 | |||
| 1e3af43ab3 | |||
| e18aa08eeb | |||
| 5a75581b38 | |||
| 0d3bc1ea1f | |||
| 547324a813 | |||
| fa64186120 | |||
| 9b593758c3 | |||
| a55fd5046b | |||
| 0e177841ac | |||
| 0cd17cd3b3 | |||
| 04c0c87242 | |||
| 43b09a2459 | |||
| 8731a02ef0 | |||
| 30abcec74a | |||
| ae15914efa | |||
| 1aa141b87e | |||
| 55d1ebd0e4 | |||
| 06ac63aece | |||
| f706fee3d1 | |||
| f554398a7f | |||
| abe204109e | |||
| 434dd2b58d | |||
| 4c8d0acbd9 | |||
| 96847b5d27 | |||
| 8facdd2b49 | |||
| 8e2b5cfccb | |||
| 2c7a4f4ce6 | |||
| 1ca52e2b77 | |||
| 2248c083c8 | |||
| 37ec5c733f | |||
| 321dca4993 | |||
| 19f51b684b | |||
| 39b4048603 | |||
| 2b1ec7d573 | |||
| 2b13b5329f | |||
| 6661473adc | |||
| d6a7471e0b | |||
| 9996232751 | |||
| cdd376f2ae | |||
| 00a5085cdf | |||
| 4cd17607e6 | |||
| 1b734be895 | |||
| 6a8aa79396 | |||
| 34b3843e18 | |||
| dd75c1b2d2 | |||
| 6d072d766d | |||
| 7875d1ba93 | |||
| 0e458a8142 | |||
| 8ab571d54d | |||
| d9da1a8568 | |||
| b946886295 | |||
| 3bb74ceebe | |||
| e24c5b3cce | |||
| 527455bada | |||
| efdd8482d7 | |||
| 4180ceae17 | |||
| 9e04aef8d2 | |||
| 0fc6f90863 | |||
| 0cb821b50d | |||
| 14af88c3fc | |||
| 61dded637d | |||
| 4623bb3a0b | |||
| 4f7fb1cd62 | |||
| 0b401ba83b | |||
| 40813d5c4f | |||
| 687a2f8852 | |||
| 150a3b03f4 | |||
| 42935a217d | |||
| 2c2548f856 | |||
| 141f2a8331 | |||
| 5b9d2e36c6 | |||
| 80125d1521 | |||
| ed041743c2 | |||
| f9ff45fbed | |||
| fc5e0ea6a0 | |||
| 66ff040e38 | |||
| 49cc25479e | |||
| 4bd1813b45 | |||
| 8259c1a5b9 | |||
| c793a076db | |||
| e320a8339a | |||
| 1427a0f1ae | |||
| 17315733a7 | |||
| 29d7134859 | |||
| 4ac91f5599 | |||
| a3496cdfa9 | |||
| b88990444b | |||
| e9eae40891 | |||
| 0ec05f3fe2 | |||
| 21611ec571 | |||
| e7fde38bf9 | |||
| c47990ef56 | |||
| 23cefed8d4 | |||
| d86fb0262a | |||
| aef0cc815e | |||
| e0436a4314 | |||
| 1ad0fbe2e1 | |||
| db21010fe4 | |||
| 0535a0c49b | |||
| 6314000bd0 | |||
| a05335d6e2 | |||
| 54114dc6d0 | |||
| 1b6058dd0a | |||
| 75227233f3 | |||
| 8d80ecffd4 | |||
| 57ab1d885b | |||
| 34c2c70a2b | |||
| 0ef09a1c73 | |||
| 264e0b2e1a | |||
| 5755db4979 | |||
| 84b49bb5e9 | |||
| fb89b824d9 | |||
| fee661b451 | |||
| a40d0bb6e0 | |||
| f7f22ac7ef | |||
| 8fba3c3fa4 | |||
| a72560bf25 | |||
| 21211e7d08 | |||
| d627890047 | |||
| a1e0d40963 | |||
| ca8fc54400 | |||
| cf67213c36 | |||
| 51b2175c35 | |||
| 531c0ce5c0 | |||
| ad9c01ac50 | |||
| 0f266eaa42 | |||
| 674ce17834 | |||
| e611ab7bc7 | |||
| 60d6d49c43 | |||
| 75b2806c93 | |||
| 04b57f07a9 | |||
| a2d924e1c6 | |||
| f14f65814a | |||
| 04921520d8 | |||
| 9d1e132d11 | |||
| eb84652e19 | |||
| 7fedd1f1f5 | |||
| ba4169268c | |||
| 5bf21c0ab2 | |||
| 670587a07d | |||
| 4dc206bb3e | |||
| a7389f63b8 | |||
| 8ba63f4951 | |||
| b28f607056 | |||
| 218a9dd250 | |||
| 7a1fdd6c28 | |||
| b69a262faf | |||
| 66c87b1f64 | |||
| 9bc1a4a895 | |||
| 7a0d0b3fec | |||
| dd077152f4 | |||
| 2347e0b1fd | |||
| 188dcbad89 | |||
| eb7004feaa | |||
| 062cd2dc38 | |||
| 2f3e5c79e7 | |||
| bd172434d1 | |||
| afc1347d3a | |||
| b9c292f7cf | |||
| 6df824613e | |||
| de113a7b92 | |||
| 4ec14460b6 | |||
| 3f63d91448 | |||
| 2ae9a3d2a7 | |||
| ae04b7357e | |||
| bf141c7eb0 | |||
| 1503d82e35 | |||
| a75efd9c62 | |||
| 299e964e2b | |||
| 69fbfe87c0 | |||
| 60a229030b | |||
| e27b19ffae | |||
| 5e2c40ea23 | |||
| 8411de8e42 | |||
| 525c0ada55 | |||
| 0e06565e27 | |||
| 5e517d1671 | |||
| 1b57c1f7e0 | |||
| 0cb2fd1a87 | |||
| 08b0c7710d | |||
| f8a085af7a | |||
| c95a926154 | |||
| 5af10c8406 | |||
| 0f2b7517b4 | |||
| ac8565d820 | |||
| 2adcf79264 | |||
| 2bd4892fa8 | |||
| 46862d30fd | |||
| fccf2b5cb4 | |||
| f6af61d15b | |||
| b35d8475e3 | |||
| 04e8bc944e | |||
| d96ad9fa6e | |||
| 5dd32ef4e4 | |||
| 6dde89f3c4 | |||
| 9a9d2e1f81 | |||
| d347bf568e | |||
| 62e2f0582a | |||
| 68eb68a89e | |||
| 13206a8c3e | |||
| cfd78e2d36 | |||
| 8b7f140115 | |||
| 16c8c78b54 | |||
| cbb47772db | |||
| 0642491402 | |||
| c7e34d4a56 | |||
| 8be63be17b | |||
| 08207ac79b | |||
| 6747a509ff | |||
| c7c86240db | |||
| ce0c3d71f4 | |||
| 5bb6a72c90 | |||
| 5a06c60c27 | |||
| 764c2533b4 | |||
| a9cee6f907 | |||
| a10100bf60 | |||
| cedac23dfa | |||
| f7c1d64033 | |||
| 7d6d0eac32 | |||
| 34768591b7 | |||
| 827c79f70c | |||
| 0415c7aa7c | |||
| 0c744d98b9 | |||
| 11cbda6974 | |||
| e284f49747 | |||
| 7777c400a5 | |||
| dae0448744 | |||
| 02a4e85353 | |||
| 3cbf225c98 | |||
| 8006e976a5 | |||
| 5613d371c9 | |||
| 7c9d6669f7 | |||
| c6f0551709 | |||
| f57eed4de1 | |||
| b99711788f | |||
| 08aac8e35d | |||
| e3579b7229 | |||
| 662d0dd5fb | |||
| 77c40b5d67 | |||
| ee759a8dd6 | |||
| ad9c7ec696 | |||
| c9b5aaa2f7 | |||
| b554328a77 | |||
| c421c57e56 | |||
| fb42d5cd79 | |||
| 6203d8d6f4 | |||
| d422028737 | |||
| 136d769d55 | |||
| daaab1d6f1 | |||
| 4f7befb639 | |||
| 9976ed136c | |||
| 8c2e661e08 | |||
| e6e598eeb4 | |||
| 4d9439a007 | |||
| 9951c8b18f | |||
| 800c673839 | |||
| 065544909b | |||
| 4eaf68c940 | |||
| a14a694df3 | |||
| 3ab61cbaf3 | |||
| f49aff05d7 | |||
| e2371a0ef6 | |||
| 6a2b3ee52e | |||
| 5a45e3584d | |||
| 56ce83cce5 | |||
| d126b6d8c5 | |||
| 7172ef6dae | |||
| a8d0b6e13d | |||
| d2d6453a78 | |||
| 89cdecb05f | |||
| 81fdff9068 | |||
| 34a20802c9 | |||
| 6d53ff109b | |||
| 8eab9f3b59 | |||
| f40faadcc4 | |||
| fb129198a6 | |||
| 3eecff1de6 | |||
| d745150c45 | |||
| abe0330dc3 | |||
| 3fad505096 | |||
| b2ac383b69 | |||
| 77cb63e36a | |||
| 7df4aac8e6 | |||
| 50b490ba8d | |||
| 15bd8a6233 | |||
| 20c593b236 | |||
| 52a80ad236 | |||
| b2aafea656 | |||
| 135df8703c | |||
| 4743801e86 | |||
| 4e5ebcfe6f | |||
| 80b703639e | |||
| 0afdba8f38 | |||
| 925e96345d | |||
| db2bf79e3b | |||
| 6f330efc44 | |||
| 708c73fa0f | |||
| c7febd5551 | |||
| ddbdf66d00 | |||
| e572c6dad8 | |||
| ff097db1e2 | |||
| ad12f0e551 | |||
| 93f8785ec6 | |||
| 69124e7146 | |||
| 8a42f6e49c | |||
| 2ac4cd41bb | |||
| 28584c8461 | |||
| 1eddddd14f | |||
| 42e9a368b4 | |||
| 40713a4112 | |||
| 8e79658e67 | |||
| 6efc3ec75e | |||
| 9840e1f4eb | |||
| 7cdca5e813 | |||
| d170693da4 | |||
| 31a9c041b4 | |||
| ce7c2c309c | |||
| 29abffd464 | |||
| ae4b8228f7 | |||
| 04bc2bebdd | |||
| 8f30e60d08 | |||
| e8aa1851c5 | |||
| 7232a786ed | |||
| 2507899762 | |||
| 26149d5a01 | |||
| 670394ca2f | |||
| e0745d7757 | |||
| dc79f7a940 | |||
| bf4d841f88 | |||
| 4c30f107e3 | |||
| c9fe8d9b65 | |||
| 29ea1281e0 | |||
| 3ec54bcdd8 | |||
| 4892f0bd79 | |||
| 62c571ef3a | |||
| 6c57d548ec | |||
| 6c0b5b3ed9 | |||
| f288d982db | |||
| 101834fcaf | |||
| 642c7a107a | |||
| 63da8d709a | |||
| 31e9f65f06 | |||
| 4ce7981cc0 | |||
| d6016f490c | |||
| 9ccdd7f4e5 | |||
| def3846b72 | |||
| c76110b575 | |||
| 3db440fd95 | |||
| 1df0af0fa4 | |||
| f8d65b9240 | |||
| a4fe6d80d6 | |||
| 3a31ebdce3 | |||
| 8b812b92cc | |||
| 753a1f1193 | |||
| 2ce6ff2041 | |||
| 726c36f276 | |||
| a00c253dcb | |||
| 640795dbe9 | |||
| 123628ec0b | |||
| cae28e2d25 | |||
| 486d025572 | |||
| d4816ad0c4 | |||
| e7dbc08e18 | |||
| 0483c809ff | |||
| cd972dabe3 | |||
| e2a353fc8a | |||
| 1b8214b6fa | |||
| af584e8c87 | |||
| 250841df66 | |||
| d9aef91ea3 | |||
| c285d494b9 | |||
| 316a1aa475 | |||
| 56a3660d38 | |||
| e1aec379c1 | |||
| 381ea915f7 | |||
| 619db14622 | |||
| 84423e6309 | |||
| 1d2136da4b | |||
| 802f28082d | |||
| 56441b8e34 | |||
| 5106315128 | |||
| 6ca7f10faf | |||
| 56802fc85e | |||
| 700583a739 | |||
| a290b0bef5 | |||
| 79a06dd91c | |||
| 6cd6f28820 | |||
| dabb5016fc | |||
| 58e38faad6 | |||
| 31e8ca8c8d | |||
| c72519e3ea | |||
| 58333c1b46 | |||
| f0ad090cdc | |||
| 4bd1fce1f6 | |||
| b35e25e5dc | |||
| a8bb345c88 | |||
| bbe4f9c286 | |||
| f9dcefd6ea | |||
| 44c2bab557 | |||
| fbca5a4d8f | |||
| c2ceaa9bdd | |||
| dc402bef68 | |||
| 64272c99fb | |||
| c8377c0bb3 | |||
| 4145ddad39 |
@@ -0,0 +1,3 @@
|
|||||||
|
last 4 versions
|
||||||
|
not dead
|
||||||
|
not ie <= 11
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
node_modules/
|
||||||
|
|
||||||
|
.git
|
||||||
|
.gitattributes
|
||||||
|
.gitignore
|
||||||
|
.editorconfig
|
||||||
|
|
||||||
|
.dockerignore
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
|
||||||
|
*.md
|
||||||
|
Quotes.txt
|
||||||
|
netscript_tests/
|
||||||
@@ -2,3 +2,6 @@ node_modules/
|
|||||||
doc/build/
|
doc/build/
|
||||||
dist/
|
dist/
|
||||||
tests/*.bundle.*
|
tests/*.bundle.*
|
||||||
|
src/ThirdParty/*
|
||||||
|
src/JSInterpreter.js
|
||||||
|
main.bundle.js
|
||||||
+390
-848
File diff suppressed because it is too large
Load Diff
+10
@@ -1,3 +1,5 @@
|
|||||||
|
.DS_Store
|
||||||
|
.vscode
|
||||||
Changelog.txt
|
Changelog.txt
|
||||||
Netburner.txt
|
Netburner.txt
|
||||||
/doc/build
|
/doc/build
|
||||||
@@ -6,3 +8,11 @@ Netburner.txt
|
|||||||
/test/*.map
|
/test/*.map
|
||||||
/test/*.bundle.*
|
/test/*.bundle.*
|
||||||
/test/*.css
|
/test/*.css
|
||||||
|
.cypress
|
||||||
|
|
||||||
|
# tmp folder for electron
|
||||||
|
.package
|
||||||
|
.build
|
||||||
|
|
||||||
|
# editor files
|
||||||
|
.vscode
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
node_modules
|
||||||
|
package.json
|
||||||
|
dist
|
||||||
|
doc/build/
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"trailingComma": "all",
|
||||||
|
"tabWidth": 2,
|
||||||
|
"printWidth": 120
|
||||||
|
}
|
||||||
+70
-60
@@ -1,24 +1,27 @@
|
|||||||
# Contributing to Bitburner
|
# Contributing to Bitburner
|
||||||
|
|
||||||
## In General
|
## In General
|
||||||
|
|
||||||
The game is made better because the community as a whole speaks up about
|
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
|
ways to improve the game. Here's some of the ways you can make your voice
|
||||||
heard:
|
heard:
|
||||||
- [Discord](https://discordapp.com)
|
|
||||||
There is a dedicated Discord instance set up for more free-form chats
|
- [Discord](https://discordapp.com)
|
||||||
between all members of the community. Regular players, heavy scripters,
|
There is a dedicated Discord instance set up for more free-form chats
|
||||||
Bitburner contributors, and everyone in between can be found on the
|
between all members of the community. Regular players, heavy scripters,
|
||||||
server.
|
Bitburner contributors, and everyone in between can be found on the
|
||||||
- [Github Issues](https://github.com/danielyxie/bitburner/issues)
|
server.
|
||||||
Although the term "issues" can have a negative connotation, they are a
|
- [Github Issues](https://github.com/danielyxie/bitburner/issues)
|
||||||
means of communicating with the community. A new Issue can be a
|
Although the term "issues" can have a negative connotation, they are a
|
||||||
interesting new feature that you feel would improve the game. It could be
|
means of communicating with the community. A new Issue can be a
|
||||||
an unexpected behavior within the game. Or because the game is about
|
interesting new feature that you feel would improve the game. It could be
|
||||||
scripting perhaps there is something that is conflicting with the
|
an unexpected behavior within the game. Or because the game is about
|
||||||
browser's Javascript interaction. So please do not be afraid to open a
|
scripting perhaps there is something that is conflicting with the
|
||||||
[new issue](https://github.com/danielyxie/bitburner/issues/new).
|
browser's Javascript interaction. So please do not be afraid to open a
|
||||||
|
[new issue](https://github.com/danielyxie/bitburner/issues/new).
|
||||||
|
|
||||||
## Reporting Bugs
|
## Reporting Bugs
|
||||||
|
|
||||||
The recommended method for reporting a bug is by opening a
|
The recommended method for reporting a bug is by opening a
|
||||||
[Github Issue](https://github.com/danielyxie/bitburner/issues).
|
[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
|
#### How to Submit a Good Bug Report
|
||||||
|
|
||||||
* **Use a clear and descriptive title** for the issue
|
- **Use a clear and descriptive title** for the issue
|
||||||
* **State your browser, your browser's version, and your computer's OS**
|
- **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
|
- **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
|
- **Provide instructions on how to reproduce the bug** in as much detail
|
||||||
as possible. If you cannot reliably reproduce the bug, then just try
|
as possible. If you cannot reliably reproduce the bug, then just try
|
||||||
your best to explain what was happening when the bug occurred
|
your best to explain what was happening when the bug occurred
|
||||||
* **Provide any scripts** that triggered the bug if the issue is Netscript-related
|
- **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**
|
- **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
|
that may be printed there. The Dev Console can be opened on most modern
|
||||||
browsers by pressing F12
|
browsers by pressing F12
|
||||||
|
|
||||||
## As a Developer
|
## As a Developer
|
||||||
|
|
||||||
Anyone is welcome to contribute to Bitburner code. However, please read
|
Anyone is welcome to contribute to Bitburner code. However, please read
|
||||||
the [license](https://github.com/danielyxie/bitburner/blob/dev/license.txt)
|
the [license](https://github.com/danielyxie/bitburner/blob/dev/license.txt)
|
||||||
and the [readme](https://github.com/danielyxie/bitburner/blob/dev/README.md)
|
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.
|
called `npm` is installed as well.
|
||||||
|
|
||||||
#### What are you Allowed to Contribute?
|
#### What are you Allowed to Contribute?
|
||||||
|
|
||||||
Not all code contributions will be accepted. The safest way to ensure
|
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
|
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.
|
run your idea(s)/plan(s) past [danielyxie](https://github.com/danielyxie) first.
|
||||||
You can contact him through:
|
You can contact him through:
|
||||||
|
|
||||||
* Github
|
- Github
|
||||||
* Discord
|
- Discord
|
||||||
* [Reddit](https://www.reddit.com/user/chapt3r/)
|
- [Reddit](https://www.reddit.com/user/chapt3r/)
|
||||||
|
|
||||||
Otherwise, here are some general guidelines for determining what types of
|
Otherwise, here are some general guidelines for determining what types of
|
||||||
changes are okay to contribute:
|
changes are okay to contribute:
|
||||||
|
|
||||||
##### Contributions that Will Most Likely Be Accepted
|
##### Contributions that Will Most Likely Be Accepted
|
||||||
* Bug Fixes
|
|
||||||
* Quality-of-Life Changes
|
- Bug Fixes
|
||||||
* Adding a new, commonly-requested Netscript function
|
- Quality-of-Life Changes
|
||||||
* Fixing or improving UI elements
|
- Adding a new, commonly-requested Netscript function
|
||||||
* Adding game settings/options
|
- Fixing or improving UI elements
|
||||||
* Adding a new Terminal command
|
- Adding game settings/options
|
||||||
* Code Refactors that conform to good/standard practices
|
- Adding a new Terminal command
|
||||||
|
- Code Refactors that conform to good/standard practices
|
||||||
|
|
||||||
##### Contributions that will not be Accepted without prior approval
|
##### 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
|
#### Submitting a Pull Request
|
||||||
|
|
||||||
When submitting a pull request with your code contributions, please abide by
|
When submitting a pull request with your code contributions, please abide by
|
||||||
the following rules:
|
the following rules:
|
||||||
|
|
||||||
- Work in a branch forked from `dev` to isolate the new code
|
- Work in a branch forked from `dev` to isolate the new code
|
||||||
- Ensure you have latest from the [game's main
|
- Ensure you have latest from the [game's main
|
||||||
repository](danielyxie/bitburner@dev)
|
repository](danielyxie/bitburner@dev)
|
||||||
- Rebase your branch if necessary
|
- Rebase your branch if necessary
|
||||||
- Run the game locally to test out your changes
|
- Run the game locally to test out your changes
|
||||||
- When submitting the pull request, make sure that the base fork is
|
- When submitting the pull request, make sure that the base fork is
|
||||||
_danielyxie/bitburner_ and the base is _dev_.
|
_danielyxie/bitburner_ and the base is _dev_.
|
||||||
- If your changes affect the game's UI, attach some screenshots or GIFs showing
|
- If your changes affect the game's UI, attach some screenshots or GIFs showing
|
||||||
the changes to the UI
|
the changes to the UI
|
||||||
- If your changes affect Netscript, provide some
|
- If your changes affect Netscript, provide some
|
||||||
scripts that can be used to test the Netscript changes.
|
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
|
- 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
|
rules enforced across the code base. The command will fail if any of the
|
||||||
linters find a violation.
|
linters find a violation.
|
||||||
- Do not check in any bundled files (`dist\*.bundle.js`) or the `index.html`
|
- 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
|
in the root of the repository. These will be updated as part of official
|
||||||
releases.
|
releases.
|
||||||
|
|
||||||
## As a Documentor
|
## As a Documentor
|
||||||
|
|
||||||
To contribute to and view your changes to the BitBurner documentation, you will
|
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).
|
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
|
Before submitting your code for a pull request, please try to follow these
|
||||||
rules:
|
rules:
|
||||||
- Work in a branch forked from `dev` to isolate the new code
|
|
||||||
- Ensure you have latest from the [game's main
|
- Work in a branch forked from `dev` to isolate the new code
|
||||||
repository](danielyxie/bitburner@dev)
|
- Ensure you have latest from the [game's main
|
||||||
- Rebase your branch if necessary
|
repository](danielyxie/bitburner@dev)
|
||||||
- When submitting the pull request, make sure that the base fork is
|
- Rebase your branch if necessary
|
||||||
_danielyxie/bitburner_ and the base is _dev_.
|
- When submitting the pull request, make sure that the base fork is
|
||||||
- Do not check in any generated files under `doc\`. The documentation is built
|
_danielyxie/bitburner_ and the base is _dev_.
|
||||||
automatically by ReadTheDocs.
|
- Do not check in any generated files under `doc\`. The documentation is built
|
||||||
|
automatically by ReadTheDocs.
|
||||||
|
|||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
FROM node:15.14.0 AS base
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Scripts used in the npm preinstall hook
|
||||||
|
COPY scripts/engines-check.js scripts/semver.js scripts/
|
||||||
|
|
||||||
|
# Adding our dependencies and install before adding the rest of the files
|
||||||
|
# This prevents reinstallation of npm packages for every subsequent code modification
|
||||||
|
ENV npm_config_update_notifier=false
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN npm ci --loglevel=error --no-audit --no-fund && npm rebuild node-sass
|
||||||
|
|
||||||
|
# Adding all the remaining source files
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# We need more than the default 512MB otherwise webpack will throw 'heap out of memory' exceptions
|
||||||
|
# https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes
|
||||||
|
ENV NODE_OPTIONS=--max-old-space-size=1536
|
||||||
|
|
||||||
|
FROM base AS dev
|
||||||
|
# This is the main development build using the file watcher if you mount volumes
|
||||||
|
USER node
|
||||||
|
EXPOSE 8000
|
||||||
|
CMD npm run start:container
|
||||||
|
|
||||||
|
FROM base AS prod-dist
|
||||||
|
# We'll simply build the production dist files here to later reuse in a simple webserver
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM nginx:1.20.0-alpine AS prod
|
||||||
|
WORKDIR /usr/share/nginx/html
|
||||||
|
COPY --from=prod-dist /app/dist ./dist
|
||||||
|
COPY --from=prod-dist /app/index.html /app/favicon.ico /app/license.txt ./
|
||||||
|
EXPOSE 80
|
||||||
+2
-2
@@ -1,13 +1,13 @@
|
|||||||
Collection of Quotes
|
Collection of Quotes
|
||||||
|
|
||||||
The past is relevant only as data
|
The past is relevant only as data.
|
||||||
|
|
||||||
Pull on the new flesh like borrowed gloves and burn your fingers once again.
|
Pull on the new flesh like borrowed gloves and burn your fingers once again.
|
||||||
|
|
||||||
A weapon is a tool. A tool for killing and destroying. And there will be times
|
A weapon is a tool. A tool for killing and destroying. And there will be times
|
||||||
when you must kill and destroy. Then you will choose and equip yourself with the tools
|
when you must kill and destroy. Then you will choose and equip yourself with the tools
|
||||||
that you need. But remember the weakness of weapons. They are an extension --
|
that you need. But remember the weakness of weapons. They are an extension --
|
||||||
You are the killer and destroyer. You are whole, with or without them.
|
you are the killer and destroyer. You are whole, with or without them.
|
||||||
|
|
||||||
For all that we have done, as a civilization, as individuals, the universe is
|
For all that we have done, as a civilization, as individuals, the universe is
|
||||||
not stable, and nor is any single thing within it. Stars consume themselves,
|
not stable, and nor is any single thing within it. Stars consume themselves,
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
# Bitburner
|
# Bitburner
|
||||||
|
|
||||||
Bitburner is a programming-based [incremental game](https://en.wikipedia.org/wiki/Incremental_game)
|
Bitburner is a programming-based [incremental game](https://en.wikipedia.org/wiki/Incremental_game)
|
||||||
that revolves around hacking and cyberpunk themes.
|
that revolves around hacking and cyberpunk themes.
|
||||||
The game can be played at https://danielyxie.github.io/bitburner.
|
The game can be played at https://danielyxie.github.io/bitburner.
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
|
|
||||||
The game's official documentation can be found on [Read The
|
The game's official documentation can be found on [Read The
|
||||||
Docs](http://bitburner.readthedocs.io/). Please note that this is still a
|
Docs](http://bitburner.readthedocs.io/). Please note that this is still a
|
||||||
work-in-progress.
|
work-in-progress.
|
||||||
@@ -16,6 +18,7 @@ For further guidance, please refer to the "As A Documentor" section of
|
|||||||
[CONTRIBUTING](CONTRIBUTING.md).
|
[CONTRIBUTING](CONTRIBUTING.md).
|
||||||
|
|
||||||
# Contribution
|
# Contribution
|
||||||
|
|
||||||
There are many ways to contribute to the game. It can be as simple as fixing
|
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,
|
a typo, correcting a bug, or improving the UI. For guidance on doing so,
|
||||||
please refer to the [CONTRIBUTING](CONTRIBUTING.md) document.
|
please refer to the [CONTRIBUTING](CONTRIBUTING.md) document.
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
## Deploying a new version
|
||||||
|
|
||||||
|
Update the following
|
||||||
|
|
||||||
|
- `src/Constants.ts` `Version` and `LatestUpdate`
|
||||||
|
- `package.json` `version`
|
||||||
|
- `doc/source/conf.py` `version` and `release`
|
||||||
|
- `doc/source/changelog.rst`
|
||||||
|
- post to discord
|
||||||
|
- post to reddit.com/r/Bitburner
|
||||||
|
|
||||||
|
## Deploying `dev` to the Beta Branch
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
## 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`
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: ["@babel/preset-react", "@babel/preset-env", "@babel/preset-typescript"],
|
||||||
|
};
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
@mixin animation($property) {
|
|
||||||
-webkit-animation: $property;
|
|
||||||
-moz-animation: $property;
|
|
||||||
-ms-animation: $property;
|
|
||||||
-o-animation: $property;
|
|
||||||
animation: $property;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin borderRadius($property) {
|
|
||||||
-webkit-border-radius: $property;
|
|
||||||
-moz-border-radius: $property;
|
|
||||||
border-radius: $property;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin boxShadow($value) {
|
|
||||||
-webkit-box-shadow: $value;
|
|
||||||
-moz-box-shadow: $value;
|
|
||||||
box-shadow: $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin keyframes($animationName) {
|
|
||||||
@-webkit-keyframes #{$animationName} {
|
|
||||||
$browser: '-webkit-' !global;
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-moz-keyframes #{$animationName} {
|
|
||||||
$browser: '-moz-' !global;
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-ms-keyframes #{$animationName} {
|
|
||||||
$browser: '-ms-' !global;
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-o-keyframes #{$animationName} {
|
|
||||||
$browser: '-o-' !global;
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes #{$animationName} {
|
|
||||||
$browser: '' !global;
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin transform($property) {
|
|
||||||
-webkit-transform: $property;
|
|
||||||
-moz-transform: $property;
|
|
||||||
-ms-transform: $property;
|
|
||||||
-o-transform: $property;
|
|
||||||
transform: $property;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin userSelect($value) {
|
|
||||||
-webkit-user-select: $value;
|
|
||||||
-moz-user-select: $value;
|
|
||||||
-ms-user-select: $value;
|
|
||||||
user-select: $value;
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
font-family: $fontFamily;
|
|
||||||
}
|
|
||||||
|
|
||||||
*,
|
|
||||||
*:before,
|
|
||||||
*:after {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
$fontFamily: 'Lucida Console', 'Lucida Sans Unicode', 'Fira Mono', 'Consolas', 'Courier New', Courier, monospace, 'Times New Roman';
|
|
||||||
$defaultFontSize: 16px;
|
|
||||||
|
|
||||||
/* COLORS */
|
|
||||||
$hacker-green: #adff2f;
|
|
||||||
$success-green: #3adb76;
|
|
||||||
$alert-red: #ff2929;
|
|
||||||
$money-gold: #ffd700;
|
|
||||||
$light-yellow: #faffdf;
|
|
||||||
|
|
||||||
/* Attributes */
|
|
||||||
$my-stat-hp-color: #dd3434;
|
|
||||||
$my-stat-money-color: $money-gold;
|
|
||||||
$my-stat-hack-color: $hacker-green;
|
|
||||||
$my-stat-physical: $light-yellow;
|
|
||||||
$my-stat-cha-color: #a671d1;
|
|
||||||
$my-stat-int-color: #6495ed;
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
.active-scripts-list {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#active-scripts-container {
|
|
||||||
position: fixed;
|
|
||||||
padding-top: 10px;
|
|
||||||
|
|
||||||
> p {
|
|
||||||
width: 70%;
|
|
||||||
margin: 6px;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.accordion-header {
|
|
||||||
> pre {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-server-header {
|
|
||||||
background-color: #444;
|
|
||||||
font-size: $defaultFontSize * 1.25;
|
|
||||||
color: #fff;
|
|
||||||
margin: 6px 6px 0 6px;
|
|
||||||
padding: 6px;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 60%;
|
|
||||||
text-align: left;
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: '\02795'; /* "plus" sign (+) */
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
color: #fff;
|
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active, &:hover {
|
|
||||||
background-color: #555;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-server-header.active {
|
|
||||||
&:after {
|
|
||||||
content: "\2796"; /* "minus" sign (-) */
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
color: #fff;
|
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-server-panel {
|
|
||||||
margin: 0 6px 6px 6px;
|
|
||||||
padding: 0 6px 6px 6px;
|
|
||||||
width: 55%;
|
|
||||||
margin-left: 5%;
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
div, ul, ul > li {
|
|
||||||
background-color: #555;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-script-header {
|
|
||||||
background-color: #555;
|
|
||||||
border: none;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
cursor: pointer;
|
|
||||||
display: block;
|
|
||||||
outline: none;
|
|
||||||
padding: 4px 25px 4px 10px;
|
|
||||||
position: relative;
|
|
||||||
text-align: left;
|
|
||||||
width: auto;
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: '\02795'; /* "plus" sign (+) */
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
float: right;
|
|
||||||
margin-left: 5px;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0 0 0 var(--my-font-color);
|
|
||||||
position: absolute;
|
|
||||||
bottom: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active:after {
|
|
||||||
content: "\2796"; /* "minus" sign (-) */
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&.active:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: #555;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.active-scripts-script-panel {
|
|
||||||
background-color: #555;
|
|
||||||
display: none;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
padding: 0 18px;
|
|
||||||
width: auto;
|
|
||||||
|
|
||||||
pre, h2, ul, li {
|
|
||||||
background-color: #555;
|
|
||||||
width: auto;
|
|
||||||
color: #fff;
|
|
||||||
margin-left: 5%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
/**
|
|
||||||
* Styling for the Augmentations UI. This is the page that displays all of the
|
|
||||||
* player's owned and purchased Augmentations and Source-Files. It also allows
|
|
||||||
* the player to install Augmentations
|
|
||||||
*/
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
#augmentations-container {
|
|
||||||
position: fixed;
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#augmentations-content {
|
|
||||||
> p {
|
|
||||||
font-size: $defaultFontSize * 0.875;
|
|
||||||
width: 70%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.augmentations-list {
|
|
||||||
button,
|
|
||||||
div {
|
|
||||||
color: var(--my-font-color);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
#bladeburner-container {
|
|
||||||
a,
|
|
||||||
div,
|
|
||||||
p,
|
|
||||||
pre,
|
|
||||||
td {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-action {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
margin: 7px;
|
|
||||||
padding: 7px;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
|
|
||||||
pre {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Whatever action is currently active */
|
|
||||||
.bladeburner-active-action {
|
|
||||||
border: 4px solid #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Action & Skills panel navigation button */
|
|
||||||
%bladeburner-nav-button {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 2px;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-nav-button {
|
|
||||||
@extend %bladeburner-nav-button;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: #3d4044;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-nav-button-inactive {
|
|
||||||
@extend %bladeburner-nav-button;
|
|
||||||
|
|
||||||
text-decoration: none;
|
|
||||||
background-color: #555;
|
|
||||||
cursor: default;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Checkbox for (de)selecting autoleveling */
|
|
||||||
.bbcheckbox {
|
|
||||||
position: relative;
|
|
||||||
display: inline;
|
|
||||||
label {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
background: black;
|
|
||||||
border-width: 1px;
|
|
||||||
border-color: white;
|
|
||||||
border-style: solid;
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
width: 9px;
|
|
||||||
height: 5px;
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
left: 5px;
|
|
||||||
border: 3px solid white;
|
|
||||||
border-top: none;
|
|
||||||
border-right: none;
|
|
||||||
opacity: 0;
|
|
||||||
transform: rotate(-45deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
input[type=checkbox] {
|
|
||||||
margin: 3px;
|
|
||||||
visibility: hidden;
|
|
||||||
&:checked + label:after {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bladeburner Console */
|
|
||||||
.bladeburner-console-div {
|
|
||||||
display: inline-block;
|
|
||||||
width: 40%;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
overflow: auto;
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-console-table {
|
|
||||||
height: auto;
|
|
||||||
overflow: auto;
|
|
||||||
table-layout: fixed;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-console-input-row {
|
|
||||||
transition: height 1s;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-console-input-cell {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-console-input {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
border: 0;
|
|
||||||
background-color: var(--my-background-color);
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
outline: none;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
flex: 1 1 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bladeburner-console-line {
|
|
||||||
word-wrap: break-word;
|
|
||||||
hyphens: auto;
|
|
||||||
-webkit-hyphens: auto;
|
|
||||||
-moz-hyphens: auto;
|
|
||||||
}
|
|
||||||
@@ -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? */
|
|
||||||
}
|
|
||||||
@@ -1,89 +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-hack-wrapper td,
|
|
||||||
#character-agi-wrapper td {
|
|
||||||
border-bottom: 1px #aaa solid;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#character-str-wrapper td,
|
|
||||||
#character-cha-wrapper td {
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#character-hp-wrapper { color: $my-stat-hp-color; }
|
|
||||||
#character-money-wrapper { color: $my-stat-money-color; }
|
|
||||||
#character-hack-wrapper { color: $my-stat-hack-color; }
|
|
||||||
#character-cha-wrapper { color: $my-stat-cha-color; }
|
|
||||||
#character-int-wrapper { color: $my-stat-int-color; }
|
|
||||||
|
|
||||||
.character-overview-btn {
|
|
||||||
@include borderRadius(12px);
|
|
||||||
@include boxShadow(1px 1px 3px #000);
|
|
||||||
color: #cecece;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: $defaultFontSize * 0.875;
|
|
||||||
font-weight: bold;
|
|
||||||
height: 25px;
|
|
||||||
background-color: #000;
|
|
||||||
padding: 5px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.character-quick-options {
|
|
||||||
margin-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.character-overview-btn:hover,
|
|
||||||
.character-overview-btn:focus {
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Customized styling for the Code Mirror editor
|
|
||||||
*/
|
|
||||||
|
|
||||||
#codemirror-form-wrapper {
|
|
||||||
height: 80%;
|
|
||||||
margin: 10px 0px 0px 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.CodeMirror {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
border: 2px solid var(--my-highlight-color);
|
|
||||||
z-index: 1;
|
|
||||||
font-family: $fontFamily;
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Highlight matches
|
|
||||||
*/
|
|
||||||
.cm-matchhighlight {
|
|
||||||
background-color: #8F908A;
|
|
||||||
}
|
|
||||||
|
|
||||||
.CodeMirror-selection-highlight-scrollbar {
|
|
||||||
background-color: #8F908A;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show Invisibles
|
|
||||||
*/
|
|
||||||
.cm-whitespace::before {
|
|
||||||
position: absolute;
|
|
||||||
pointer-events: none;
|
|
||||||
color: #404F7D;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Vim command display
|
|
||||||
*/
|
|
||||||
#codemirror-vim-command-display-wrapper {
|
|
||||||
background-color: white;
|
|
||||||
font-size: 13px;
|
|
||||||
height: 30px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for Corporations
|
|
||||||
* The names/labels refer to "Company Management", which was the old name
|
|
||||||
* for the mechanic before it got changed to avoid confusion with normal
|
|
||||||
* companies
|
|
||||||
*/
|
|
||||||
|
|
||||||
#cmpy-mgmt-container p,
|
|
||||||
#cmpy-mgmt-container a,
|
|
||||||
#cmpy-mgmt-container div,
|
|
||||||
#cmpy-mgmt-container br {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Header tabs */
|
|
||||||
.cmpy-mgmt-header-tab {
|
|
||||||
display: inline-block;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #555;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-header-tab:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-header-tab.current {
|
|
||||||
background-color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Switch between Cities */
|
|
||||||
.cmpy-mgmt-city-tab {
|
|
||||||
display: inline-block;
|
|
||||||
color: #fff;
|
|
||||||
background-color: #555;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-city-tab:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-city-tab.current {
|
|
||||||
background-color: #777;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Panels */
|
|
||||||
#cmpy-mgmt-panel {
|
|
||||||
height: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-industry-left-panel,
|
|
||||||
.cmpy-mgmt-industry-right-panel {
|
|
||||||
display: inline-block;
|
|
||||||
height: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
overflow-x: auto;
|
|
||||||
overflow: visible;
|
|
||||||
top: 10px;
|
|
||||||
width: 45%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-industry-overview-panel {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
display: inline-block;
|
|
||||||
padding: 3px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-employee-panel {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
display: block;
|
|
||||||
padding: 3px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-warehouse-panel {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 3px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hiring new employees */
|
|
||||||
.cmpy-mgmt-find-employee-option {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
margin: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-find-employee-option:hover {
|
|
||||||
background-color: #3d4044;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Warehouse */
|
|
||||||
.cmpy-mgmt-warehouse-material-div {
|
|
||||||
padding: 2px;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-warehouse-product-div {
|
|
||||||
padding: 2px;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Exporting materials/products */
|
|
||||||
.cmpy-mgmt-existing-export {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
border-radius: 25px;
|
|
||||||
margin: 4px;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-existing-export:hover {
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Corporation Upgrades */
|
|
||||||
.cmpy-mgmt-upgrade-container {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
width: 60%;
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-upgrade-header {
|
|
||||||
margin: 6px;
|
|
||||||
padding: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-upgrade-div {
|
|
||||||
display: inline-block;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 6px;
|
|
||||||
border-radius: 25px;
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.cmpy-mgmt-upgrade-div:hover {
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Industry Upgrades */
|
|
||||||
.industry-purchases-and-upgrades-header {
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Advertising */
|
|
||||||
.cmpy-mgmt-advertising-info {
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Research */
|
|
||||||
#corporation-research-popup-box-content {
|
|
||||||
overflow-x: auto !important;
|
|
||||||
overflow-y: auto !important;
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
.add-exp-button {
|
|
||||||
margin-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.remove-exp-button {
|
|
||||||
margin-left:0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.exp-input {
|
|
||||||
margin-right: 0px;
|
|
||||||
margin-left:0px;
|
|
||||||
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
|
|
||||||
padding: 2px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-center {
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.touch-right {
|
|
||||||
margin-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.touch-left {
|
|
||||||
margin-left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.touch-sides {
|
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 0px;
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
/* Styling for the game options/settings
|
|
||||||
*
|
|
||||||
* Styling for the actual Game Options popup box can be found in popupboxes.scss
|
|
||||||
* This stylesheet is for everything inside the Game Options pop-up box
|
|
||||||
*/
|
|
||||||
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
#game-options-right-panel {
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
width: 46%;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
display: inline-block;
|
|
||||||
width: 46%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for the Gang mechanic UI (BitNode-2)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#gang-container {
|
|
||||||
position: fixed;
|
|
||||||
padding: 6px;
|
|
||||||
|
|
||||||
p, pre {
|
|
||||||
font-size: $defaultFontSize * 0.9375;
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#gang-management-subpage > p {
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gang-member-info-div {
|
|
||||||
background-color: #555;
|
|
||||||
display: inline;
|
|
||||||
float: left;
|
|
||||||
width: 30%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Showing owned upgrades in the Equipment Box
|
|
||||||
*/
|
|
||||||
|
|
||||||
.gang-owned-upgrades-div {
|
|
||||||
display: inline-block;
|
|
||||||
margin-left: 6px;
|
|
||||||
width: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gang-owned-upgrade {
|
|
||||||
border: 1px solid white;
|
|
||||||
font-size: 12px;
|
|
||||||
margin: 1px;
|
|
||||||
padding: 1px;
|
|
||||||
}
|
|
||||||
Vendored
-6
File diff suppressed because one or more lines are too long
@@ -1,75 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for the Hacknet Nodes UI Page
|
|
||||||
*/
|
|
||||||
|
|
||||||
#hacknet-nodes-container {
|
|
||||||
position: fixed;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hacknet-general-info {
|
|
||||||
margin: 10px;
|
|
||||||
width: 70vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-container li {
|
|
||||||
float: left;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
&.hacknet-node {
|
|
||||||
$boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
|
|
||||||
@include boxShadow($boxShadowArgs);
|
|
||||||
|
|
||||||
margin: 6px;
|
|
||||||
padding: 7px;
|
|
||||||
width: 35vw;
|
|
||||||
border: 2px solid var(--my-highlight-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-list {
|
|
||||||
list-style: none;
|
|
||||||
width: 82vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-money {
|
|
||||||
margin: 10px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-money-multipliers-div {
|
|
||||||
display: inline-block;
|
|
||||||
width: 70vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-multipliers {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacknet-nodes-purchase-button {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hacknet-node-container {
|
|
||||||
display: inline-table;
|
|
||||||
|
|
||||||
.row {
|
|
||||||
display: table-row;
|
|
||||||
height: 30px;
|
|
||||||
|
|
||||||
p {
|
|
||||||
display: table-cell;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.upgradable-info {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 4px; /* Don't want the vertical margin/padding, just left & right */
|
|
||||||
padding: 0 4px;
|
|
||||||
width: $defaultFontSize * 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,71 +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;
|
|
||||||
}
|
|
||||||
-111
@@ -1,111 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "reset";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
@include keyframes(LOADERSPINNER) {
|
|
||||||
0% {
|
|
||||||
#{$browser}transform: translate(-50%, -50%) rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
#{$browser}transform: translate(-50%, -50%) rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include keyframes(LOADERLABEL) {
|
|
||||||
0% {
|
|
||||||
opacity: 1.0;
|
|
||||||
#{$browser}transform: translate(-50%, -50%) scale(1.0);
|
|
||||||
}
|
|
||||||
5% {
|
|
||||||
opacity: 0.5;
|
|
||||||
#{$browser}transform: translate(-50%, -50%) scale(0.5);
|
|
||||||
}
|
|
||||||
95% {
|
|
||||||
opacity: 0.5;
|
|
||||||
#{$browser}transform: translate(-50%, -50%) scale(0.5);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
opacity: 1.0;
|
|
||||||
#{$browser}transform: translate(-50%, -50%) scale(1.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderoverlay {
|
|
||||||
$spinnerBoxSize: 200px;
|
|
||||||
$themeColor: #6f3;
|
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: #000;
|
|
||||||
color: $themeColor;
|
|
||||||
|
|
||||||
%spinnerBox {
|
|
||||||
border: 20px solid rgba(0, 0, 0, 0);
|
|
||||||
border-top-color: $themeColor;
|
|
||||||
border-bottom-color: $themeColor;
|
|
||||||
border-radius: 1000px;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderspinner:before,
|
|
||||||
.loaderspinner:after {
|
|
||||||
content: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderspinner {
|
|
||||||
@extend %spinnerBox;
|
|
||||||
@include animation(LOADERSPINNER 5s linear infinite);
|
|
||||||
|
|
||||||
width: $spinnerBoxSize;
|
|
||||||
height: $spinnerBoxSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderspinner:before {
|
|
||||||
@extend %spinnerBox;
|
|
||||||
@include animation(LOADERSPINNER 10s linear infinite);
|
|
||||||
|
|
||||||
width: $spinnerBoxSize * 0.8;
|
|
||||||
height: $spinnerBoxSize * 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderspinner:after {
|
|
||||||
@extend %spinnerBox;
|
|
||||||
@include animation(LOADERSPINNER 5s linear infinite);
|
|
||||||
|
|
||||||
width: $spinnerBoxSize * 0.6;
|
|
||||||
height: $spinnerBoxSize * 0.6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.loaderlabel {
|
|
||||||
@include animation(LOADERLABEL 5s linear infinite);
|
|
||||||
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: $defaultFontSize * 1.375;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 2px;
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.killAllMessage {
|
|
||||||
position: absolute;
|
|
||||||
top: 95%;
|
|
||||||
left: 50%;
|
|
||||||
-webkit-transform: translateX(-50%);
|
|
||||||
-moz-transform: translateX(-50%);
|
|
||||||
-ms-transform: translateX(-50%);
|
|
||||||
-o-transform: translateX(-50%);
|
|
||||||
transform: translateX(-50%);
|
|
||||||
}
|
|
||||||
.killAllMessageWrapperHidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.killAllMessageWrapperShow {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for the main navigation menu on the left-hand-side
|
|
||||||
*/
|
|
||||||
|
|
||||||
.mainmenu {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 10%;
|
|
||||||
position: fixed;
|
|
||||||
height: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
border: 0;
|
|
||||||
border-bottom: 1px solid #000;
|
|
||||||
border-radius: 0;
|
|
||||||
background-color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Default buttons */
|
|
||||||
.mainmenu > li a,
|
|
||||||
.mainmenu > li button {
|
|
||||||
display: block;
|
|
||||||
color: #e6e6e6;
|
|
||||||
background-color: #555;
|
|
||||||
padding: 12px 8px;
|
|
||||||
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 100%;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu.classic > li a,
|
|
||||||
.mainmenu.classic > li button {
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu.compact > li a,
|
|
||||||
.mainmenu.compact > li button {
|
|
||||||
display: block;
|
|
||||||
color: #e6e6e6;
|
|
||||||
background-color: #555;
|
|
||||||
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
width: 100%;
|
|
||||||
text-align: left;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hovering makes them lighter */
|
|
||||||
.mainmenu > li a:hover,
|
|
||||||
.mainmenu > li a:hover:not(.active),
|
|
||||||
.mainmenu > li a:focus {
|
|
||||||
background-color: #777;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu > li button:hover,
|
|
||||||
.mainmenu > li button:hover:not(.active) {
|
|
||||||
background-color: #777;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Panel headers can become active, and they are "lighter" than the rest */
|
|
||||||
.mainmenu > li a.active,
|
|
||||||
.mainmenu > li button.active {
|
|
||||||
background-color: #777;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu > li a.active:hover,
|
|
||||||
.mainmenu > li button.active:hover {
|
|
||||||
background-color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
#hacking-menu-header-li,
|
|
||||||
#character-menu-header-li,
|
|
||||||
#world-menu-header-li,
|
|
||||||
#help-menu-header-li {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Accordion Outline */
|
|
||||||
.mainmenu-accordion-header,
|
|
||||||
.mainmenu-accordion-header-compact {
|
|
||||||
outline: 2px solid #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu-accordion-header-classic {
|
|
||||||
border: 2px solid #fff;
|
|
||||||
padding: 16px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Plus and minus signs */
|
|
||||||
.mainmenu-accordion-header:after,
|
|
||||||
.mainmenu-accordion-header-compact:after {
|
|
||||||
content: '\02795';
|
|
||||||
float: right;
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 25%;
|
|
||||||
right: 3px;
|
|
||||||
color: transparent;
|
|
||||||
text-shadow: 0 0 0 #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu-accordion-header-classic:after {
|
|
||||||
content: '\02795';
|
|
||||||
float: right;
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
color: #fff;
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mainmenu-accordion-header.opened,
|
|
||||||
.mainmenu-accordion-header-classic.opened,
|
|
||||||
.mainmenu-accordion-header-compact.opened {
|
|
||||||
background-color: #222 !important;
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: "\2796";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Slide down transition */
|
|
||||||
.mainmenu-accordion-panel {
|
|
||||||
max-height: 0;
|
|
||||||
opacity: 1;
|
|
||||||
transition: max-height 0.2s ease-out;
|
|
||||||
}
|
|
||||||
@@ -1,188 +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;
|
|
||||||
padding: 6px;
|
|
||||||
|
|
||||||
span {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#infiltration-left-panel,
|
|
||||||
#infiltration-right-panel {
|
|
||||||
display: inline-block;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
width: 35%;
|
|
||||||
height: 75%;
|
|
||||||
top: 10px;
|
|
||||||
overflow-y: auto;
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#infiltration-faction-select {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#infiltration-left-panel p,
|
|
||||||
#infiltration-right-panel p {
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#infiltration-buttons {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#infiltration-buttons .a-link-button {
|
|
||||||
display: inline;
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/* css for Missions */
|
|
||||||
|
|
||||||
/* Hacking missions */
|
|
||||||
#mission-container {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
|
|
||||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
|
|
||||||
grid-gap: 2.5%;
|
|
||||||
height: 90%;
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
padding-right: 10px;
|
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-node {
|
|
||||||
z-index: 5;
|
|
||||||
background-color: #808080;
|
|
||||||
align-self: center;
|
|
||||||
justify-self: center;
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
p {
|
|
||||||
@include userSelect(none);
|
|
||||||
|
|
||||||
margin-top: 8px;
|
|
||||||
color: #fff;
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-player-node {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #00f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-player-node-active {
|
|
||||||
border: 2px solid #fff;
|
|
||||||
background-color: #66f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-enemy-node {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #f00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-cpu-node {
|
|
||||||
@include borderRadius(50%);
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-firewall-node {
|
|
||||||
width: 90%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-database-node {
|
|
||||||
@include transform(skew(20deg));
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 90%;
|
|
||||||
|
|
||||||
p {
|
|
||||||
@include transform(skew(-20deg));
|
|
||||||
@include userSelect(none);
|
|
||||||
|
|
||||||
color: #fff;
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
margin-top: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-transfer-node {
|
|
||||||
@include transform(skew(-20deg));
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 90%;
|
|
||||||
|
|
||||||
p {
|
|
||||||
@include transform(skew(20deg));
|
|
||||||
@include userSelect(none);
|
|
||||||
|
|
||||||
color: #fff;
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
margin-top: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-spam-node,
|
|
||||||
.hack-mission-shield-node {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Non-map related DOM elements */
|
|
||||||
|
|
||||||
/* Element at the top of the Hacking Mission page (intro page, start button, guide buttons, etc.) */
|
|
||||||
.hack-mission-header-element {
|
|
||||||
margin: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hack-mission-action-buttons-container {
|
|
||||||
border: 2px solid #fff;
|
|
||||||
}
|
|
||||||
@@ -1,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;
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for the Red Pill screen (the BitNode selection UI)
|
|
||||||
*/
|
|
||||||
#red-pill-container {
|
|
||||||
position: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bitnode {
|
|
||||||
&.level-0 {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.level-1 {
|
|
||||||
color: yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.level-2 {
|
|
||||||
color: #48D1CC;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.level-3 {
|
|
||||||
color: blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.unimplemented {
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/**
|
|
||||||
* Styling for the Re-Sleeving Page
|
|
||||||
*/
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
.resleeve-container {
|
|
||||||
border: 1px solid white;
|
|
||||||
margin: 4px;
|
|
||||||
width: 75%;
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.resleeve-panel {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.resleeve-aug-selector {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
|
|
||||||
option {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Styling for Script Editor (both Ace and CodeMirror)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#script-editor-container {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ace-editor {
|
|
||||||
margin: 10px;
|
|
||||||
height: 80%;
|
|
||||||
width: 100%;
|
|
||||||
margin-left: 6px;
|
|
||||||
padding-left: 6px;
|
|
||||||
padding-top: 6px;
|
|
||||||
padding-bottom: 6px;
|
|
||||||
border: 2px solid var(--my-highlight-color);
|
|
||||||
z-index: 1;
|
|
||||||
font-family: $fontFamily;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This temp element is used for auto adjusting filename field */
|
|
||||||
.tmp-element {
|
|
||||||
visibility: hidden;
|
|
||||||
white-space: pre;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-container {
|
|
||||||
position: fixed;
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-buttons-wrapper {
|
|
||||||
width: 100%;
|
|
||||||
padding-right: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-wrapper {
|
|
||||||
height: 100%;
|
|
||||||
width: 70%;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-filename-wrapper {
|
|
||||||
background-color: #555;
|
|
||||||
margin-left: 6px;
|
|
||||||
margin-right: 0;
|
|
||||||
padding-left: 6px;
|
|
||||||
width: 100%;
|
|
||||||
border: 2px solid var(--my-highlight-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-filename-tag {
|
|
||||||
display: inline-block;
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-bottom: 0;
|
|
||||||
float: center;
|
|
||||||
background-color: #555;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-filename {
|
|
||||||
$boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
|
|
||||||
@include boxShadow($boxShadowArgs);
|
|
||||||
|
|
||||||
background-color: #555;
|
|
||||||
border: 2px solid var(--my-highlight-color);
|
|
||||||
color: #fff;
|
|
||||||
display: inline-block;
|
|
||||||
float: center;
|
|
||||||
margin: 4px;
|
|
||||||
padding: 2px;
|
|
||||||
resize: none;
|
|
||||||
width: 60%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-status {
|
|
||||||
float: left;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-options-panel {
|
|
||||||
position: absolute;
|
|
||||||
right: 9%;
|
|
||||||
bottom: 15%;
|
|
||||||
border: 2px solid #fff;
|
|
||||||
width: 19%;
|
|
||||||
background-color: #444;
|
|
||||||
padding: 2px;
|
|
||||||
overflow: auto;
|
|
||||||
z-index: 1;
|
|
||||||
color: #fff;
|
|
||||||
max-height: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#script-editor-options-panel fieldset {
|
|
||||||
margin-top: 8px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
padding: 2px;
|
|
||||||
font-size: $defaultFontSize * 0.75;
|
|
||||||
|
|
||||||
input {
|
|
||||||
margin: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Specific overrides for Ace Editor */
|
|
||||||
.ace_line,
|
|
||||||
.ace_line * {
|
|
||||||
background-color: transparent;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ace_text-input {
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Specified overrides for Code mirror Editor are defined in codemirror-override.scss */
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
/**
|
|
||||||
* Styling for the Sleeves Management page
|
|
||||||
*/
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
.sleeve-container {
|
|
||||||
border: 1px solid white;
|
|
||||||
margin: 4px;
|
|
||||||
width: 75%;
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: $defaultFontSize * 0.875;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sleeves-page-info {
|
|
||||||
display: "block";
|
|
||||||
width: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sleeve-panel {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 2px;
|
|
||||||
|
|
||||||
select {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
#stock-market-container {
|
|
||||||
position: fixed;
|
|
||||||
padding: 6px;
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
font-size: $defaultFontSize * 0.875;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-info-and-purchases {
|
|
||||||
> h2 {
|
|
||||||
display: block;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
> p {
|
|
||||||
display: block;
|
|
||||||
margin-left: 10px;
|
|
||||||
width: 70%;
|
|
||||||
}
|
|
||||||
|
|
||||||
> a, > button {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#stock-market-list {
|
|
||||||
list-style: none;
|
|
||||||
|
|
||||||
li {
|
|
||||||
button {
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#stock-market-watchlist-filter {
|
|
||||||
display: block;
|
|
||||||
margin: 5px 5px 5px 10px;
|
|
||||||
padding: 4px;
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-input {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 4px;
|
|
||||||
margin: 2px;
|
|
||||||
background-color: #000;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-price-movement-warning {
|
|
||||||
border: 1px solid white;
|
|
||||||
color: red;
|
|
||||||
margin: 2px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-position-text {
|
|
||||||
color: #fff;
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: #fff;
|
|
||||||
display: inline-block;
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-order-list {
|
|
||||||
overflow-y: auto;
|
|
||||||
max-height: 100px;
|
|
||||||
|
|
||||||
li {
|
|
||||||
color: #fff;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-market-order-cancel-btn {
|
|
||||||
background-color: #000;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
margin: 2px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
-338
@@ -1,338 +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 {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.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 {
|
|
||||||
display: inline-block;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 2;
|
|
||||||
-webkit-animation: status-text 3s 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#status-text-container {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.smallfont {
|
|
||||||
font-size: $defaultFontSize * 0.8125;
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
@import "theme";
|
|
||||||
|
|
||||||
#terminal-container {
|
|
||||||
position: fixed;
|
|
||||||
margin-left: 10%;
|
|
||||||
height: 100%;
|
|
||||||
width: 99%;
|
|
||||||
overflow: auto;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal {
|
|
||||||
padding-top: 10px;
|
|
||||||
padding-left: 10px;
|
|
||||||
height: auto;
|
|
||||||
width: 70%;
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
overflow: auto;
|
|
||||||
overflow-y: scroll;
|
|
||||||
background-color: var(--my-background-color);
|
|
||||||
table-layout: fixed;
|
|
||||||
|
|
||||||
.prompt {
|
|
||||||
color: var(--my-prompt-color);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal-input {
|
|
||||||
background-color: var(--my-background-color);
|
|
||||||
color: var(--my-font-color);
|
|
||||||
transition: height 1s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.terminal-input {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
border: 0;
|
|
||||||
background-color: var(--my-background-color);
|
|
||||||
font-size: $defaultFontSize;
|
|
||||||
outline: none;
|
|
||||||
color: var(--my-font-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.terminal-line {
|
|
||||||
width: 70%;
|
|
||||||
word-wrap: break-word;
|
|
||||||
hyphens: auto;
|
|
||||||
-webkit-hyphens: auto;
|
|
||||||
-moz-hyphens: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal-input-td {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal-input-td textarea {
|
|
||||||
overflow: hidden;
|
|
||||||
resize: none;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal-input-header {
|
|
||||||
white-space: pre;
|
|
||||||
}
|
|
||||||
|
|
||||||
#terminal-input-text-box {
|
|
||||||
margin-left: 2px;
|
|
||||||
flex: 1 1 auto;
|
|
||||||
}
|
|
||||||
@@ -1,87 +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;
|
|
||||||
}
|
|
||||||
@@ -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,.5);
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Treant > .researched {
|
|
||||||
background-color: #666;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Treant > .locked > div {
|
|
||||||
color: red;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Treant > .node > div {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Treant > .unlocked:hover {
|
|
||||||
background-color: #666;
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
@import "mixins";
|
|
||||||
@import "theme";
|
|
||||||
|
|
||||||
/* Both Work in progress and BitNode stuff */
|
|
||||||
.generic-fullscreen-container {
|
|
||||||
color: var(--my-font-color);
|
|
||||||
width: 99%;
|
|
||||||
height: 100%;
|
|
||||||
overflow-y: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.generic-fullscreen-container-scroll {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#work-in-progress-container {
|
|
||||||
position: fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
#work-in-progress-text {
|
|
||||||
color: var(--my-font-color);
|
|
||||||
width: 70%;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#work-in-progress-cancel-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-in-progress-cancel-button:hover,
|
|
||||||
#work-in-progress-cancel-button:focus {
|
|
||||||
color: #fff;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cinematic-text-container {
|
|
||||||
position: fixed;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"baseUrl": "http://localhost:8000",
|
||||||
|
"fixturesFolder": false,
|
||||||
|
"trashAssetsBeforeRuns": true,
|
||||||
|
"screenshotsFolder": ".cypress/screenshots",
|
||||||
|
"videosFolder": ".cypress/videos",
|
||||||
|
"videoUploadOnPasses": false,
|
||||||
|
"viewportWidth": 1980,
|
||||||
|
"viewportHeight": 1080
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -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
|
||||||
|
};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import "@testing-library/cypress/add-commands";
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
export {};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.visit("/");
|
||||||
|
cy.clearLocalStorage();
|
||||||
|
cy.window().then((win) => {
|
||||||
|
win.indexedDB.deleteDatabase("bitburnerSave");
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -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')
|
||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -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([362,0]),o()}({305:function(n,t,o){},307:function(n,t,o){},309:function(n,t,o){},311:function(n,t,o){},313:function(n,t,o){},315:function(n,t,o){},317:function(n,t,o){},319:function(n,t,o){},321:function(n,t,o){},323:function(n,t,o){},325:function(n,t,o){},327:function(n,t,o){},329:function(n,t,o){},331:function(n,t,o){},333:function(n,t,o){},335:function(n,t,o){},337:function(n,t,o){},339:function(n,t,o){},341:function(n,t,o){},343:function(n,t,o){},345:function(n,t,o){},347:function(n,t,o){},349:function(n,t,o){},351:function(n,t,o){},353:function(n,t,o){},355:function(n,t,o){},357:function(n,t,o){},359:function(n,t,o){},362:function(n,t,o){"use strict";o.r(t);o(361),o(359),o(357),o(355),o(353),o(351),o(349),o(347),o(345),o(343),o(341),o(339),o(337),o(335),o(333),o(331),o(329),o(327),o(325),o(323),o(321),o(319),o(317),o(315),o(313),o(311),o(309),o(307),o(305)}});
|
!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
|
//# sourceMappingURL=engineStyle.bundle.js.map
|
||||||
Vendored
+1993
-805
File diff suppressed because it is too large
Load Diff
Vendored
+262
-103
File diff suppressed because one or more lines are too long
Vendored
-5527
File diff suppressed because one or more lines are too long
@@ -56,8 +56,3 @@ through destroying BitNodes is:
|
|||||||
|
|
||||||
* Source-Files
|
* Source-Files
|
||||||
* Scripts on the home computer
|
* Scripts on the home computer
|
||||||
|
|
||||||
BitNode Details
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Duplicate Sleeves. It is a numeral value between 1 and 100, and it affects how m
|
|||||||
is earned when the sleeve is performing a task.
|
is earned when the sleeve is performing a task.
|
||||||
|
|
||||||
Let N be the sleeve's synchronization. When the sleeve earns experience by performing
|
Let N be the sleeve's synchronization. When the sleeve earns experience by performing
|
||||||
a task, both the sleeve and the player's original host consciousness of N% of the
|
a task, both the sleeve and the player's original host consciousness gain N% of the
|
||||||
amount of experience normally earned by the task. All of the player's other sleeves
|
amount of experience normally earned by the task. All of the player's other sleeves
|
||||||
earn ((N/100)^2 * 100)% of the experience.
|
earn ((N/100)^2 * 100)% of the experience.
|
||||||
|
|
||||||
|
|||||||
@@ -15,73 +15,53 @@ of level 3.
|
|||||||
List of all Source-Files
|
List of all Source-Files
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-1: Source Genesis | * Lets the player start with 32 GB of RAM on home computer |
|
| BitNode-1: Source Genesis | * Lets the player start with 32 GB of RAM on home computer. |
|
||||||
| | * Increases all of the player's multipliers by 16%/24%/28% |
|
| | * Increases all of the player's multipliers by 16%/24%/28%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-2: Rise of the Underworld | * Increases the player's crime success rate, crime money, and |
|
| BitNode-2: Rise of the Underworld | * Lets the player create Gangs in other BitNodes (although some |
|
||||||
| | charisma multipliers by 24%/36%/42% |
|
| | BitNodes will disable this mechanic). |
|
||||||
|
| | * Increases the player's crime success rate, crime money, and |
|
||||||
|
| | charisma multipliers by 24%/36%/42%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-3: Corporatocracy | * Lets the player create Corporations in other BitNodes (although some |
|
| BitNode-3: Corporatocracy | * Lets the player create Corporations in other BitNodes (although some |
|
||||||
| | BitNodes will disable this mechanic) |
|
| | BitNodes will disable this mechanic). |
|
||||||
| | * Increases the player's charisma and company salary multipliers by 8%/12%/14% |
|
| | * Increases the player's charisma and company salary multipliers by 8%/12%/14%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-4: The Singularity | * Lets the player access and use Netscript Singularity Functions in other BitNodes. |
|
| BitNode-4: The Singularity | * Lets the player access and use Netscript Singularity Functions in other BitNodes. |
|
||||||
| | * Each level of this Source-File opens up more of the Singularity Functions to use |
|
| | * Each level of this Source-File opens up more of the Singularity Functions to use. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-5: Artificial Intelligence | * Unlocks :ref:`gameplay_intelligence` |
|
| BitNode-5: Artificial Intelligence | * Unlocks :ref:`gameplay_intelligence`. |
|
||||||
| | * Unlocks :js:func:`getBitNodeMultipliers` Netscript function |
|
| | * Unlocks :js:func:`getBitNodeMultipliers` and :js:func:`getServer` |
|
||||||
| | * Increases all of the player's hacking-related multipliers by 8%/12%/14% |
|
| | Netscript functions, as well as :ref:`netscriptformulas`. |
|
||||||
|
| | * Increases all of the player's hacking-related multipliers by 8%/12%/14%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-6: Bladeburners | * Unlocks the Bladeburner feature in other BitNodes |
|
| BitNode-6: Bladeburners | * Unlocks the Bladeburner feature in other BitNodes. |
|
||||||
| | * Increases all of the player's level and experience gain rate multipliers for |
|
| | * Increases all of the player's level and experience gain rate multipliers for |
|
||||||
| | combat stats by 8%/12%/14% |
|
| | combat stats by 8%/12%/14%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-7: Bladeburners 2079 | * Allows the player to access the :ref:`netscript_bladeburnerapi` in other BitNodes |
|
| BitNode-7: Bladeburners 2079 | * Allows the player to access the :ref:`netscript_bladeburnerapi` in other BitNodes.|
|
||||||
| | * Increases all of the player's Bladeburner multipliers by 8%/12%/14% |
|
| | * Increases all of the player's Bladeburner multipliers by 8%/12%/14%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-8: Ghost of Wall Street | * Increases the player's hacking growth multiplier by 12%/18%/21% |
|
| BitNode-8: Ghost of Wall Street | * Increases the player's hacking growth multiplier by 12%/18%/21%. |
|
||||||
| | * Level 1 grants permanent access to :ref:`WSE <gameplay_stock_market>` and |
|
| | * Level 1 grants permanent access to :ref:`WSE <gameplay_stock_market>` and |
|
||||||
| | :ref:`TIX API <netscript_tixapi>` |
|
| | :ref:`TIX API <netscript_tixapi>`. |
|
||||||
| | * Level 2 grants permanent access to shorting stocks |
|
| | * Level 2 grants permanent access to shorting stocks. |
|
||||||
| | * Level 3 grants permanent access to use limit/stop orders |
|
| | * Level 3 grants permanent access to use limit/stop orders. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-9: Coming Soon | |
|
| BitNode-9: Hacktocracy | * Level 1 permanently unlocks the Hacknet Server in other BitNodes. |
|
||||||
|
| | * Level 2 lets the player start with 128 GB of RAM on home computer. |
|
||||||
|
| | * Level 3 grants a highly-upgraded Hacknet Server when entering a new BitNode (it |
|
||||||
|
| | will be lost after installing augments). |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve |
|
| BitNode-10: Digital Carbon | * Each level of this grants a Duplicate Sleeve. |
|
||||||
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes |
|
| | * Allows the player to access the :ref:`netscript_sleeveapi` in other BitNodes. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
| BitNode-11: The Big Crash | * Company favor increases both the player's salary and reputation gain at that |
|
||||||
| | company by 1% per favor (rather than just the reputation gain) |
|
| | company by 1% per favor (rather than just the reputation gain). |
|
||||||
| | * Increases the player's company salary and reputation gain multipliers by |
|
| | * Increases the player's company salary and reputation gain multipliers by |
|
||||||
| | 24%/36%/42% |
|
| | 32%/48%/56%. |
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
| BitNode-12: The Recursion | * There is no maximum level for this Source-File |
|
| BitNode-12: The Recursion | * There is no maximum level for this Source-File. |
|
||||||
| | * Each level of this Source-File increases all of the player's multipliers by 1%. |
|
| | * Lets the player start with Neuroflux Governor equal to the level of this |
|
||||||
| | * This affect is multiplicative with itself. This means that level N of this |
|
| | Source-File. |
|
||||||
| | Source-File will result in a multiplier of 1.01^N (or 0.99^N for multipliers |
|
|
||||||
| | that decrease) |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
|
||||||
| | |
|
|
||||||
+------------------------------------+-------------------------------------------------------------------------------------+
|
+------------------------------------+-------------------------------------------------------------------------------------+
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ user's physical and mental faculties.
|
|||||||
Augmentations provide persistent upgrades in the form of multipliers.
|
Augmentations provide persistent upgrades in the form of multipliers.
|
||||||
These multipliers apply to a wide variety of things such as stats,
|
These multipliers apply to a wide variety of things such as stats,
|
||||||
experience gain, and hacking, just to name a few. Your multipliers
|
experience gain, and hacking, just to name a few. Your multipliers
|
||||||
can be viewed in the 'Character' page (:ref:`keyboard shortcut <shortcuts>` Alt + c)
|
can be viewed in the 'Character' page (:ref:`keyboard shortcut <shortcuts>` Alt + c).
|
||||||
|
|
||||||
How to acquire Augmentations
|
How to acquire Augmentations
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ List of Factions and their Requirements
|
|||||||
| Early Game | Faction Name | Requirements | Joining this Faction prevents |
|
| Early Game | Faction Name | Requirements | Joining this Faction prevents |
|
||||||
| Factions | | | you from joining: |
|
| Factions | | | you from joining: |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | CyberSec | * Hack CSEC Manually | |
|
| | CyberSec | * Install a backdoor on the CSEC server | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Tian Di Hui | * $1m | |
|
| | Tian Di Hui | * $1m | |
|
||||||
| | | * Hacking Level 50 | |
|
| | | * Hacking Level 50 | |
|
||||||
@@ -74,14 +74,17 @@ List of Factions and their Requirements
|
|||||||
| | | | * New Tokyo |
|
| | | | * New Tokyo |
|
||||||
| | | | * Ishima |
|
| | | | * Ishima |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Hacking | NiteSec | * Hack avmnite-02h manually | |
|
| Hacking | NiteSec | * Install a backdoor on the avmnite-02h | |
|
||||||
| Groups | | * Home Computer RAM of at least 32GB | |
|
| Groups | | server | |
|
||||||
|
| | | | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | The Black Hand | * Hack I.I.I.I manually | |
|
| | The Black Hand | * Install a backdoor on the I.I.I.I | |
|
||||||
| | | * Home Computer RAM of at least 64GB | |
|
| | | server | |
|
||||||
|
| | | | |
|
||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Bitrunners | * Hack run4theh111z manually | |
|
| | Bitrunners | * Install a backdoor on the run4theh111z| |
|
||||||
| | | * Home Computer RAM of at least 128GB | |
|
| | | server | |
|
||||||
|
| | | | |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Megacorporations | ECorp | * Have 200k reputation with | |
|
| Megacorporations | ECorp | * Have 200k reputation with | |
|
||||||
| | | the Corporation | |
|
| | | the Corporation | |
|
||||||
@@ -112,7 +115,8 @@ List of Factions and their Requirements
|
|||||||
+ +----------------+-----------------------------------------+-------------------------------+
|
+ +----------------+-----------------------------------------+-------------------------------+
|
||||||
| | Fulcrum Secret | * Have 250k reputation with | |
|
| | Fulcrum Secret | * Have 250k reputation with | |
|
||||||
| | Technologies | the Corporation | |
|
| | Technologies | the Corporation | |
|
||||||
| | | * Hack fulcrumassets manually | |
|
| | | * Install a backdoor on the | |
|
||||||
|
| | | fulcrumassets server | |
|
||||||
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
+---------------------+----------------+-----------------------------------------+-------------------------------+
|
||||||
| Criminal | Slum Snakes | * All Combat Stats of 30 | |
|
| Criminal | Slum Snakes | * All Combat Stats of 30 | |
|
||||||
| Organizations | | * -9 Karma | |
|
| Organizations | | * -9 Karma | |
|
||||||
|
|||||||
@@ -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
|
visit a company through the 'World' menu. There will be an option that
|
||||||
says 'Infiltrate Company'.
|
says 'Infiltrate Company'.
|
||||||
|
|
||||||
When infiltrating a company, you must progress through clearance levels in
|
When infiltrating a company you will be presented with short active challenges.
|
||||||
the facility. Every clearance level has some form of security that
|
None of the challenges use the mouse.
|
||||||
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.
|
|
||||||
|
|
||||||
The facility has a 'security level' that affects your chance of success
|
The difficulty at the top lowers with better combat stats. It is not recommended
|
||||||
when trying to get past a clearance level. Every time you advance to the
|
to attempt infiltrations above mid-normal.
|
||||||
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.
|
|
||||||
|
|
||||||
Every 5 clearance levels, you will steal classified company secrets that
|
* Most use spacebar as "action"
|
||||||
can be sold for money or faction reputation. However, in order to sell
|
* Some use WASD or arrows interchangeably.
|
||||||
these secrets you must successfully escape the facility using the
|
* A few others use the rest of the keyboard.
|
||||||
'Escape' option. Furthermore, companies have a max clearance level.
|
|
||||||
If you reach the max clearance level you will automatically escape the
|
** Slash when his guard is down! **
|
||||||
facility with all of your stolen secrets.
|
|
||||||
|
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.
|
||||||
@@ -124,6 +124,6 @@ Gain experience by:
|
|||||||
|
|
||||||
* Committing certain crimes
|
* Committing certain crimes
|
||||||
* Infiltration
|
* Infiltration
|
||||||
* Working out at a gym
|
* Studying at a university
|
||||||
* Working a relevant job at a company
|
* Working a relevant job at a company
|
||||||
* Doing Field work for a Faction
|
* Doing Field work for a Faction
|
||||||
|
|||||||
@@ -148,6 +148,14 @@ has root access, what ports are opened/closed, and also hacking-related informat
|
|||||||
such as an estimated chance to successfully hack, an estimate of how much money is
|
such as an estimated chance to successfully hack, an estimate of how much money is
|
||||||
available on the server, etc.
|
available on the server, etc.
|
||||||
|
|
||||||
|
backdoor
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
Installs a backdoor on the current server. Root access is required to do this.
|
||||||
|
|
||||||
|
Servers will give different bonuses when you install a backdoor.
|
||||||
|
This can pass faction tests or give bonsues such as discounts from companies.
|
||||||
|
|
||||||
buy
|
buy
|
||||||
^^^
|
^^^
|
||||||
|
|
||||||
|
|||||||
+1028
-1
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -64,9 +64,9 @@ documentation_title = '{0} Documentation'.format(project)
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.47'
|
version = '0.55'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '0.47.0'
|
release = '0.55.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|||||||
@@ -634,18 +634,18 @@ This tells me that I can reach :code:`CSEC` by going through :code:`iron-gym`::
|
|||||||
Make sure you notice the required hacking skill for the :code:`CSEC` server.
|
Make sure you notice the required hacking skill for the :code:`CSEC` server.
|
||||||
This is a random value between 51 and 60. Although you receive the message
|
This is a random value between 51 and 60. Although you receive the message
|
||||||
from CSEC once you hit 50 hacking, you cannot actually pass their test
|
from CSEC once you hit 50 hacking, you cannot actually pass their test
|
||||||
until your hacking is high enough to hack their server.
|
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
|
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|::
|
using the :code:`BruteSSH.exe` program we created earlier. In |Terminal|::
|
||||||
|
|
||||||
$ run BruteSSH.exe
|
$ run BruteSSH.exe
|
||||||
$ run NUKE.exe
|
$ run NUKE.exe
|
||||||
$ hack
|
$ backdoor
|
||||||
|
|
||||||
Keep hacking the server until you are successful. After you successfully hack it, you should
|
After you successfully install the backdoor, you should receive a faction
|
||||||
receive a faction invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
|
invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
|
||||||
reject the invitation, that's okay. Just go to the :code:`Factions` tab
|
reject the invitation, that's okay. Just go to the :code:`Factions` tab
|
||||||
(|Keyboard shortcut| Alt + f) and you should see an option that lets you
|
(|Keyboard shortcut| Alt + f) and you should see an option that lets you
|
||||||
accept the invitation.
|
accept the invitation.
|
||||||
@@ -860,7 +860,7 @@ Random Tips
|
|||||||
.. Substitution definitions
|
.. Substitution definitions
|
||||||
.. |Alpha Enterprises| replace:: :code:`Alpha Enterprises`
|
.. |Alpha Enterprises| replace:: :code:`Alpha Enterprises`
|
||||||
.. |Augmentations tab| replace:: :code:`Augmentations` tab
|
.. |Augmentations tab| replace:: :code:`Augmentations` tab
|
||||||
.. |AutoLink| replace:: :code:`NUKE.exe`
|
.. |AutoLink| replace:: :code:`AutoLink.exe`
|
||||||
.. |BruteSSH| replace:: :code:`BruteSSH.exe`
|
.. |BruteSSH| replace:: :code:`BruteSSH.exe`
|
||||||
.. |City tab| replace:: :code:`City` tab
|
.. |City tab| replace:: :code:`City` tab
|
||||||
.. |CyberSec| replace:: :code:`CyberSec`
|
.. |CyberSec| replace:: :code:`CyberSec`
|
||||||
|
|||||||
@@ -278,6 +278,7 @@ Description
|
|||||||
hashes, which can be spent on a variety of different upgrades.
|
hashes, which can be spent on a variety of different upgrades.
|
||||||
|
|
||||||
In this BitNode:
|
In this BitNode:
|
||||||
|
|
||||||
* Your stats are significantly decreased
|
* Your stats are significantly decreased
|
||||||
* You cannnot purchase additional servers
|
* You cannnot purchase additional servers
|
||||||
* Hacking is significantly less profitable
|
* Hacking is significantly less profitable
|
||||||
@@ -292,7 +293,7 @@ Source-File
|
|||||||
* Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode
|
* Level 3: Grants a highly-upgraded Hacknet Server when entering a new BitNode
|
||||||
|
|
||||||
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT
|
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT
|
||||||
when installing Augmentation
|
when installing Augmentations.)
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Hard
|
Hard
|
||||||
@@ -312,6 +313,7 @@ Description
|
|||||||
2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously
|
2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously
|
||||||
|
|
||||||
In this BitNode:
|
In this BitNode:
|
||||||
|
|
||||||
* Your stats are significantly decreased
|
* Your stats are significantly decreased
|
||||||
* All methods of gaining money are half as profitable (except Stock Market)
|
* All methods of gaining money are half as profitable (except Stock Market)
|
||||||
* Purchased servers are more expensive, have less max RAM, and a lower maximum limit
|
* Purchased servers are more expensive, have less max RAM, and a lower maximum limit
|
||||||
@@ -321,7 +323,7 @@ Source-File
|
|||||||
:Max Level: 3
|
:Max Level: 3
|
||||||
|
|
||||||
This Source-File unlocks Sleeve technology in other BitNodes.
|
This Source-File unlocks Sleeve technology in other BitNodes.
|
||||||
Each level of this Source-File also grants you a Duplicate Sleeve
|
Each level of this Source-File also grants you a Duplicate Sleeve.
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Hard
|
Hard
|
||||||
@@ -371,9 +373,10 @@ Description
|
|||||||
Source-File
|
Source-File
|
||||||
:Max Level: Infinity
|
:Max Level: Infinity
|
||||||
|
|
||||||
Each level of Source-File 12 will increase all of your multipliers by 1%. This effect
|
Each level of Source-File 12 will let you start with Neuroflux Governor
|
||||||
is multiplicative with itself. In other words, level N of this Source-File will result
|
equal to the level of this Source-File.
|
||||||
in a multiplier of 1.01^N (or 0.99^N for multipliers that decrease)
|
|
||||||
|
This BitNode is meant to be done passively or when waiting for new content.
|
||||||
|
|
||||||
Difficulty
|
Difficulty
|
||||||
Initially very easy, but then it (obviously) becomes harder as you continue to do it.
|
Initially very easy, but then it (obviously) becomes harder as you continue to do it.
|
||||||
@@ -394,27 +397,22 @@ For fast progression
|
|||||||
1. Repeat **BitNode-1: Source Genesis** until you max out its Source-File. Its Source-File
|
1. Repeat **BitNode-1: Source Genesis** until you max out its Source-File. Its Source-File
|
||||||
is extremely powerful, as it raises all multipliers by a significant amount.
|
is extremely powerful, as it raises all multipliers by a significant amount.
|
||||||
|
|
||||||
2. Repeat **BitNode-12: The Recursion** several times. This BitNode will be extremely easy the
|
2. Do **BitNode-5: Artificial Intelligence** once or twice. The intelligence stat it unlocks
|
||||||
first few times you tackle it, and its Source-File raises all multipliers. Furthermore,
|
|
||||||
its effect stacks multiplicatively with itself and other Source-Files/Augmentations,
|
|
||||||
which gets better as time goes on
|
|
||||||
|
|
||||||
3. Do **BitNode-5: Artificial Intelligence** once or twice. The intelligence stat it unlocks
|
|
||||||
will gradually build up as you continue to play the game, and will be helpful
|
will gradually build up as you continue to play the game, and will be helpful
|
||||||
in the future. The Source-File also provides hacking multipliers, which are
|
in the future. The Source-File also provides hacking multipliers, which are
|
||||||
strong because hacking is typically one of the best ways of earning money.
|
strong because hacking is typically one of the best ways of earning money.
|
||||||
|
|
||||||
4. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
|
3. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
|
||||||
more powerful in any way, but it does unlock :ref:`netscript_singularityfunctions` which
|
more powerful in any way, but it does unlock :ref:`netscript_singularityfunctions` which
|
||||||
let you automate significantly more aspects of the game.
|
let you automate significantly more aspects of the game.
|
||||||
|
|
||||||
5. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
|
4. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
|
||||||
has high profit potential.
|
has high profit potential.
|
||||||
|
|
||||||
6. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
|
5. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
|
||||||
mechanic is useful for some of the future BitNodes (such as 9 and 10).
|
mechanic is useful for some of the future BitNodes (such as 9 and 10).
|
||||||
|
|
||||||
7. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
|
6. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
|
||||||
consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.
|
consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.
|
||||||
|
|
||||||
.. todo:: To be continued as more BitNodes get added
|
.. todo:: To be continued as more BitNodes get added
|
||||||
|
|||||||
@@ -30,4 +30,5 @@ to reach out to the developer!
|
|||||||
Gang API <netscript/netscriptgangapi>
|
Gang API <netscript/netscriptgangapi>
|
||||||
Coding Contract API <netscript/netscriptcodingcontractapi>
|
Coding Contract API <netscript/netscriptcodingcontractapi>
|
||||||
Sleeve API <netscript/netscriptsleeveapi>
|
Sleeve API <netscript/netscriptsleeveapi>
|
||||||
|
Formulas API <netscript/netscriptformulasapi>
|
||||||
Miscellaneous <netscript/netscriptmisc>
|
Miscellaneous <netscript/netscriptmisc>
|
||||||
|
|||||||
@@ -3,14 +3,22 @@ getBitNodeMultipliers() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getBitNodeMultipliers()
|
.. js:function:: getBitNodeMultipliers()
|
||||||
|
|
||||||
Returns an object containing the current BitNode multipliers. This function requires Source-File 5 in order
|
:RAM cost: 4 GB
|
||||||
to run. The multipliers are returned in decimal forms (e.g. 1.5 instead of 150%). The multipliers represent
|
|
||||||
the difference between the current BitNode and the original BitNode (BitNode-1). For example, if the
|
|
||||||
*CrimeMoney* multiplier has a value of 0.1, then that means that committing crimes in the current BitNode
|
|
||||||
will only give 10% of the money you would have received in BitNode-1.
|
|
||||||
|
|
||||||
The structure of the returned object is subject to change as BitNode multipliers get added to the game.
|
If you are not in BitNode-5, then you must have Source-File 5-1 in order to
|
||||||
Refer to the `source code here <https://github.com/danielyxie/bitburner/blob/master/src/BitNode/BitNodeMultipliers.ts>`_
|
run this function.
|
||||||
|
|
||||||
|
Returns an object containing the current BitNode multipliers. The
|
||||||
|
multipliers are returned in decimal forms (e.g. 1.5 instead of 150%). The
|
||||||
|
multipliers represent the difference between the current BitNode and the
|
||||||
|
original BitNode (BitNode-1). For example, if the *CrimeMoney* multiplier
|
||||||
|
has a value of 0.1, then that means that committing crimes in the current
|
||||||
|
BitNode will only give 10% of the money you would have received in
|
||||||
|
BitNode-1.
|
||||||
|
|
||||||
|
The structure of the returned object is subject to change as BitNode
|
||||||
|
multipliers get added to the game. Refer to the `source code here
|
||||||
|
<https://github.com/danielyxie/bitburner/blob/master/src/BitNode/BitNodeMultipliers.ts>`_
|
||||||
to see the name of the BitNode multipliers.
|
to see the name of the BitNode multipliers.
|
||||||
|
|
||||||
Example::
|
Example::
|
||||||
@@ -18,5 +26,3 @@ getBitNodeMultipliers() Netscript Function
|
|||||||
mults = getBitNodeMultipliers();
|
mults = getBitNodeMultipliers();
|
||||||
print(mults.ServerMaxMoney);
|
print(mults.ServerMaxMoney);
|
||||||
print(mults.HackExpGain);
|
print(mults.HackExpGain);
|
||||||
|
|
||||||
:RAM cost: 4 GB
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
getHackTime(), getGrowTime(), & getWeakenTime()
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
The :js:func:`getHackTime`, :js:func:`getGrowTime`, and :js:func:`getWeakenTime`
|
|
||||||
all take an additional third optional parameter for specifying a specific intelligence
|
|
||||||
level to see how that would affect the hack/grow/weaken times. This parameter
|
|
||||||
defaults to your current intelligence level.
|
|
||||||
|
|
||||||
(Intelligence is unlocked after obtaining Source-File 5).
|
|
||||||
|
|
||||||
The function signatures are then::
|
|
||||||
|
|
||||||
getHackTime(hostname/ip[, hackLvl=current level, intLvl=current level])
|
|
||||||
getGrowTime(hostname/ip[, hackLvl=current level, intLvl=current level])
|
|
||||||
getWeakenTime(hostname/ip[, hackLvl=current level, intLvl=current level])
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
getServer() Netscript Function
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
.. js:function:: getServer([hostname])
|
||||||
|
|
||||||
|
:RAM cost: 2 GB
|
||||||
|
:param string hostname: Hostname of the server, defaults to host server.
|
||||||
|
|
||||||
|
If you are not in BitNode-5, then you must have Source-File 5-1 in order to run this function.
|
||||||
|
|
||||||
|
This function is meant to be used in conjunction with the :doc:`formulas API<../netscriptformulasapi>`.
|
||||||
|
|
||||||
|
Returns an object with the Server's stats. The object has the following properties::
|
||||||
|
|
||||||
|
{
|
||||||
|
cpuCores
|
||||||
|
ftpPortOpen
|
||||||
|
hasAdminRights
|
||||||
|
hostname
|
||||||
|
httpPortOpen
|
||||||
|
ip
|
||||||
|
isConnectedTo
|
||||||
|
maxRam
|
||||||
|
organizationName
|
||||||
|
ramUsed
|
||||||
|
smtpPortOpen
|
||||||
|
sqlPortOpen
|
||||||
|
sshPortOpen
|
||||||
|
baseDifficulty
|
||||||
|
hackDifficulty
|
||||||
|
backdoorInstalled
|
||||||
|
minDifficulty
|
||||||
|
moneyAvailable
|
||||||
|
moneyMax
|
||||||
|
numOpenPortsRequired
|
||||||
|
openPortCount
|
||||||
|
purchasedByPlayer
|
||||||
|
requiredHackingSkill
|
||||||
|
serverGrowth
|
||||||
|
}
|
||||||
@@ -1,13 +1,17 @@
|
|||||||
brutessh() Netscript Function
|
brutessh() Netscript Function
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
.. js:function:: brutessh(hostname/ip)
|
.. js:function:: brutessh(hostname)
|
||||||
|
|
||||||
:param string hostname/ip: IP or hostname of the target server
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
|
||||||
Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist on your home computer.
|
:param string hostname: Hostname of the target server.
|
||||||
|
|
||||||
Example::
|
Runs the ``BruteSSH.exe`` program on the target server. ``BruteSSH.exe``
|
||||||
|
must exist on your home computer.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
brutessh("foodnstuff");
|
brutessh("foodnstuff");
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
clear() Netscript Function
|
clear() Netscript Function
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
.. js:function:: clear(port/fn)
|
.. js:function:: clear(portOrFilename)
|
||||||
|
|
||||||
:param string/number port/fn: Port or text file to clear
|
|
||||||
:RAM cost: 1 GB
|
:RAM cost: 1 GB
|
||||||
|
|
||||||
|
:param string/number portOrFilename: Port or text file to clear.
|
||||||
|
|
||||||
This function is used to clear data in a :ref:`Netscript Port <netscript_ports>` or a text file.
|
This function is used to clear data in a :ref:`Netscript Port <netscript_ports>` or a text file.
|
||||||
|
|
||||||
If the *port/fn* argument is a number between 1 and 20, then it specifies a port and will clear it (deleting all data from the underlying queue).
|
If the ``portOrFilename`` argument is a number between 1 and 20, then it
|
||||||
|
specifies a port and will clear it (deleting all data from the underlying queue).
|
||||||
|
|
||||||
If the *port/fn* argument is a string, then it specifies the name of a text file (.txt) and will delete all data from that text file.
|
If the ``portOrFilename`` argument is a string, then it specifies the name
|
||||||
|
of a text file (.txt) and will delete all data from that text file.
|
||||||
|
|||||||
@@ -5,4 +5,13 @@ clearLog() Netscript Function
|
|||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
|
|
||||||
Clears the script's logs
|
Clears the script's logs. Useful when making monitoring scripts.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
clearLog();
|
||||||
|
print(getServerMoneyAvailable('foodnstuff'));
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ deleteServer() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: deleteServer(hostname)
|
.. js:function:: deleteServer(hostname)
|
||||||
|
|
||||||
:param string hostname: Hostname of the server to delete
|
|
||||||
:RAM cost: 2.25 GB
|
:RAM cost: 2.25 GB
|
||||||
|
:param string hostname: Hostname of the server to delete.
|
||||||
|
:returns: ``true`` if successful, ``false`` otherwise.
|
||||||
|
|
||||||
Deletes one of your purchased servers, which is specified by its hostname.
|
Deletes the specified purchased server.
|
||||||
|
|
||||||
The *hostname* argument can be any data type, but it will be converted to a string. Whitespace is automatically removed from
|
The ``hostname`` argument can be any data type, but it will be converted to
|
||||||
the string. This function will not delete a server that still has scripts running on it.
|
a string. Whitespace is automatically removed from the string. This function
|
||||||
|
will not delete a server that still has scripts running on it.
|
||||||
Returns true if successful, and false otherwise.
|
|
||||||
|
|||||||
@@ -1,16 +1,11 @@
|
|||||||
disableLog() Netscript Function
|
disableLog() Netscript Function
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
.. js:function:: disableLog(fn)
|
.. js:function:: disableLog(functionName)
|
||||||
|
|
||||||
:param string fn: Name of function for which to disable logging
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
|
|
||||||
|
:param string functionName: Name of function for which to disable logging.
|
||||||
|
|
||||||
Disables logging for the given function. Logging can be disabled for
|
Disables logging for the given function. Logging can be disabled for
|
||||||
all functions by passing 'ALL' as the argument.
|
all functions by passing 'ALL' as the argument.
|
||||||
|
|
||||||
Note that this does not completely remove all logging functionality.
|
|
||||||
This only stops a function from logging
|
|
||||||
when the function is successful. If the function fails, it will still log the reason for failure.
|
|
||||||
|
|
||||||
Notable functions that cannot have their logs disabled: run, exec, exit
|
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
enableLog() Netscript Function
|
enableLog() Netscript Function
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
.. js:function:: enableLog(fn)
|
.. js:function:: enableLog(functionName)
|
||||||
|
|
||||||
:param string fn: Name of function for which to enable logging
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
|
|
||||||
Re-enables logging for the given function. If 'ALL' is passed into this function
|
:param string functionName: Name of function for which to enable logging.
|
||||||
as an argument, then it will revert the effects of disableLog('ALL')
|
|
||||||
|
Re-enables logging for the given function. If 'ALL' is passed into this
|
||||||
|
function as an argument, then it will revert the effects of
|
||||||
|
``disableLog('ALL')``
|
||||||
|
|||||||
@@ -1,39 +1,40 @@
|
|||||||
exec() Netscript Function
|
exec() Netscript Function
|
||||||
=========================
|
=========================
|
||||||
|
|
||||||
.. js:function:: exec(script, hostname/ip, [numThreads=1], [args...])
|
.. js:function:: exec(script, hostname[, numThreads=1[, args...]])
|
||||||
|
|
||||||
:param string script: Filename of script to execute
|
|
||||||
:param string hostname/ip: IP or hostname of the 'target server' on which to execute the script
|
|
||||||
:param number numThreads: Optional thread count for new script. Set to 1 by default. Will be rounded to nearest integer
|
|
||||||
:param args...:
|
|
||||||
Additional arguments to pass into the new script that is being run. Note that if any arguments are being
|
|
||||||
passed into the new script, then the third argument *numThreads* must be filled in with a value.
|
|
||||||
:RAM cost: 1.3 GB
|
:RAM cost: 1.3 GB
|
||||||
|
|
||||||
Run a script as a separate process on a specified server. This is similar to the *run* function except
|
:param string script: Filename of script to execute.
|
||||||
that it can be used to run a script on any server, instead of just the current server.
|
:param string hostname: Hostname of the target server on which to execute the script.
|
||||||
|
:param number numThreads: Optional thread count for new script. Set to 1 by
|
||||||
|
default. Will be rounded to nearest integer
|
||||||
|
:param args...: Additional arguments to pass into the new script that is
|
||||||
|
being run. Note that if any arguments are being
|
||||||
|
passed into the new script, then the third argument ``numThreads`` must
|
||||||
|
be filled in with a value.
|
||||||
|
:returns: Newly created process id on success, 0 on failure.
|
||||||
|
|
||||||
If the script was successfully started, then this functions returns the PID
|
Run a script as a separate process on a specified server. This is similar to
|
||||||
of that script. Otherwise, it returns 0.
|
the :doc:`run<run>` function except that it can be used to run a script on any
|
||||||
|
server, instead of just the current server.
|
||||||
|
|
||||||
.. note:: PID stands for Process ID. The PID is a unique identifier for each script.
|
.. warning:: Running this function with a ``numThreads`` argument of 0 or
|
||||||
The PID will always be a positive integer.
|
less will cause a runtime error.
|
||||||
|
|
||||||
.. warning:: Running this function with a *numThreads* argument of 0 will return 0 without
|
The simplest way to use the :doc:`exec<exec>` command is to call it with
|
||||||
running the script. However, running this function with a negative *numThreads*
|
just the script name and the target server. The following example will try
|
||||||
argument will cause a runtime error.
|
to run ``generic-hack.script`` on the ``foodnstuff`` server::
|
||||||
|
|
||||||
The simplest way to use the *exec* command is to call it with just the script name and the target server.
|
|
||||||
The following example will try to run *generic-hack.script* on the *foodnstuff* server::
|
|
||||||
|
|
||||||
exec("generic-hack.script", "foodnstuff");
|
exec("generic-hack.script", "foodnstuff");
|
||||||
|
|
||||||
The following example will try to run the script *generic-hack.script* on the *joesguns* server with 10 threads::
|
The following example will try to run the script ``generic-hack.script`` on
|
||||||
|
the ``joesguns`` server with 10 threads::
|
||||||
|
|
||||||
exec("generic-hack.script", "joesguns", 10);
|
exec("generic-hack.script", "joesguns", 10);
|
||||||
|
|
||||||
This last example will try to run the script *foo.script* on the *foodnstuff* server with 5 threads. It will also pass
|
This last example will try to run the script ``foo.script`` on the
|
||||||
the number 1 and the string "test" in as arguments to the script::
|
``foodnstuff`` server with 5 threads. It will also pass the number 1 and the
|
||||||
|
string "test" in as arguments to the script::
|
||||||
|
|
||||||
exec("foo.script", "foodnstuff", 5, 1, "test");
|
exec("foo.script", "foodnstuff", 5, 1, "test");
|
||||||
|
|||||||
@@ -5,4 +5,13 @@ exit() Netscript Function
|
|||||||
|
|
||||||
:RAM cost: 0 GB
|
:RAM cost: 0 GB
|
||||||
|
|
||||||
Terminates the current script immediately
|
Terminates the current script immediately.
|
||||||
|
|
||||||
|
.. warning:: In :ref:`netscriptjs`, execution may continue past a call to
|
||||||
|
this function; while some game-related functions (e.g. those with an
|
||||||
|
``ns.`` prefix) will not function after this function has been called,
|
||||||
|
there might still be unintended behavior if you assume ``exit`` will
|
||||||
|
immediately halt execution, like it does in :ref:`netscript1`. To be
|
||||||
|
safe, you should probably ``return`` from the main function instead
|
||||||
|
of/in addition to calling ``ns.exit()`` when halting a NetscriptJS
|
||||||
|
script.
|
||||||
|
|||||||
@@ -1,25 +1,29 @@
|
|||||||
fileExists() Netscript Function
|
fileExists() Netscript Function
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
.. js:function:: fileExists(filename, [hostname/ip])
|
.. js:function:: fileExists(filename[, hostname])
|
||||||
|
|
||||||
:param string filename: Filename of file to check
|
|
||||||
:param string hostname/ip:
|
|
||||||
Hostname or IP of target server. This is optional. If it is not specified then the
|
|
||||||
function will use the current server as the target server
|
|
||||||
:RAM cost: 0.1 GB
|
:RAM cost: 0.1 GB
|
||||||
|
|
||||||
Returns a boolean indicating whether the specified file exists on the target server. The filename
|
:param string filename: Filename of file to check.
|
||||||
for scripts is case-sensitive, but for other types of files it is not. For example, *fileExists("brutessh.exe")*
|
:param string hostname:
|
||||||
will work fine, even though the actual program is named "BruteSSH.exe".
|
Hostname of target server. This is optional. If it is not specified then
|
||||||
|
the function will use the current server as the target server.
|
||||||
|
:returns: ``true`` if the file exists, ``false`` if it doesn't.
|
||||||
|
|
||||||
If the *hostname/ip* argument is omitted, then the function will search through the current server (the server
|
The filename for scripts is case-sensitive, but for other types of files it
|
||||||
running the script that calls this function) for the file.
|
is not. For example, ``fileExists("brutessh.exe")`` will work fine, even
|
||||||
|
though the actual program is named ``BruteSSH.exe``.
|
||||||
|
|
||||||
Examples::
|
If the ``hostname`` argument is omitted, then the function will search
|
||||||
|
through the server running the script that calls this function for the file.
|
||||||
|
|
||||||
fileExists("foo.script", "foodnstuff");
|
Examples:
|
||||||
fileExists("ftpcrack.exe");
|
|
||||||
|
|
||||||
The first example above will return true if the script named *foo.script* exists on the *foodnstuff* server, and false otherwise.
|
.. code-block:: javascript
|
||||||
The second example above will return true if the current server contains the *FTPCrack.exe* program, and false otherwise.
|
|
||||||
|
fileExists("foo.script", "foodnstuff"); // returns: false
|
||||||
|
fileExists("ftpcrack.exe"); // returns: true
|
||||||
|
|
||||||
|
The first example above will return true if the script named ``foo.script`` exists on the ``foodnstuff`` server, and false otherwise.
|
||||||
|
The second example above will return true if the current server contains the ``FTPCrack.exe`` program, and false otherwise.
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
flags() Netscript Function
|
||||||
|
============================
|
||||||
|
|
||||||
|
.. js:function:: flags(data)
|
||||||
|
|
||||||
|
:RAM cost: 0 GB
|
||||||
|
:param data array of pairs of strings: Flags definition.
|
||||||
|
:returns: Object containing all the flags that were parsed or default.
|
||||||
|
|
||||||
|
This function allows for a more flexible way of parsing script arguments
|
||||||
|
than to just pass a fixed list in a fixed order. Options can be given
|
||||||
|
names, and passed in any order, while having defined default values.
|
||||||
|
|
||||||
|
The flag definition is an array of pairs of values: the first value is the
|
||||||
|
name of the flag, and the 2nd value is the default value for that flag.
|
||||||
|
|
||||||
|
The return object is a map containing flag names to the value. It also
|
||||||
|
contains the special field '_', which contains all arguments that were not
|
||||||
|
flags.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
// example.script
|
||||||
|
var data = flags([
|
||||||
|
['delay', 0], // a default number means this flag is a number
|
||||||
|
['server', 'foodnstuff'], // a default string means this flag is a string
|
||||||
|
['exclude', []], // a default array means this flag is a default array of string
|
||||||
|
['help', false], // a default boolean means this flag is a boolean
|
||||||
|
]);
|
||||||
|
tprint(data);
|
||||||
|
/*
|
||||||
|
[home ~/]> run example.script
|
||||||
|
{"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":false}
|
||||||
|
[home ~/]> run example.script --delay 3000
|
||||||
|
{"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi
|
||||||
|
{"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world
|
||||||
|
{"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
|
||||||
|
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b
|
||||||
|
{"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}
|
||||||
|
[home ~/]> run example.script --help
|
||||||
|
{"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}
|
||||||
|
*/
|
||||||
@@ -1,13 +1,17 @@
|
|||||||
ftpcrack() Netscript Function
|
ftpcrack() Netscript Function
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
.. js:function:: ftpcrack(hostname/ip)
|
.. js:function:: ftpcrack(hostname)
|
||||||
|
|
||||||
:param string hostname/ip: IP or hostname of the target server
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
|
||||||
Runs the FTPCrack.exe program on the target server. FTPCrack.exe must exist on your home computer.
|
:param string hostname: Hostname of the target server.
|
||||||
|
|
||||||
Example::
|
Runs the ``FTPCrack.exe`` program on the target server. ``FTPCrack.exe``
|
||||||
|
must exist on your home computer.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
ftpcrack("foodnstuff");
|
ftpcrack("foodnstuff");
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ getFavorToDonate() Netscript Function
|
|||||||
.. js:function:: getFavorToDonate()
|
.. js:function:: getFavorToDonate()
|
||||||
|
|
||||||
:RAM cost: 0.1 GB
|
:RAM cost: 0.1 GB
|
||||||
|
:returns: Amount of faction favor required to unlock donation.
|
||||||
|
|
||||||
Returns the amount of Faction favor required to be able to donate to a faction.
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getFavorToDonate() // returns: 150
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
getGrowTime() Netscript Function
|
getGrowTime() Netscript Function
|
||||||
================================
|
================================
|
||||||
|
|
||||||
.. js:function:: getGrowTime(hostname/ip[, hackLvl=current level])
|
.. js:function:: getGrowTime(hostname[, hackLvl=current level])
|
||||||
|
|
||||||
:param string hostname/ip: Hostname or IP of target server
|
|
||||||
:param number hackLvl: Optional hacking level for the calculation. Defaults to player's current hacking level
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
|
||||||
Returns the amount of time in seconds it takes to execute the *grow()* Netscript function on the target server.
|
:param string hostname: Hostname of target server.
|
||||||
|
:returns: seconds it takes to execute :doc:`grow<grow>` on that server.
|
||||||
|
|
||||||
The function takes in an optional *hackLvl* parameter that can be specified
|
The function takes in an optional ``hackLvl`` parameter that can be
|
||||||
to see what the grow time would be at different hacking levels.
|
specified to see what the grow time would be at different hacking levels.
|
||||||
|
|
||||||
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
|
Example:
|
||||||
return :code:`Infinity`.
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getGrowTime("foodnstuff"); // returns: 53.4
|
||||||
|
|
||||||
|
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
|
||||||
|
return ``Infinity``.
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
getHackTime() Netscript Function
|
getHackTime() Netscript Function
|
||||||
================================
|
================================
|
||||||
|
|
||||||
.. js:function:: getHackTime(hostname/ip[, hackLvl=current level])
|
.. js:function:: getHackTime(hostname[, hackLvl=current level])
|
||||||
|
|
||||||
:param string hostname/ip: Hostname or IP of target server
|
|
||||||
:param number hackLvl: Optional hacking level for the calculation. Defaults to player's current hacking level
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
:param string hostname: Hostname of target server.
|
||||||
|
:returns: seconds it takes to execute :doc:`hack<hack>` on that server.
|
||||||
|
|
||||||
Returns the amount of time in seconds it takes to execute the *hack()* Netscript function on the target server.
|
The function takes in an optional ``hackLvl`` parameter that can be
|
||||||
|
specified to see what the hack time would be at different hacking levels.
|
||||||
|
|
||||||
The function takes in an optional *hackLvl* parameter that can be specified
|
Example:
|
||||||
to see what the hack time would be at different hacking levels.
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getHackTime("foodnstuff"); // returns: 53.4
|
||||||
|
|
||||||
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
|
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
|
||||||
return :code:`Infinity`.
|
return :code:`Infinity`.
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ getHackingLevel() Netscript Function
|
|||||||
.. js:function:: getHackingLevel()
|
.. js:function:: getHackingLevel()
|
||||||
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
:returns: The player's current hacking level.
|
||||||
|
|
||||||
Returns the player's current hacking level
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getHackingLevel(); // returns: 124
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ getHackingMultipliers() Netscript Function
|
|||||||
.. js:function:: getHackingMultipliers()
|
.. js:function:: getHackingMultipliers()
|
||||||
|
|
||||||
:RAM cost: 4 GB
|
:RAM cost: 4 GB
|
||||||
|
:returns: object containing the player's hacking multipliers. These
|
||||||
|
multipliers are returned in decimal forms, not percentages (e.g. 1.5
|
||||||
|
instead of 150%).
|
||||||
|
|
||||||
Returns an object containing the Player's hacking related multipliers. These multipliers are
|
Structure::
|
||||||
returned in decimal forms, not percentages (e.g. 1.5 instead of 150%). The object has the following structure::
|
|
||||||
|
|
||||||
{
|
{
|
||||||
chance: Player's hacking chance multiplier,
|
chance: Player's hacking chance multiplier,
|
||||||
@@ -15,7 +17,9 @@ getHackingMultipliers() Netscript Function
|
|||||||
growth: Player's hacking growth multiplier
|
growth: Player's hacking growth multiplier
|
||||||
}
|
}
|
||||||
|
|
||||||
Example of how this can be used::
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
mults = getHackingMultipliers();
|
mults = getHackingMultipliers();
|
||||||
print(mults.chance);
|
print(mults.chance);
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ getHacknetMultipliers() Netscript Function
|
|||||||
.. js:function:: getHacknetMultipliers()
|
.. js:function:: getHacknetMultipliers()
|
||||||
|
|
||||||
:RAM cost: 4 GB
|
:RAM cost: 4 GB
|
||||||
|
:returns: object containing the player's hacknet multipliers. These
|
||||||
|
multipliers are returned in decimal forms, not percentages (e.g. 1.5
|
||||||
|
instead of 150%).
|
||||||
|
|
||||||
Returns an object containing the Player's hacknet related multipliers. These multipliers are
|
Structure::
|
||||||
returned in decimal forms, not percentages (e.g. 1.5 instead of 150%). The object has the following structure::
|
|
||||||
|
|
||||||
{
|
{
|
||||||
production: Player's hacknet production multiplier,
|
production: Player's hacknet production multiplier,
|
||||||
@@ -16,7 +18,9 @@ getHacknetMultipliers() Netscript Function
|
|||||||
levelCost: Player's hacknet level cost multiplier
|
levelCost: Player's hacknet level cost multiplier
|
||||||
}
|
}
|
||||||
|
|
||||||
Example of how this can be used::
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
mults = getHacknetMultipliers();
|
mults = getHacknetMultipliers();
|
||||||
print(mults.production);
|
print(mults.production);
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ getHostname() Netscript Function
|
|||||||
.. js:function:: getHostname()
|
.. js:function:: getHostname()
|
||||||
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
:returns: Hostname of the server this script is running on.
|
||||||
|
|
||||||
Returns a string with the hostname of the server that the script is running on
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getHostname(); // returns: "foodnstuff"
|
||||||
|
|||||||
@@ -0,0 +1,101 @@
|
|||||||
|
getPlayer() Netscript Function
|
||||||
|
==============================
|
||||||
|
|
||||||
|
.. js:function:: getPlayer()
|
||||||
|
|
||||||
|
:RAM cost: 0.5 GB
|
||||||
|
|
||||||
|
The result of this function can be passed to the :doc:`formulas API<../netscriptformulasapi>`.
|
||||||
|
|
||||||
|
Returns an object with the Player's stats. The object has the following properties::
|
||||||
|
|
||||||
|
{
|
||||||
|
hacking_skill: Current Hacking skill level
|
||||||
|
hp: Current health points
|
||||||
|
max_hp: Maximum health points
|
||||||
|
strength: Current Strength skill level
|
||||||
|
defense: Current Defense skill level
|
||||||
|
dexterity: Current Dexterity skill level
|
||||||
|
agility: Current Agility skill level
|
||||||
|
charisma: Current Charisma skill level
|
||||||
|
intelligence: Current Intelligence skill level (from BitNode-5)
|
||||||
|
hacking_chance_mult: Hacking Chance multiplier (from Source-Files and Augments)
|
||||||
|
hacking_speed_mult: Hacking Speed multiplier (from Source-Files and Augments)
|
||||||
|
hacking_money_mult: Hacking Money multiplier (from Source-Files and Augments)
|
||||||
|
hacking_grow_mult: Hacking Growth multiplier (from Source-Files and Augments)
|
||||||
|
hacking_exp: Current Hacking experience points
|
||||||
|
strength_exp: Current Strength experience points
|
||||||
|
defense_exp: Current Defense experience points
|
||||||
|
dexterity_exp: Current Dexterity experience points
|
||||||
|
agility_exp: Current Agility experience points
|
||||||
|
charisma_exp: Current Charisma experience points
|
||||||
|
hacking_mult: Hacking Level multiplier (from Source-Files and Augments)
|
||||||
|
strength_mult: Strength Level multiplier (from Source-Files and Augments)
|
||||||
|
defense_mult: Defense Level multiplier (from Source-Files and Augments)
|
||||||
|
dexterity_mult: Dexterity Level multiplier (from Source-Files and Augments)
|
||||||
|
agility_mult: Agility Level multiplier (from Source-Files and Augments)
|
||||||
|
charisma_mult: Charisma Level multiplier (from Source-Files and Augments)
|
||||||
|
hacking_exp_mult: Hacking Experience multiplier (from Source-Files and Augments)
|
||||||
|
strength_exp_mult: Strength Experience multiplier (from Source-Files and Augments)
|
||||||
|
defense_exp_mult: Defense Experience multiplier (from Source-Files and Augments)
|
||||||
|
dexterity_exp_mult: Dexterity Experience multiplier (from Source-Files and Augments)
|
||||||
|
agility_exp_mult: Agility Experience multiplier (from Source-Files and Augments)
|
||||||
|
charisma_exp_mult: Charisma Experience multiplier (from Source-Files and Augments)
|
||||||
|
company_rep_mult: Company reputation gain multiplier (from Source-Files and Augments)
|
||||||
|
faction_rep_mult: Faction reputation gain multiplier (from Source-Files and Augments)
|
||||||
|
money: Current money
|
||||||
|
city: Name of city you are currently in
|
||||||
|
location: Name of the last location visited
|
||||||
|
crime_money_mult: Crime money multiplier (from Source-Files and Augments)
|
||||||
|
crime_success_mult: Crime success multiplier (from Source-Files and Augments)
|
||||||
|
isWorking: Boolean indicating whether the player is currently performing work
|
||||||
|
workType: Name of the kind of work the player is performing
|
||||||
|
currentWorkFactionName: Name of the faction the player is currently working for
|
||||||
|
currentWorkFactionDescription: Description of the kind of work the player is currently doing
|
||||||
|
workHackExpGainRate: Amount of Hacking experience the player will gain every cycle (fifth of a second)
|
||||||
|
workStrExpGainRate: Amount of Strength experience the player will gain every cycle
|
||||||
|
workDefExpGainRate: Amount of Defense experience the player will gain every cycle
|
||||||
|
workDexExpGainRate: Amount of Dexterity experience the player will gain every cycle
|
||||||
|
workAgiExpGainRate: Amount of Agility experience the player will gain every cycle
|
||||||
|
workChaExpGainRate: Amount of Charisma experience the player will gain every cycle
|
||||||
|
workRepGainRate: Amount of Reputation the player will gain every cycle
|
||||||
|
workMoneyGainRate: Amount of Money the player will gain every cycle
|
||||||
|
workMoneyLossRate: Amount of Money the player will lose every cycle
|
||||||
|
workHackExpGained: Total Hacking experience gained while working thus far
|
||||||
|
workStrExpGained: Total Strength experience gained while working thus far
|
||||||
|
workDefExpGained: Total Defense experience gained while working thus far
|
||||||
|
workDexExpGained: Total Dexterity experience gained while working thus far
|
||||||
|
workAgiExpGained: Total Agility experience gained while working thus far
|
||||||
|
workChaExpGained: Total Charisma experience gained while working thus far
|
||||||
|
workRepGained: Total Reputation gained while working thus far
|
||||||
|
workMoneyGained: Total Money gained while working thus far
|
||||||
|
createProgramName: Name of the program the player is currently creating
|
||||||
|
createProgramReqLvl: Hacking skill required to make that program
|
||||||
|
className: Name of the class the player is currently studying
|
||||||
|
crimeType: Name of the crime the player last started
|
||||||
|
work_money_mult: Salary multiplier (from Source-Files and Augments)
|
||||||
|
hacknet_node_money_mult: Hacknet Node production multiplier (from Source-Files and Augments)
|
||||||
|
hacknet_node_purchase_cost_mult: Hacknet Node purchase cost multiplier (from Source-Files and Augments)
|
||||||
|
hacknet_node_ram_cost_mult: Hacknet Node RAM upgrade cost multiplier (from Source-Files and Augments)
|
||||||
|
hacknet_node_core_cost_mult: Hacknet Node Core purchase cost multiplier (from Source-Files and Augments)
|
||||||
|
hacknet_node_level_cost_mult: Hacknet Node level upgrade cost multiplier (from Source-Files and Augments)
|
||||||
|
hasWseAccount: Boolean indicating whether the player has a WSE Account
|
||||||
|
hasTixApiAccess: Boolean indicating whether the player has TIX API Access
|
||||||
|
has4SData: Boolean indicating whether the player has 4S Market Data Access
|
||||||
|
has4SDataTixApi: Boolean indicating whether the player has 4S Market Data TIX API Access
|
||||||
|
bladeburner_max_stamina_mult: Bladeburner Max Stamina multiplier (from Source-Files and Augments)
|
||||||
|
bladeburner_stamina_gain_mult: Bladeburner Stamina Gain multiplier (from Source-Files and Augments)
|
||||||
|
bladeburner_success_chance_mult: Bladeburner Success Chance multiplier (from Source-Files and Augments)
|
||||||
|
bitNodeN: Current BitNode number
|
||||||
|
totalPlaytime: Total amount of time the game has been running, in milliseconds
|
||||||
|
playtimeSinceLastAug: Milliseconds since the last time Augmentations were installed
|
||||||
|
playtimeSinceLastBitnode: Milliseconds since this BitNode was started
|
||||||
|
jobs: A mapping of companies the player works for to the title of the player's job at that company
|
||||||
|
factions: An array of factions the player is currently a member of
|
||||||
|
tor: Boolean indicating whether or not you have a tor router
|
||||||
|
}
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
player = getPlayer();
|
||||||
|
print('My charisma level is: ' + player.charisma);
|
||||||
@@ -3,9 +3,9 @@ getPortHandle() Netscript Function
|
|||||||
|
|
||||||
.. js:function:: getPortHandle(port)
|
.. js:function:: getPortHandle(port)
|
||||||
|
|
||||||
:param number port: Port number
|
|
||||||
:RAM cost: 10 GB
|
:RAM cost: 10 GB
|
||||||
|
|
||||||
Get a handle to a Netscript Port. See more details here: :ref:`netscript_ports`
|
:param number port: Port number
|
||||||
|
:returns: portHandle object. See :ref:`netscript_ports`
|
||||||
|
|
||||||
**WARNING:** Port Handles only work in :ref:`netscriptjs`. They will not work in :ref:`netscript1`.
|
**WARNING:** Port Handles only work in :ref:`netscriptjs`. They will not work in :ref:`netscript1`.
|
||||||
|
|||||||
@@ -6,11 +6,10 @@ getPurchasedServerCost() Netscript Function
|
|||||||
:RAM cost: 0.25 GB
|
:RAM cost: 0.25 GB
|
||||||
|
|
||||||
:param number ram: Amount of RAM of a potential purchased server. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20)
|
:param number ram: Amount of RAM of a potential purchased server. Must be a power of 2 (2, 4, 8, 16, etc.). Maximum value of 1048576 (2^20)
|
||||||
|
:returns: Cost to purchase a server with the specified amount of ``ram``.
|
||||||
|
|
||||||
Returns the cost to purchase a server with the specified amount of *ram*.
|
Example:
|
||||||
|
|
||||||
Examples::
|
.. code-block:: javascript
|
||||||
|
|
||||||
for (i = 1; i <= 20; i++) {
|
getPurchasedServerCost(8192); // returns: 450560000
|
||||||
tprint(i + " -- " + getPurchasedServerCost(Math.pow(2, i)));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ getPurchasedServerLimit() Netscript Function
|
|||||||
.. js:function:: getPurchasedServerLimit()
|
.. js:function:: getPurchasedServerLimit()
|
||||||
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
:returns: The maximum number of servers you can purchase.
|
||||||
|
|
||||||
Returns the maximum number of servers you can purchase
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getPurchasedServerLimit() // returns: 25
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ getPurchasedServerMaxRam() Netscript Function
|
|||||||
.. js:function:: getPurchasedServerMaxRam()
|
.. js:function:: getPurchasedServerMaxRam()
|
||||||
|
|
||||||
:RAM cost: 0.05 GB
|
:RAM cost: 0.05 GB
|
||||||
|
:returns: The maximum RAM that a purchased server can have.
|
||||||
|
|
||||||
Returns the maximum RAM that a purchased server can have
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getPurchasedServerMaxRam(); // returns: 1048576
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
getPurchasedServers() Netscript Function
|
getPurchasedServers() Netscript Function
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
.. js:function:: getPurchasedServers([hostname=true])
|
.. js:function:: getPurchasedServers()
|
||||||
|
|
||||||
:param boolean hostname:
|
|
||||||
Specifies whether hostnames or IP addresses should be returned. If it's true then hostnames will be returned, and if false
|
|
||||||
then IPs will be returned. If this argument is omitted then it is true by default
|
|
||||||
:RAM cost: 2.25 GB
|
:RAM cost: 2.25 GB
|
||||||
|
:returns: String array of hostnames of all of the servers you have purchased.
|
||||||
|
|
||||||
Returns an array with either the hostnames or IPs of all of the servers you have purchased.
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getPurchasedServers(); // returns: ['grow-server-0', 'grow-server-1', 'weaken-server-0']
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
getRunningScript() Netscript Function
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript()
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:returns: Script object or null if not found.
|
||||||
|
|
||||||
|
The object has the following properties:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
// Script arguments
|
||||||
|
args
|
||||||
|
|
||||||
|
// Script filename
|
||||||
|
filename
|
||||||
|
|
||||||
|
// This script's logs. An array of log entries
|
||||||
|
logs
|
||||||
|
|
||||||
|
// Flag indicating whether the logs have been updated since
|
||||||
|
// the last time the UI was updated
|
||||||
|
logUpd
|
||||||
|
|
||||||
|
// Total amount of hacking experience earned from this script when offline
|
||||||
|
offlineExpGained
|
||||||
|
|
||||||
|
// Total amount of money made by this script when offline
|
||||||
|
offlineMoneyMade
|
||||||
|
|
||||||
|
// Number of seconds that the script has been running offline
|
||||||
|
offlineRunningTime
|
||||||
|
|
||||||
|
// Total amount of hacking experience earned from this script when online
|
||||||
|
onlineExpGained
|
||||||
|
|
||||||
|
// Total amount of money made by this script when online
|
||||||
|
onlineMoneyMade
|
||||||
|
|
||||||
|
// Number of seconds that this script has been running online
|
||||||
|
onlineRunningTime
|
||||||
|
|
||||||
|
// Process ID.
|
||||||
|
pid
|
||||||
|
|
||||||
|
// How much RAM this script uses for ONE thread
|
||||||
|
ramUsage
|
||||||
|
|
||||||
|
// IP of the server on which this script is running
|
||||||
|
server
|
||||||
|
|
||||||
|
// Number of threads that this script is running with
|
||||||
|
threads
|
||||||
|
}
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript(); // get the current script.
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript(pid)
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:param number pid: PID of the script.
|
||||||
|
:returns: Script object or null if not found.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript(42); // get the script with pid 42.
|
||||||
|
|
||||||
|
.. js:function:: getRunningScript(fn, hostname[, args...])
|
||||||
|
|
||||||
|
:RAM cost: 0.3 GB
|
||||||
|
:param number fn: Filename of the target script.
|
||||||
|
:param number hostname: Hostname of the server running the script.
|
||||||
|
:param number args...: Arguments that the script is running with.
|
||||||
|
:returns: Script object or null if not found.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. code-block:: javascript
|
||||||
|
|
||||||
|
getRunningScript("example.script", "home", "foodnstuff"); // get the script called "example.script" on "home" with argument "foodnstuff"
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
getScriptExpGain() Netscript Function
|
getScriptExpGain() Netscript Function
|
||||||
=====================================
|
=====================================
|
||||||
|
|
||||||
.. js:function:: getScriptExpGain([scriptname], [hostname/ip], [args...])
|
.. js:function:: getScriptExpGain([scriptname[, hostname[, args...]]])
|
||||||
|
|
||||||
:param string scriptname: Filename of script
|
|
||||||
:param string hostname/ip: Server on which script is running
|
|
||||||
:param args...: Arguments that the script is running with
|
|
||||||
:RAM cost: 0.1 GB
|
:RAM cost: 0.1 GB
|
||||||
|
:param string scriptname: Filename of script.
|
||||||
|
:param string hostname: Server on which script is running.
|
||||||
|
:param args...: Arguments that the script is running with.
|
||||||
|
:returns: The amount of hacking experience the specified script generates
|
||||||
|
while online.
|
||||||
|
|
||||||
Returns the amount of hacking experience the specified script generates while online (when the game is open, does not apply for offline experience gains).
|
This function can also return the total experience gain rate of all of your
|
||||||
Remember that a script is uniquely identified by both its name and its arguments.
|
active scripts by running the function with no arguments.
|
||||||
|
|
||||||
This function can also return the total experience gain rate of all of your active scripts by running the function with no arguments.
|
.. note:: A script is uniquely identified by both its name and its
|
||||||
|
arguments.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user