Compare commits

..

484 Commits

Author SHA1 Message Date
Olivier Gagnon
d96ad9fa6e v0.51.8 2021-05-07 22:26:02 -04:00
Olivier Gagnon
5dd32ef4e4 Scripts transfer stats to parent on death. 2021-05-07 22:01:52 -04:00
Olivier Gagnon
6dde89f3c4 0518 2021-05-07 22:01:52 -04:00
Olivier Gagnon
9a9d2e1f81 ls-changes 2021-05-07 22:01:23 -04:00
Pimvgd
d347bf568e Update Overview.jsx
fix space
2021-05-07 19:34:57 -04:00
Daniel Ferri
62e2f0582a Fixed bug with faction invitations not getting deleted 2021-05-07 19:12:30 -04:00
Daniel Ferri
68eb68a89e Added accepting numbers in 1b format to faction donations 2021-05-07 19:12:30 -04:00
Daniel Ferri
13206a8c3e Fixed casing on import
Did not want to compile without the change
2021-05-07 19:12:30 -04:00
Olivier Gagnon
8b7f140115 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-05-07 02:14:34 -04:00
Olivier Gagnon
16c8c78b54 Add installBackdoor 2021-05-07 02:13:33 -04:00
Olivier Gagnon
cbb47772db Add installBackdoor 2021-05-07 02:09:30 -04:00
Olivier Gagnon
0642491402 hotfix backdooring the world daemon not resetting flags 2021-05-06 11:12:41 -04:00
Olivier Gagnon
c7e34d4a56 hotfix backdooring the world daemon not resetting flags 2021-05-06 11:12:04 -04:00
hydroflame
8be63be17b Merge pull request #942 from danielyxie/dev
Another build for the quick and easy stuff.
2021-05-05 21:40:14 -04:00
Olivier Gagnon
08207ac79b another build 2021-05-05 21:39:48 -04:00
Olivier Gagnon
6747a509ff Reword the Milestones 2021-05-05 21:36:43 -04:00
Olivier Gagnon
c7c86240db Faction Donation does not appear on special or gang factions, passive rep doesnt work on gang or special factions 2021-05-05 21:32:06 -04:00
hydroflame
ce0c3d71f4 Merge pull request #941 from danielyxie/dev
hotfix for some stuff
2021-05-05 21:07:09 -04:00
Olivier Gagnon
5bb6a72c90 build 2021-05-05 21:02:54 -04:00
hydroflame
5a06c60c27 Merge pull request #940 from danielyxie/0517-2
0517 hotfix
2021-05-05 21:00:14 -04:00
Olivier Gagnon
764c2533b4 hashGainRate updated to use the correct usedRam and maxRam 2021-05-05 19:18:47 -04:00
Olivier Gagnon
a9cee6f907 Fix analyze Root Access displaying always Yes 2021-05-05 19:15:56 -04:00
Olivier Gagnon
a10100bf60 You cna now cd in dir that only contain text files. 2021-05-05 19:09:14 -04:00
Olivier Gagnon
cedac23dfa CodingContractPopup now correctly displays innerHTML, desc should be changed to return jsx though. 2021-05-05 19:06:08 -04:00
Olivier Gagnon
f7c1d64033 Delete Active Scripts actually deletes active scripts on all servers, not just home 2021-05-05 18:58:53 -04:00
hydroflame
7d6d0eac32 Merge pull request #939 from ModdedGamers/dev
Make it clear that maxNumNodes returns Infinity
2021-05-05 11:03:22 -04:00
Modded Gamers
34768591b7 Make it clear that maxNumNodes returns Infinity
this function returns Infinity in some cases, so this makes that clearer.
2021-05-05 10:00:16 -04:00
Daniel Xie
827c79f70c Add build for hotfix 2021-05-05 04:31:54 -07:00
Daniel Xie
0415c7aa7c Give NeuroFlux for SF-12 before re-calculating multipliers 2021-05-05 04:23:10 -07:00
hydroflame
0c744d98b9 Merge pull request #933 from danielyxie/dev
* .ns script no longer needlessly recompile
* scping the exact same content over doesn't trigger an actual scp
* world daemon can be backdoored
* Coding contract title is click-to-copy
* Sleeve memory covenant upgrade reacts better.
2021-05-03 19:54:31 -04:00
Olivier Gagnon
11cbda6974 build 2021-05-03 19:54:11 -04:00
Olivier Gagnon
e284f49747 Covenant sleeve memory upgrade styling and more reactive text field 2021-05-03 19:52:19 -04:00
Olivier Gagnon
7777c400a5 Make coding contract title click-to-copy 2021-05-03 19:46:04 -04:00
Olivier Gagnon
dae0448744 world daemon can now be backdoored 2021-05-03 19:00:01 -04:00
Olivier Gagnon
02a4e85353 Build nsjs recompile hotfix 2021-05-03 18:54:54 -04:00
hydroflame
3cbf225c98 Fix script needlessly being recompiled (#932)
* Fix nsjs recompiling needlesly.
2021-05-03 18:53:10 -04:00
hydroflame
8006e976a5 Merge pull request #929 from danielyxie/dev
Fix research tree not appearing
2021-05-03 18:25:04 -04:00
Olivier Gagnon
5613d371c9 Fix research tree not appearing 2021-05-03 18:24:22 -04:00
hydroflame
7c9d6669f7 Merge pull request #928 from danielyxie/dev
Hotfix Mission.jsx fake unused import
2021-05-03 17:25:19 -04:00
Olivier Gagnon
c6f0551709 Hotfix Mission.jsx fake unused import 2021-05-03 17:24:39 -04:00
hydroflame
f57eed4de1 Merge pull request #926 from danielyxie/dev
Hotfix
2021-05-03 16:03:12 -04:00
Olivier Gagnon
b99711788f Hotfix negative money, n00dles metadata and guide 2021-05-03 16:02:26 -04:00
Olivier Gagnon
08aac8e35d change noodles metadata. 2021-05-03 12:56:27 -04:00
hydroflame
e3579b7229 Merge pull request #925 from danielyxie/dev
did I forget the build again?
2021-05-03 12:27:21 -04:00
Olivier Gagnon
662d0dd5fb did I forget the build again 2021-05-03 12:26:37 -04:00
hydroflame
77c40b5d67 Merge pull request #924 from danielyxie/dev
Forgot to push the build
2021-05-03 12:21:28 -04:00
Olivier Gagnon
ee759a8dd6 Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-05-03 12:20:54 -04:00
hydroflame
ad9c7ec696 Merge pull request #923 from danielyxie/dev
0.51.7
2021-05-03 12:18:18 -04:00
Olivier Gagnon
c9b5aaa2f7 v0.51.7 2021-05-03 12:17:05 -04:00
hydroflame
b554328a77 Merge pull request #915 from danielyxie/noodles
Noodles
2021-05-03 12:01:39 -04:00
Olivier Gagnon
c421c57e56 address comments. 2021-05-03 11:58:11 -04:00
hydroflame
fb42d5cd79 Merge pull request #918 from Pimvgd/patch-4
typo fixes for blackops
2021-05-03 02:26:47 -04:00
hydroflame
6203d8d6f4 Merge pull request #919 from Daniferrito/patch-2
Update ps documentation
2021-05-03 02:21:22 -04:00
Olivier Gagnon
d422028737 analyze and ServerProfiler.exe handle hacknet servers better. 2021-05-03 02:20:31 -04:00
Olivier Gagnon
136d769d55 Change faction invitation Yes,No to say Join and Decide later 2021-05-03 02:01:45 -04:00
Olivier Gagnon
daaab1d6f1 Fix forgotten text for Source-File 12 2021-05-03 01:55:04 -04:00
Olivier Gagnon
4f7befb639 Fix miscalculation of source file flags on the bitverse screen. 2021-05-03 01:50:09 -04:00
Olivier Gagnon
9976ed136c fix money formatting for amount under 1000 2021-05-03 01:44:02 -04:00
Olivier Gagnon
8c2e661e08 Remove console.log 2021-05-03 01:41:16 -04:00
Olivier Gagnon
e6e598eeb4 moved augmentations between city faction to be more even. 2021-05-03 01:40:22 -04:00
Olivier Gagnon
4d9439a007 Added getServerMaxRam and getServerUsedRam, deprecated getServerRam 2021-05-03 01:07:46 -04:00
Olivier Gagnon
9951c8b18f Fix mistake in hacknet API example 2021-05-03 00:51:12 -04:00
Olivier Gagnon
800c673839 Fix character-overview-text being nested twice. 2021-05-03 00:47:56 -04:00
Olivier Gagnon
065544909b thread count formatted with commas every thousands. 2021-05-03 00:45:21 -04:00
Olivier Gagnon
4eaf68c940 Donation is always visible but locked before favor requirements are fulfilled. 2021-05-03 00:37:53 -04:00
Olivier Gagnon
a14a694df3 Fix sleeves not being to work out at volhaven 2021-05-03 00:27:12 -04:00
Dani
3ab61cbaf3 Update ps documentation 2021-05-02 23:48:20 +02:00
Pimvgd
f49aff05d7 typo fixes for blackops 2021-05-02 23:44:59 +02:00
hydroflame
e2371a0ef6 Merge pull request #917 from Daniferrito/patch-1
Fixed #916
2021-05-02 17:38:47 -04:00
Dani
6a2b3ee52e Fixed #916 2021-05-02 23:37:09 +02:00
Olivier Gagnon
5a45e3584d Formatted time in netscript hgw display in human time, milliFormat now displays milli sometimes 2021-05-02 01:04:49 -04:00
Olivier Gagnon
56ce83cce5 Fix cashroot not displaying properly 2021-05-02 00:07:04 -04:00
Olivier Gagnon
d126b6d8c5 Fix sf minus 1 bad constant 2021-05-01 23:44:23 -04:00
Olivier Gagnon
7172ef6dae SF12 now lets player start with Neuroflux 2021-05-01 23:42:52 -04:00
Olivier Gagnon
a8d0b6e13d Tail now accepts PID 2021-05-01 23:33:44 -04:00
Olivier Gagnon
d2d6453a78 quick b1tflum3 2021-05-01 23:23:04 -04:00
Olivier Gagnon
89cdecb05f getBitnodeMultipliers is available inside BN5 2021-05-01 23:08:51 -04:00
Olivier Gagnon
81fdff9068 Revert tutorial servers and add the n00dles server. 2021-05-01 23:08:51 -04:00
hydroflame
34a20802c9 Merge pull request #910 from danielyxie/lint-fix
The mega linting patch
2021-05-01 23:08:10 -04:00
hydroflame
6d53ff109b Merge pull request #914 from Pimvgd/patch-3
Typo fixes
2021-05-01 21:50:08 -04:00
Pimvgd
8eab9f3b59 Update Bladeburner.jsx 2021-05-02 00:09:13 +02:00
Pimvgd
f40faadcc4 Update augmentations.rst 2021-05-01 18:04:27 +02:00
Pimvgd
fb129198a6 Update AugmentationHelpers.jsx
more typos
2021-05-01 17:43:13 +02:00
Pimvgd
3eecff1de6 Update netscriptbladeburnerapi.rst
fix typos
2021-05-01 17:34:55 +02:00
Olivier Gagnon
d745150c45 all the lints 2021-05-01 03:17:31 -04:00
Olivier Gagnon
abe0330dc3 css --fix 2021-04-29 23:59:43 -04:00
Olivier Gagnon
3fad505096 run auto fix lint 2021-04-29 23:52:56 -04:00
hydroflame
b2ac383b69 Merge pull request #909 from danielyxie/dev
When you hotfix you need to build
2021-04-29 13:41:48 -04:00
Olivier Gagnon
77cb63e36a When you hotfix you need to build 2021-04-29 13:41:13 -04:00
hydroflame
7df4aac8e6 Merge pull request #908 from danielyxie/dev
hotfix netscript access to formulas and getServer
2021-04-29 13:39:35 -04:00
Olivier Gagnon
50b490ba8d fix netscript access 2021-04-29 13:39:03 -04:00
hydroflame
15bd8a6233 Merge pull request #907 from danielyxie/dev
update patch notes
2021-04-28 20:26:38 -04:00
Olivier Gagnon
20c593b236 update patch notes 2021-04-28 20:25:51 -04:00
hydroflame
52a80ad236 v0.51.6 (#905)
* Make command `cd` without arguments an alias for `cd /` (#853)

In most shells `cd` without arguments takes you to the home directory
of the current user. I keep trying to do this due to muscle memory
from working in terminals, so I figured I'd make it do something useful.

There is no home directory in the game, but going to / is the closest
thing we have, since that is the starting point for the user in the
game.

* Add new `backdoor` terminal command (#852)

* Add the backdoor command to the terminal

This command will perform a manual hack without rewarding money. It will be used for the story, mainly for faction hacking tests

* Add tab completion for backdoor command

* Add help text for backdoor command

* Change condition syntax to be more consistent with others

* Extract reused code block so it is always called after actions

* Update documentation for new backdoor command

Modified references to manual hack as it isn't for factions anymore

* Remove extra parenthesis

* Rename manuallyHacked to backdoorInstalled

* Fix typo

* Change faction test messages to use backdoor instad of hack

* Rename more instances of manuallyHacked

* fixed typo in helptext of darkweb buy (#858)

* Fix typos and unify descriptions of augmentations (#859)

Made an attempt to...
- give all "+rep% company/faction" the same text
- make all augmentations with a single effect use a single line to describe the effect
- make all effects end with a period

* Made Cashroot starter kit display its tooltip with the money formatted properly and in gold

* fix typo in docs (#860)

* Initial code for Casino Card Deck implementation

* Casino Blackjack Implementation

* Update some tools (eslint, typescript)

* Blackjack code cleanup

* Update README_contribution

* Update ScriptHelpers.js (#861)

expand error message

* More augmentation typo fixes (#862)

* Add Netscript function getCurrentScript (#856)

Add netscript function that returns the current script.

* Added milestones menu to guide new players. (#865)

Milestone menu

* fix typos in milestones (#866)

Co-authored-by: sschmidTU <s.schmid@phonicscore.com>

* Corrupt location title when backdoor is installed (#864)

* Add corruptableText component

* Corrupt location title if backdoor is installed

* Formatting

* Add helper to check value of backdoorInstalled

Helper could be oneline but it would make it less readable

* Fix some formatting

* Add settings option to disable text effects

* Import useState

* getRunningScript (#867)

* Replaced getCurrentScript with getRunningScript

* Bunch of smaller fixes (#904)

Fix #884
Fix #879
Fix #878
Fix #876
Fix #874
Fix #873
Fix #887
Fix #891
Fix #895

* rework the early servers to be more noob friendly (#903)

* v0.51.6

Co-authored-by: Andreas Eriksson <2691182+AndreasTPC@users.noreply.github.com>
Co-authored-by: Jack <jackdewinter1@gmail.com>
Co-authored-by: Teun Pronk <5228255+Crownie88@users.noreply.github.com>
Co-authored-by: Pimvgd <Pimvgd@gmail.com>
Co-authored-by: Daniel Xie <daniel.xie@flockfreight.com>
Co-authored-by: Simon <33069673+sschmidTU@users.noreply.github.com>
Co-authored-by: sschmidTU <s.schmid@phonicscore.com>
2021-04-28 20:07:26 -04:00
hydroflame
b2aafea656 v0.51.5 (#848) 2021-04-21 08:20:26 -04:00
hydroflame
135df8703c V0.51.4 (#847)
* BladeBurner
    * nerfed int exp gained.

    Documentation
    * purchaseServer specifies what happens on failure.
    * Fixed typo in recommended bitnode page.
    * Removed misleading ram requirements for hacking factions.

    Netscript
    * growthAnalyze handles Infinity correctly.

    Misc.
    * Faction Augmentation will list how much reputation is required even after
      that goal has been reached.
    * Removed dollar sign in travel agency confirmation.
    * Fixed typo in alpha-omega.lit

* the game save text no longer obstruct the save game and options button

* the text editors now remember where your cursor was and restores it when loading the same script again.

* v0.51.4
2021-04-19 21:26:51 -04:00
hydroflame
4743801e86 hotfix (#846) 2021-04-18 11:33:46 -04:00
hydroflame
4e5ebcfe6f V0.51.3 (#845)
v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)
-------

Passive faction reputation
* Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the
  reputation you'd gain working for them. It's not op but it feels a bit
  more useful.

Netscript
* print/tprint now take any number of arguments.
* print/tprint will now print object as json.
* print/tprint now handle passing in an undefined argument properly.

Casino
* Cannot bet negative money anymore.
* Roulette max bet is a bit higher.
* Coin Flip has a small cooldown.
* All buttons reject unstrusted mouse events.

Documentation
* Changed a message that said nsjs only works on Chrome.

Bugfix
* hacknet.maxNumNodes now works for both nodes and servers.
* Fixed a bug where the popup boxes would contain data from previous popup boxes.
* .js files will also have the export async function boilerplate.

Misc.
* turned off autocomplete for the terminal text input.
* Fixed an issue on Windows+Firefox where pressing up on the terminal would
  bring the cursor to the begining of the line. (Issue #836)
* Hacknet node names is easier to handle for screen readers.
* Money spent on classes is now tracked independently of work money.
* running coding contract from the terminal will display its name.
2021-04-18 11:18:56 -04:00
hydroflame
80b703639e Small hotfix (#840)
* yesno box now correctly clean up before new content is loaded in.

* formatHp doesnt display decimal, duh

* character overview uses numeralWrapper formatHp

* minor formatting stuff

* Class spending is tracked indepedently of work money

* Made an augmentation named after myself.

* hotfix a bunch of small stuff
2021-04-12 20:03:32 -04:00
hydroflame
0afdba8f38 fixed ns imports requiring semicolon (#839) 2021-04-10 02:26:13 -04:00
hydroflame
925e96345d v0.51.2 (#838)
* infiltration use buttons instead of a links

* minor accessibility patch

* Hospitalization will not cost more than 10% of the players money.

* Adde hospitalization netscript function

* Removed the suggestion that the combat path will lead to Daedalus, it still will. But new players should not be told that this is a viable path to completing a BitNode.

* getMemberInformation now returns everything about the member.

* New netscript function to get the players hacknet server hash capacity

* yesno dialog box will not keep older messages anymore

* v0.51.1

* Casino part 1

* Discord link in options, documentation for getMemberInformation updated, dev menu has more money options, tech vendors now handle max cores or max ram better

* Removed text under Factiosn referencing rejected factions.

* Removed html element forgotten in plain text

* Casino implementation

* v0.51.2
2021-04-09 18:12:31 -04:00
hydroflame
db2bf79e3b v0.51.1 (#835)
* infiltration use buttons instead of a links

* minor accessibility patch

* Hospitalization will not cost more than 10% of the players money.

* Adde hospitalization netscript function

* Removed the suggestion that the combat path will lead to Daedalus, it still will. But new players should not be told that this is a viable path to completing a BitNode.

* getMemberInformation now returns everything about the member.

* New netscript function to get the players hacknet server hash capacity

* yesno dialog box will not keep older messages anymore

* v0.51.1
2021-04-06 03:50:09 -04:00
hydroflame
6f330efc44 Added Disable ASCII art to options (#832)
* hotfix getPlayer missing factions

* Added ability to disable ascii art in options. ASCII art is impossible to deal with for screenreaders.
2021-04-02 20:14:35 -04:00
hydroflame
708c73fa0f hotfix getPlayer missing factions (#831) 2021-04-01 12:55:43 -04:00
hydroflame
c7febd5551 Failed crime no longer pretend you gained money. (#830) 2021-04-01 00:06:00 -04:00
hydroflame
ddbdf66d00 hotfix analyze (#828)
* hotfix analyze
2021-03-31 11:45:55 -04:00
hydroflame
e572c6dad8 v0.51.0 (#826)
* Hash upgrades and Bladeburner skills can now be clicked to copy to clipboard

* Aug purchase confirmation popup displays money in 0.000a format

* Character now displays hacknet server info properly

* Character,Info now displays hacknet server info correctly.

* Formulas (#825)

Formulas API v0.1

* Make all money the same color, same for reputation, format all numbers consistently.

* rename a lot of the formulas function to no longer contain calculate

* added hacking related formulas

* removed unused variable

* v0.51.0
2021-03-31 00:45:21 -04:00
hydroflame
ff097db1e2 Merge pull request #824 from danielyxie/dev
Update sphinx changelog
2021-03-25 21:21:11 -04:00
Olivier Gagnon
ad12f0e551 Update sphinx changelog 2021-03-25 21:20:37 -04:00
hydroflame
93f8785ec6 Merge pull request #823 from danielyxie/dev
v0.50.2
2021-03-25 21:16:22 -04:00
Olivier Gagnon
69124e7146 v0.50.2 2021-03-25 21:15:02 -04:00
Olivier Gagnon
8a42f6e49c user stack trace now works for firefox 2021-03-25 02:48:15 -04:00
Olivier Gagnon
2ac4cd41bb Added new BitNode multiplier, GangKarmaRequirement. Different BitNodes need different amount of negative karma to create a Gang. 2021-03-23 21:47:47 -04:00
Olivier Gagnon
28584c8461 executeCommand has been removed in favor of connect and manualHack, which is what people have been asking for. 2021-03-23 21:30:15 -04:00
Olivier Gagnon
1eddddd14f Added executeCommand netscript function 2021-03-23 16:02:34 -04:00
Olivier Gagnon
42e9a368b4 modified changelog 2021-03-23 15:26:36 -04:00
Olivier Gagnon
40713a4112 Added alt g shortcut to gang and alt b shortcut to bladeburner 2021-03-23 15:25:18 -04:00
hydroflame
8e79658e67 Merge pull request #821 from danielyxie/dev
Fix typo in patch notes.
2021-03-22 18:57:10 -04:00
Olivier Gagnon
6efc3ec75e Fix typo in patch notes. 2021-03-22 18:56:32 -04:00
hydroflame
9840e1f4eb Merge pull request #820 from danielyxie/dev
0.50.1 hotfix version number
2021-03-22 18:51:52 -04:00
Olivier Gagnon
7cdca5e813 fix version number 2021-03-22 18:51:11 -04:00
hydroflame
d170693da4 Merge pull request #819 from danielyxie/dev
v0.50.1
2021-03-22 18:44:49 -04:00
Olivier Gagnon
31a9c041b4 Changelog related stuff 2021-03-22 18:44:41 -04:00
Olivier Gagnon
ce7c2c309c fix bug with getTaskTask release 50.1 2021-03-22 18:42:39 -04:00
Olivier Gagnon
29abffd464 Added the "Unclickable" Exploit. 2021-03-22 14:48:48 -04:00
Olivier Gagnon
ae4b8228f7 fixed a bug where completing a non-repeatable bitnode thats already max level would display level 4 on the bitverse and color it like level 1. 2021-03-21 18:41:48 -04:00
Olivier Gagnon
04bc2bebdd Factions Augmentation page now lists purchased augmentation separatly. 2021-03-21 18:03:16 -04:00
hydroflame
8f30e60d08 Merge pull request #818 from danielyxie/dev
v0.50.0
2021-03-20 05:35:16 -04:00
Olivier Gagnon
e8aa1851c5 build 2021-03-20 05:32:38 -04:00
Olivier Gagnon
7232a786ed Intelligence rework, most intelligence gain have been multiplied by at least 100, if not more. All intelligence use have been reviewed and often boosted but by a percentage. Typically this means intelligence gives a 2-6% boost to everything for normal players and around 13% for int farmers. 2021-03-20 05:29:53 -04:00
Olivier Gagnon
2507899762 Mission format rep earned with 0.000a 2021-03-20 03:54:52 -04:00
Olivier Gagnon
26149d5a01 fix numeralWrapper should not return NaN anymore as it'll default to 1e+X. 2021-03-19 23:08:41 -04:00
Olivier Gagnon
670394ca2f format rep gain in hacking mission. 2021-03-19 22:56:43 -04:00
Olivier Gagnon
e0745d7757 remove wiki button from hacking mission, fix jsx class not being className 2021-03-19 22:54:10 -04:00
Olivier Gagnon
dc79f7a940 Add ram cost to softReset documentation 2021-03-18 14:37:21 -04:00
Olivier Gagnon
bf4d841f88 align aug mults in bladeburner, faction augmentation now display required rep in 0.000a 2021-03-17 13:40:31 -04:00
Olivier Gagnon
4c30f107e3 convert more netscript functions to use common error message 2021-03-16 06:01:15 -04:00
Olivier Gagnon
c9fe8d9b65 Sleeve UI improvements. 2021-03-16 05:42:12 -04:00
Olivier Gagnon
29ea1281e0 changelog 2021-03-15 23:41:10 -04:00
Olivier Gagnon
3ec54bcdd8 Hacking factions no longer have hacking level requirements since the servers they need to hack already have requirements, formatting and styling in sleeves. 2021-03-15 23:40:28 -04:00
Olivier Gagnon
4892f0bd79 convert Hacking.js to Hacking.ts 2021-03-14 01:38:50 -05:00
Olivier Gagnon
62c571ef3a Convert CodingContractGenerator to typescript 2021-03-14 01:31:23 -05:00
Olivier Gagnon
6c57d548ec Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-03-14 01:09:05 -05:00
Olivier Gagnon
6c0b5b3ed9 Converting random pieces of code to ts 2021-03-14 01:08:24 -05:00
hydroflame
f288d982db Merge pull request #815 from RSBat/patch-2
Fix AutoLink.exe substitution in "Getting started"
2021-03-13 15:31:18 -05:00
hydroflame
101834fcaf Merge pull request #817 from danielyxie/dev
Hotfix 0.49.2, link tFormat in documentation and update version so it…
2021-03-13 15:30:50 -05:00
Olivier Gagnon
642c7a107a Hotfix 0.49.2, link tFormat in documentation and update version so it shows up in-game 2021-03-13 15:30:09 -05:00
hydroflame
63da8d709a Merge pull request #816 from danielyxie/dev
0.49.3
2021-03-13 15:19:56 -05:00
Olivier Gagnon
31e9f65f06 0.49.3 2021-03-13 15:19:07 -05:00
Olivier Gagnon
4ce7981cc0 fix issue under Character, Stats where the wrong effective stats was being calculated 2021-03-13 15:15:36 -05:00
Olivier Gagnon
d6016f490c bladeburner slowly being converted to typescript, added ScriptHackMoneyGain multiplier which is the money you actually gain from script hacks, not money drained, important for BN8 2021-03-13 15:10:55 -05:00
Olivier Gagnon
9ccdd7f4e5 unify checkboxes in bladeburner 2021-03-12 15:56:25 -05:00
Olivier Gagnon
def3846b72 bladeburner textbox now match style. 2021-03-12 14:38:49 -05:00
Olivier Gagnon
c76110b575 added tFormat to represent times. 2021-03-12 14:32:07 -05:00
Olivier Gagnon
3db440fd95 remove console.log calls 2021-03-12 14:20:56 -05:00
Olivier Gagnon
1df0af0fa4 fix bug in ace keywords highlight, more formatting in gang, update changelog 2021-03-12 14:20:39 -05:00
Olivier Gagnon
f8d65b9240 General style improvement in gang 2021-03-12 14:09:35 -05:00
Olivier Gagnon
a4fe6d80d6 update changelog, just to keep track 2021-03-12 13:47:23 -05:00
Olivier Gagnon
3a31ebdce3 Sleeves karma gain scales with sync. 2021-03-12 13:44:06 -05:00
Olivier Gagnon
8b812b92cc Ace now creates the list of keywords from the actual ns object, meaning we cant forget to add functions to that list anymore. Also fixes the bug where clearLog would not get highlighted because clear took precedence. 2021-03-12 13:31:27 -05:00
Sergei Kozelko
753a1f1193 Fix AutoLink.exe substitution in "Getting started" 2021-03-12 16:35:15 +03:00
Olivier Gagnon
2ce6ff2041 work to make documentation unified. 2021-03-12 02:51:56 -05:00
hydroflame
726c36f276 Merge pull request #814 from danielyxie/dev
0.49.1 fix ns.print
2021-03-11 20:47:46 -05:00
Olivier Gagnon
a00c253dcb 0.49.1 fix ns.print 2021-03-11 20:47:05 -05:00
hydroflame
640795dbe9 Merge pull request #813 from danielyxie/dev
v0.49.0
2021-03-11 20:41:05 -05:00
Olivier Gagnon
123628ec0b update changelog and build 0.49 2021-03-11 20:39:31 -05:00
Olivier Gagnon
cae28e2d25 softReset now accepts a callback script like installAugmentations 2021-03-11 20:37:58 -05:00
Olivier Gagnon
486d025572 Gang ascension is less effective as the multiplier goes up, Gang territory gain scales with Gang power. 2021-03-11 20:19:00 -05:00
Olivier Gagnon
d4816ad0c4 Remove remaining shouldLog calls. 2021-03-11 17:01:28 -05:00
Olivier Gagnon
e7dbc08e18 fix documentation for Bladeburner API. 2021-03-11 16:48:00 -05:00
hydroflame
0483c809ff Merge pull request #812 from danielyxie/loglinenumber
log stack trace
2021-03-11 03:05:34 -05:00
Olivier Gagnon
cd972dabe3 crash now prints ns stack trace, workerscript now does the shouldLog check on its own, many ns function are way simpler. 2021-03-11 03:02:05 -05:00
Olivier Gagnon
e2a353fc8a Attempt at logging line number on netscript error 2021-03-10 01:27:14 -05:00
Olivier Gagnon
1b8214b6fa removed filter from checkbox, update changelog to say 2021 instead of 2020 2021-03-09 23:40:33 -05:00
Olivier Gagnon
af584e8c87 Removed CharacterInfo maximum hacknet, styling in the options, comments in exploits 2021-03-09 23:22:05 -05:00
Olivier Gagnon
250841df66 Added sf minus 1, exploits 2021-03-08 20:31:34 -05:00
Olivier Gagnon
d9aef91ea3 Fix changelog 2021-03-08 15:30:05 -05:00
Olivier Gagnon
c285d494b9 update lodash 2021-03-07 22:49:55 -05:00
Olivier Gagnon
316a1aa475 Most console.log have been changed to console.warn or removed if they were debug 2021-03-07 22:46:50 -05:00
Olivier Gagnon
56a3660d38 update patch notes 2021-03-07 22:23:42 -05:00
Olivier Gagnon
e1aec379c1 getCrimeStats returns the inner stats of a crime 2021-03-07 22:22:23 -05:00
Olivier Gagnon
381ea915f7 update patch notes and getTaskStats documentation 2021-03-07 22:13:04 -05:00
Olivier Gagnon
619db14622 Added gang.getTaskStats which returns the stats of a gang task 2021-03-07 22:12:02 -05:00
Olivier Gagnon
84423e6309 gang.getEquipmentStats added, returns equipment multipliers 2021-03-07 22:01:31 -05:00
Olivier Gagnon
1d2136da4b Minor space formatting in Hacking,Active Scripts 2021-03-07 21:40:30 -05:00
hydroflame
802f28082d Merge pull request #811 from danielyxie/dev
v0.48.0
2021-03-07 18:46:03 -05:00
Olivier Gagnon
56441b8e34 run build for 0.48 2021-03-07 18:45:23 -05:00
Olivier Gagnon
5106315128 Character,Factions has a badge indicating how many pending invite the player has, Character,Augmentations has a badge indicating how many augs the player has bought but not installed. 2021-03-07 18:41:04 -05:00
Olivier Gagnon
6ca7f10faf Current stamina will scale as max stamina increases, this prevents players from having very high penalty when they gain huge amount of exp at the start of a reset. 2021-03-07 16:48:48 -05:00
Olivier Gagnon
56802fc85e The players gang is always listed first in gang terrority screen. 2021-03-07 16:35:17 -05:00
Olivier Gagnon
700583a739 fix broken color from character overview 2021-03-07 16:33:46 -05:00
Olivier Gagnon
a290b0bef5 Bladeburner can be accessed from other bitnodes if the player has SF7 2021-03-07 16:32:56 -05:00
Olivier Gagnon
79a06dd91c Character,Augmentations now display by how much the stats will increase. 2021-03-07 16:32:16 -05:00
Olivier Gagnon
6cd6f28820 Cities are now top-down view of metro maps in ascii 2021-03-07 16:14:08 -05:00
Olivier Gagnon
dabb5016fc Added maxNumNodes to the hacknet API 2021-03-07 16:03:21 -05:00
Olivier Gagnon
58e38faad6 Character percentages are aligned, server and hacknet limit are displayed, if the player has SF5 the reduces stats are shown. 2021-03-07 15:58:52 -05:00
Olivier Gagnon
31e8ca8c8d BN12 now reduces coding contract money 2021-03-07 13:27:21 -05:00
Olivier Gagnon
c72519e3ea Formatting and typo 2021-03-07 13:25:09 -05:00
Olivier Gagnon
58333c1b46 corporation textbox now match the rest of the game. 2021-03-07 13:21:00 -05:00
Olivier Gagnon
f0ad090cdc All BonusTime now displays in the H M S format 2021-03-07 13:19:36 -05:00
Olivier Gagnon
4bd1fce1f6 Fixed an issue where the gang equipment screen would freeze the game if a script installed augmentations while it is open. 2021-03-07 13:15:15 -05:00
Olivier Gagnon
b35e25e5dc New .ns scripts start with a main function. 2021-03-07 13:11:29 -05:00
Olivier Gagnon
a8bb345c88 Faction donation text-input style now matches the rest of the game. 2021-03-07 13:09:32 -05:00
Olivier Gagnon
bbe4f9c286 Pid resets to 1 when installing or destroying a BitNode. 2021-03-07 13:08:12 -05:00
Olivier Gagnon
f9dcefd6ea Merge branch 'dev' of github.com:danielyxie/bitburner into dev 2021-03-07 12:58:59 -05:00
Olivier Gagnon
44c2bab557 Travel Agency now displays a world map. 2021-03-07 12:58:49 -05:00
Olivier Gagnon
fbca5a4d8f Travel Agency now displays a world map. 2021-03-07 12:58:04 -05:00
Olivier Gagnon
c2ceaa9bdd getCharacterInformation now additionally returns stat experience 2021-03-07 05:01:24 -05:00
Olivier Gagnon
dc402bef68 added getAugmentationStats to netscript, it returns the stat boost of an aug 2021-03-07 04:57:49 -05:00
Olivier Gagnon
64272c99fb Added softReset to netscript 2021-03-07 04:49:57 -05:00
Olivier Gagnon
c8377c0bb3 Fix SF3 listed with a limit level of infinity 2021-03-07 04:43:31 -05:00
hydroflame
4145ddad39 0.47.3 patch 2 fix documentation (#810) 2021-03-07 04:37:56 -05:00
hydroflame
e9dfe3c389 v0.47.3 (#808)
* Updated ram cost of documentation

* v0.47.3

Co-authored-by: Samuel A. Lamb <samuei@users.noreply.github.com>
2021-03-07 04:13:37 -05:00
kalobkalob
f9162e4d30 Update ls.rst (#734)
* Update ls.rst

Modified ram cost.

Co-authored-by: hydroflame <79246165+hydroflame@users.noreply.github.com>
2021-03-07 03:10:53 -05:00
danielyxie
b97fab2bf4 Fixed gym bug 2019-07-16 09:52:43 -07:00
danielyxie
3c9ebb75fe Merge pull request #647 from danielyxie/dev
v0.47.2-patch-1
2019-07-16 01:33:35 -07:00
danielyxie
434a522429 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-07-16 01:32:02 -07:00
danielyxie
49fa63971b Minor typo fixes for v0.47.2 2019-07-16 01:31:48 -07:00
Kalumniatoris
8dfc563c86 stockmarket.rst typo very -> every
fixed typo: "Stock prices are updated very ~6 seconds." -> "Stock prices are updated every ~6 seconds."
2019-07-16 01:31:47 -07:00
danielyxie
dded9103cb Minor typo fixes for v0.47.2 2019-07-16 01:30:35 -07:00
Kalumniatoris
741f57e9e2 stockmarket.rst typo very -> every
fixed typo: "Stock prices are updated very ~6 seconds." -> "Stock prices are updated every ~6 seconds."
2019-07-15 21:41:03 -07:00
danielyxie
59cf1d5baf v0.47.2 2019-07-15 21:40:43 -07:00
danielyxie
916ef06913 isBusy() now returns true if you are in a hacking mission 2019-07-15 21:40:43 -07:00
danielyxie
91ee65a101 Converted everything to use acorn npm package. Updated acorn packages to latest version. Updated acorn parsing to use ES9 2019-07-15 21:40:43 -07:00
danielyxie
042f926700 Minor bugfixes with killing Netscript scripts, and cleaned up text 2019-07-15 21:40:43 -07:00
danielyxie
c0432359c3 Implemented 'kill by PID' functionality 2019-07-15 21:40:43 -07:00
danielyxie
fbf5545708 Color-coded BitNode selection screen and added SF information 2019-07-15 21:40:43 -07:00
danielyxie
6ae7b0136c Minor bugfixes for a variety of NS functions. After infiltration, UI returns to corp page rather than city page 2019-07-15 21:40:43 -07:00
danielyxie
200ccd3ad0 Renamed getNoSuchRunningScriptErrorMessage() function 2019-07-15 21:40:43 -07:00
danielyxie
31f97f74fd Fix GH Issue #621: workForFaction() now properly accounts for disabled/enabled logs 2019-07-15 21:40:43 -07:00
danielyxie
4cabd2e4ed Implement GH Issue #620: Add tail() Netscript function 2019-07-15 21:40:43 -07:00
danielyxie
8be7fa9157 Implemented GH Issue #599: Added 'solarized dark' theme to CodeMirror 2019-07-15 21:40:43 -07:00
danielyxie
8ddf7dfbd4 Fix GH Issue #616: Stock Market UI throws error for certain locales because the price format length is too high 2019-07-15 21:40:43 -07:00
danielyxie
571ddb109a Fix GH Issue #632: 'Create Program' link visibility should now be properly dynamically evaluated 2019-07-15 21:40:43 -07:00
danielyxie
b2772bbfc1 Fixed GH Issue #641 2019-07-15 21:40:43 -07:00
danielyxie
57815ac6a0 v0.47.2 2019-07-15 21:40:13 -07:00
danielyxie
758f329d14 isBusy() now returns true if you are in a hacking mission 2019-07-13 22:44:53 -07:00
danielyxie
096f984d6b Converted everything to use acorn npm package. Updated acorn packages to latest version. Updated acorn parsing to use ES9 2019-07-13 22:36:12 -07:00
danielyxie
06cd584f10 Minor bugfixes with killing Netscript scripts, and cleaned up text 2019-07-13 20:55:58 -07:00
danielyxie
4f2f75762c Implemented 'kill by PID' functionality 2019-07-11 19:37:17 -07:00
danielyxie
d94516f39b Color-coded BitNode selection screen and added SF information 2019-07-08 18:41:59 -07:00
danielyxie
b479a3570e Minor bugfixes for a variety of NS functions. After infiltration, UI returns to corp page rather than city page 2019-07-08 18:41:59 -07:00
danielyxie
ac49b8074f Renamed getNoSuchRunningScriptErrorMessage() function 2019-07-04 18:14:34 -07:00
danielyxie
7a49a5b3e8 Fix GH Issue #621: workForFaction() now properly accounts for disabled/enabled logs 2019-07-04 18:14:34 -07:00
danielyxie
6d9e6e6466 Implement GH Issue #620: Add tail() Netscript function 2019-07-04 18:14:34 -07:00
danielyxie
2d179199ed Implemented GH Issue #599: Added 'solarized dark' theme to CodeMirror 2019-07-04 18:14:34 -07:00
danielyxie
dc928828e2 Fix GH Issue #616: Stock Market UI throws error for certain locales because the price format length is too high 2019-07-04 18:14:34 -07:00
danielyxie
658df9fb01 Fix GH Issue #632: 'Create Program' link visibility should now be properly dynamically evaluated 2019-07-01 21:15:11 -07:00
danielyxie
44bf3cb101 Fixed GH Issue #641 2019-07-01 20:39:12 -07:00
Papayaman1000
b82d7c12af Removed outdated information
Firefox added flagless support for dynamic imports in version 67, so it no longer needs special mention.
2019-06-28 13:23:24 -07:00
danielyxie
4476d6b258 Merge pull request #642 from danielyxie/dev
Dev
2019-06-28 13:22:53 -07:00
danielyxie
433b399de9 v0.47.1 2019-06-28 09:28:08 -07:00
danielyxie
58d04c0cbb Updated documentation changelog 2019-06-27 00:01:46 -07:00
danielyxie
e3a74f23a1 ps and top Terminal commands now show script pid. Updated version and changelog 2019-06-27 00:01:06 -07:00
danielyxie
3a374de210 killWorkerScript() now takes an optional argument for whether to rerenderUI. This is used to batch UI updates on killall() 2019-06-24 22:48:54 -07:00
danielyxie
4cc6437408 Updated WorkerScript-related code for the workerScripts array->map change 2019-06-24 22:48:54 -07:00
danielyxie
821725cf4d Initial commit for converting workerScripts pool to Map data structure 2019-06-24 22:48:54 -07:00
danielyxie
931de230ae Minor rebalancing to stock market. Updated documentation and tests for recent changes 2019-06-11 00:18:14 -07:00
danielyxie
7301946236 Added and Updated Stock Market tests for the new changes 2019-06-09 21:23:48 -07:00
danielyxie
a15041da75 More rebalancing for stock market changes. Transactions now affect second-order forecast (very slightly) 2019-06-09 15:12:33 -07:00
danielyxie
00f8c0a51f Removed debug stuff for beta branch 2019-06-04 21:31:45 -07:00
danielyxie
63483837bc Fixed version in changelog 2019-06-03 23:10:10 -07:00
danielyxie
dc5f4e6694 Updated documentation for new Stock Market changes. More rebalancing for recent stock market changes 2019-06-03 23:05:25 -07:00
danielyxie
35f8a5115a Finished implementing player influencing on stock 2nd-order forecasts. Balanced recent stock market changes 2019-06-03 22:21:36 -07:00
danielyxie
8398fd47f0 Changed the way stock market cycles occur. Stock second-order forecast now changes normally like before 2019-06-02 23:29:56 -07:00
danielyxie
9d7c869c0a Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-06-02 20:57:57 -07:00
danielyxie
74587f269e Updated changelog 2019-06-02 20:57:39 -07:00
danielyxie
6a3ffff3ad Merge pull request #630 from jaguilar/ns2_recompile_when_script_write
Recompile scripts when updated via ns.write
2019-06-02 20:56:21 -07:00
J
2f8eac07ee fix indentation 2019-06-02 23:53:07 -04:00
J
3eaefa01f9 Merge branch 'dev' into ns2_recompile_when_script_write 2019-06-02 23:50:57 -04:00
danielyxie
b250af913d Merge pull request #629 from jaguilar/ns2_recompile_stale_deps
recompile ns2 scripts if dependencies change
2019-06-02 20:46:32 -07:00
danielyxie
0b4968d148 Re-added the getStockPurchaseCost() and getStockSaleGain() functions so we don't break user scripts 2019-06-02 20:28:02 -07:00
J
8817d179c6 Merge branch 'dev' into ns2_recompile_stale_deps 2019-06-02 23:03:20 -04:00
James Aguilar
e5e3fec1a9 close dialog boxes on escape 2019-06-02 20:00:14 -07:00
Heikki Aitakangas
eecb0c0f01 Update script.module immediately, so we avoid accidentally evaling the same module several times 2019-06-02 19:58:01 -07:00
James Aguilar
d45689c7df use sequence numbers rather than timestamps for script expiration 2019-06-02 20:26:06 -04:00
James Aguilar
2201dfc371 fix typo 2019-06-02 15:40:13 -04:00
James Aguilar
3ef9042051 fix two cases where markUpdated was not properly called 2019-06-02 15:38:45 -04:00
James Aguilar
1236ad252b markUpdated() for Script 2019-06-02 15:32:35 -04:00
James Aguilar
65331ab22e recompile ns2 scripts if dependencies change 2019-06-02 15:21:08 -04:00
danielyxie
c485fdfa87 Removed stock market price movement. Now only forecast is influenced by big transactions 2019-05-22 19:12:06 -07:00
danielyxie
6effda29a9 Implemented second-order forecasts for stocks 2019-05-22 17:23:30 -07:00
danielyxie
7035154454 Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-05-20 14:45:30 -07:00
danielyxie
d7f3ab9177 Tempered the affect that stock market txs have on stock forecasts 2019-05-20 14:44:51 -07:00
danielyxie
3660dde75f Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-05-19 14:07:16 -07:00
danielyxie
99688b78c7 Temporary rebalancing for v0.47.0 2019-05-19 14:06:53 -07:00
danielyxie
6841f24932 Optimized Largest Prime factor coding contract solver. 2019-05-19 13:56:49 -07:00
Sotisi
9f94d0838a removed faulty else, was left prior by accident. 2019-05-17 15:54:36 -07:00
Sotisi
086fc67ecc Fixed O(n) runtime of "Find Largest Prime Factor" for high primes to 0(sqrt(n)). 2019-05-17 15:54:36 -07:00
danielyxie
a2551f98c2 Fixed documentation typos in v0.47.0 2019-05-17 15:51:28 -07:00
danielyxie
95c928afc9 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-05-17 13:51:48 -07:00
danielyxie
8a00e6e532 Merge pull request #614 from danielyxie/active-scripts-ui-and-implementation-rework
Active scripts ui and implementation rework
2019-05-17 13:50:55 -07:00
danielyxie
287a97aea6 Fixed merge conflcits with dev 2019-05-17 13:50:27 -07:00
danielyxie
664267bff0 Removed unused imports in engine 2019-05-17 13:47:35 -07:00
danielyxie
2597b33f81 Finished refactoring augmentations page UI to use react 2019-05-17 13:47:35 -07:00
danielyxie
9442b348e6 Refactored SourceFile-related code to TypeScript 2019-05-17 13:47:35 -07:00
danielyxie
3b7f9c9fb0 Fixed issues with Active Scripts UI. Implemented event emitter for Active Scripts UI 2019-05-17 13:41:16 -07:00
danielyxie
20ca7533b0 Merge pull request #612 from danielyxie/dev
v0.47.0
2019-05-17 13:09:04 -07:00
danielyxie
15a324a946 v0.47.0 release 2019-05-17 13:07:11 -07:00
danielyxie
94175877d7 Changed stock market price movements so that upward and downward movements use different trackers. Forecast can no longer be inverted due to price movements. Updated stock market unit tests 2019-05-16 23:55:21 -07:00
danielyxie
c1ec3c5eba Finished refactoring Active Scripts UI into React/TypeScript. Currently untested 2019-05-16 23:44:59 -07:00
danielyxie
42804b0cd3 Refactored 'workerScripts' array and killWorkerScript() fn to be their own modules in TypeScript 2019-05-15 23:05:36 -07:00
danielyxie
b1248521f3 Removed unused imports in engine 2019-05-15 00:37:11 -07:00
danielyxie
b744997c72 Finished refactoring augmentations page UI to use react 2019-05-15 00:15:07 -07:00
danielyxie
2d37409392 Refactored SourceFile-related code to TypeScript 2019-05-14 20:56:59 -07:00
danielyxie
bd02e724e5 Fixed several more bugs. Rebalanced stock market changes to make the effects a bit less potent for now 2019-05-14 04:23:55 -07:00
danielyxie
fef7aaba8f Adding more directory-related unit tests. Several more bug fixes and QoL improvements 2019-05-14 01:35:37 -07:00
danielyxie
1775ea86ff Fixed corporation bug 2019-05-11 20:03:36 -07:00
danielyxie
b0918d7bd3 Fixed numerous reported bugs. Refactored some of the directory-related code. Added documentation for MasonDs changes to hack/grow/weaken 2019-05-11 19:20:20 -07:00
danielyxie
29e0ce5f96 Fixed merge conflicts 2019-05-11 02:20:09 -07:00
Mason Dechaineux
44c26165f4 (feat) optional threads argument to netscript functions hack, weaken, grow 2019-05-11 02:05:40 -07:00
danielyxie
9dd68947f1 Added Dynamic RAM calculation unit tests 2019-05-10 02:24:50 -07:00
danielyxie
db5fdb1fcb Last fixes to unit test build configuration 2019-05-09 19:51:56 -07:00
danielyxie
74e72854d8 Configured unit test webpack build to work 2019-05-09 19:36:04 -07:00
danielyxie
ece246b391 Converted mocha unit tests to run using mocha-webpack (mochapack) package 2019-05-09 19:03:13 -07:00
danielyxie
cdb5dfec62 Resolved more circular dependencies. Installed acorn-walk and imported it in RamCalculations using ES6 modules. Fixed bugs in stock market rework 2019-05-06 18:01:06 -07:00
danielyxie
8a5b6f6cbc Refactored stock buying/selling code into its own file. Refactored WorkerScript & NetscriptEnvironment into their own Typescript classes. Refactored a ton of code to remove circular dependencies 2019-05-04 21:03:40 -07:00
danielyxie
585e1ac7aa Stock transactions can now influence forecast in addition to price. Several more minor bug/UI fixes 2019-05-01 15:20:14 -07:00
danielyxie
8726946d4a Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-04-30 02:27:58 -07:00
danielyxie
064008d200 Removed 'age' stat from Corporation employees 2019-04-30 02:27:48 -07:00
danielyxie
d955280f90 Re-sleeves can no longer have the Neuroflux Governor aug. This is to prevent bugs 2019-04-30 02:27:13 -07:00
danielyxie
580a7fac24 Bug fixes for v0.47.0. Fixed the BUY MAX feature for new stock market. Added collapse/expand tickers buttons for new stock market UI 2019-04-29 20:54:20 -07:00
danielyxie
9df054dd0c Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-04-28 23:22:02 -07:00
Mason Dechaineux
8fa7b112e1 Correctly throw error when ns.run() is called with 0 threads 2019-04-28 23:21:55 -07:00
danielyxie
dd9df0a18c Fixed Stock Market UI. Added documentation for stock market changes 2019-04-28 23:21:32 -07:00
danielyxie
3a601a015d Added unit tests for Stock Market. Removed dependencies from package.json, since they're sourced directly in tests/index.html 2019-04-28 23:21:32 -07:00
danielyxie
87b4698d5b Fixed issues relating to stock price movements 2019-04-28 23:21:32 -07:00
danielyxie
67632ced09 Fixed Stock Market UI issues. Added warnings for price movements 2019-04-28 23:21:32 -07:00
danielyxie
d7fb335815 Fixed Stock market UI compilation errors and removed refactored code 2019-04-28 23:21:32 -07:00
danielyxie
4809a21e38 Finished React components for new Stock Market UI 2019-04-28 23:21:32 -07:00
danielyxie
6b3646e981 Added spread and price movement properties to stocks. Refactored Stock Market implementation code 2019-04-28 23:21:32 -07:00
danielyxie
0c64bf470a Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-04-20 23:37:51 -07:00
danielyxie
99e034921e Updated docuemntation changelog for v0.46.3 2019-04-20 23:37:37 -07:00
danielyxie
7a3a3de7d1 v0.46.3 2019-04-20 23:37:37 -07:00
danielyxie
f91c5bd7b9 Updated docuemntation changelog for v0.46.3 2019-04-19 22:29:33 -07:00
danielyxie
bcb198220d v0.46.3 2019-04-19 22:27:33 -07:00
danielyxie
bf1af6a68c Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-04-16 01:22:22 -07:00
danielyxie
3dd2975c61 Fixed issue with faction reputation donation bug calculating invalid rep gain 2019-04-16 01:20:52 -07:00
danielyxie
33f1e0cb3c Fixed several typos. TechVendor location UI will now properly update when you purchase TOR router. 'Manage Gang' faction option should show up properly 2019-04-16 01:20:52 -07:00
danielyxie
7514f63dcd Fixed issue with faction reputation donation bug calculating invalid rep gain 2019-04-16 01:19:29 -07:00
danielyxie
b6ff73391d Fixed several typos. TechVendor location UI will now properly update when you purchase TOR router. 'Manage Gang' faction option should show up properly 2019-04-15 02:49:49 -07:00
danielyxie
369ea8d381 Merge pull request #597 from danielyxie/dev
Dev
2019-04-14 02:26:37 -07:00
danielyxie
a7296c512c Fix merge conflicts 2019-04-14 02:26:47 -07:00
danielyxie
8f70817c10 Adding tooltips to new purchase augmentation ui 2019-04-14 02:21:43 -07:00
danielyxie
7417fb6ef8 v0.46.2 2019-04-14 02:08:10 -07:00
danielyxie
d044739f1c v0.46.2 2019-04-14 02:07:29 -07:00
danielyxie
3d1684f825 Fix Terminal wget bug. Issue #593 2019-04-14 02:07:29 -07:00
danielyxie
f6af9e94ab Gang bug fixes. Issues #574 and #575 2019-04-14 02:07:29 -07:00
danielyxie
215cf59e0b Fixed comment styling for all top-level src files 2019-04-14 02:07:29 -07:00
danielyxie
0d14cd6e7e Improved module import styling for all top-level src files 2019-04-14 02:07:29 -07:00
danielyxie
98a04e4932 Fix Terminal wget bug. Issue #593 2019-04-13 00:33:30 -07:00
danielyxie
8d33c5b571 Gang bug fixes. Issues #574 and #575 2019-04-13 00:26:49 -07:00
danielyxie
221b81d802 Fixed comment styling for all top-level src files 2019-04-12 20:47:17 -07:00
danielyxie
df89cc5002 Improved module import styling for all top-level src files 2019-04-12 20:47:17 -07:00
danielyxie
3b6b37f8a6 Merge pull request #594 from danielyxie/dev
v0.46.1
2019-04-12 16:53:19 -07:00
danielyxie
cf2acb8844 Updated documentation changelog for v0.46.1 2019-04-12 16:54:11 -07:00
danielyxie
2e9b028174 v0.46.1 build 2019-04-12 16:52:59 -07:00
danielyxie
c56645c794 Updated doc for new Terminal filesystem. Fixed some minor issues with new Location UI 2019-04-09 23:34:23 -07:00
danielyxie
3ce2e83dd8 Finished rudimentary filesystem implementation for Terminal 2019-04-09 23:07:12 -07:00
danielyxie
3241945452 Added hacknet node api functions for spending hashes. Fixed several bugs with v0.46.0. Rebalanced hash upgrades. continued working on terminal directory implementation 2019-04-05 02:08:41 -07:00
danielyxie
fb857642e8 Merge pull request #591 from danielyxie/location-code-refactor
Location code refactor
2019-04-03 20:38:02 -07:00
Olivier Gagnon
cc0e6548ff folders 2019-04-03 20:37:38 -07:00
danielyxie
6c3c569a44 Merge branch 'master' of https://github.com/danielyxie/bitburner into location-code-refactor 2019-04-03 17:12:16 -07:00
danielyxie
b5ebbba43d Fixed merge conflicts with dev 2019-04-03 17:12:11 -07:00
danielyxie
bf9b837e31 Fixed bugs with Location code refactor 2019-04-03 17:08:11 -07:00
danielyxie
7f88ade30e Merge pull request #590 from danielyxie/dev
v0.46.0
2019-04-03 16:59:42 -07:00
danielyxie
36499ae9f2 Fixed bug where sleeves's exp didnt properly reset on prestige. Updated versions to v0.46.0. Added production build 2019-04-03 16:58:15 -07:00
danielyxie
4b95ba9ed1 Finished location code refactor. Has not yet been tested 2019-04-01 02:23:25 -07:00
danielyxie
804e4c23e3 Updated Hacknet Node API documentation for the BN-9 changes. netscript functions now properly fail for Hacknet Servers 2019-03-30 19:53:57 -07:00
danielyxie
b6b6d8e9fa Fixed bug with purchasing Hacknet Servers not updating hash capacity when done through Netscript 2019-03-30 17:39:37 -07:00
danielyxie
c566c838be Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-03-29 20:01:43 -07:00
danielyxie
51d9274626 Added effects for Source-File 9 2019-03-29 20:01:34 -07:00
danielyxie
c8b478c208 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-29 16:14:40 -07:00
danielyxie
18a3f061b4 Rebalanced new Hacknet Node mechanics. Adjusted Hacknet API so that it'll work with hacknet Servers. Fixed Corporation bug with Issuing new Shares 2019-03-29 16:14:32 -07:00
danielyxie
3f8b9e4a32 Fixed merge conflicts. Rebalanced new Hacknet Node mechanics. Adjusted Hacknet API so that it'll work with hacknet Servers. Fixed Corporation bug with Issuing new Shares 2019-03-29 16:13:58 -07:00
Olivier Gagnon
e63ad76701 typo 2019-03-29 16:11:43 -07:00
Olivier Gagnon
cb66ad9628 fli1ght now displays the correct number of augs 2019-03-29 16:11:43 -07:00
danielyxie
971bfbada4 Merge pull request #587 from hydroflame/align-free
Align free
2019-03-29 16:11:25 -07:00
Olivier Gagnon
b646c15521 It is now possible to join bladeburners in BN7 without having SF6-1 2019-03-29 16:11:16 -07:00
Olivier Gagnon
92f7d12c0e free output is now aligned and shows percent used 2019-03-29 12:26:25 -04:00
danielyxie
7172f4e527 Began creating 'parent' components for the City and Location-specific parts of the UI 2019-03-29 00:12:41 -07:00
danielyxie
5592a8bc96 Updated several packages 2019-03-27 01:53:30 -07:00
danielyxie
c4cb7daac5 Initial v0.46.0 changes - Fixed BN9 bugs. Rebalanced BN11 and Corporations. Added memory to Dup sleeves. Various bug fixes 2019-03-27 01:36:14 -07:00
danielyxie
75bc34208c Initial commit for Location Code refactor 2019-03-27 01:31:47 -07:00
danielyxie
83fc4d81b2 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-25 21:48:18 -07:00
danielyxie
3cf18f100a Added several resuable React components for commonly-used elements 2019-03-25 21:43:18 -07:00
danielyxie
8fbb072596 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-24 23:08:32 -07:00
danielyxie
ea7f0752cb Merge pull request #572 from hydroflame/sleeve-buy-aug-api
Sleeve buy aug api
2019-03-24 23:07:34 -07:00
Olivier Gagnon
0f8f572519 Merge branch 'dev' into sleeve-buy-aug-api 2019-03-25 02:01:45 -04:00
danielyxie
52b6defebd Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-24 20:18:44 -07:00
danielyxie
34d749809a BitNode-9 initial implementation 2019-03-24 20:17:47 -07:00
Olivier Gagnon
2ce4af2498 infiltration now scale exp gained by some factor to prevent some abuse 2019-03-24 20:09:39 -07:00
koriar
227bcf146e Fixing Corp Happiness typo 2019-03-24 20:03:22 -07:00
danielyxie
139a5add20 Cleaned up whitespace from a PR 2019-03-24 19:56:47 -07:00
danielyxie
3a61a5cfa1 Merge pull request #577 from danielyxie/dev
v0.45.1
2019-03-24 19:55:49 -07:00
danielyxie
29c5c9b99d v0.45.1 Build 2019-03-23 19:59:13 -07:00
danielyxie
49dc9b7cb0 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-23 19:40:40 -07:00
danielyxie
856d02a129 v0.45.1 2019-03-23 19:40:35 -07:00
danielyxie
9542879f86 Merge pull request #570 from koriar/kUpdate1
Added dropdown class to select tags
2019-03-23 19:39:20 -07:00
danielyxie
1034f7cac5 Removed debugging statements. Updated jshint package 2019-03-23 01:34:21 -07:00
koriar
9a7061503a Merge branch 'dev' into kUpdate1 2019-03-23 02:33:01 -04:00
koriar
449605d330 Delete DevMenu.js 2019-03-23 02:25:36 -04:00
danielyxie
3556d6a1ff Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-22 23:25:35 -07:00
Olivier Gagnon
4858dabe99 align stock market info 2019-03-22 23:19:18 -07:00
Olivier Gagnon
d54439be8b remove comment 2019-03-22 23:07:02 -07:00
Olivier Gagnon
31e703d126 consistent style for checkboxes 2019-03-22 23:07:02 -07:00
Olivier Gagnon
2754a644ae added legend 2019-03-22 22:56:19 -07:00
Olivier Gagnon
b7170e4ded forgot to remove quote 2019-03-22 22:56:19 -07:00
Olivier Gagnon
4df6638444 forgot to remove quote 2019-03-22 22:56:19 -07:00
Olivier Gagnon
d4c72474cb added icons to bladeburner estimated chances that indicate if they're retirement and or stealth actions 2019-03-22 22:56:19 -07:00
Olivier Gagnon
1c0201534b reverse presentation order for BlackOps 2019-03-22 22:55:50 -07:00
Olivier Gagnon
fa14bb5362 reverse black op order 2019-03-22 22:55:50 -07:00
Olivier Gagnon
f88c585714 dropdown styling in sleeve UI 2019-03-22 22:53:37 -07:00
Olivier Gagnon
8514104560 styling text inputs 2019-03-22 22:52:31 -07:00
Olivier Gagnon
5b7743967e incorporated feedback from Mei 2019-03-22 22:51:55 -07:00
Olivier Gagnon
2e9fe02023 remove some unused stuff in dev menu 2019-03-22 22:51:55 -07:00
Olivier Gagnon
b8bdf0da82 dev meny revamp 2019-03-22 22:51:55 -07:00
Olivier Gagnon
1f639c6a3a Donation text input style 2019-03-22 22:20:16 -07:00
danielyxie
035cdb8b0d Merge pull request #573 from danielyxie/dev
v0.45.0
2019-03-22 22:11:10 -07:00
danielyxie
2ba7ac82eb Updated to v0.45.0 production build 2019-03-22 22:11:09 -07:00
Olivier Gagnon
96db360a36 added sleeve aug api 2019-03-23 00:22:40 -04:00
koriar
77571543f2 Updated spacing
Updating spacing from a tab character to spaces
2019-03-22 23:02:28 -04:00
koriar
3f312d0ce6 Added dropdown class to select tags 2019-03-22 21:20:56 -04:00
danielyxie
4bdb34bc7b numCycleForGrowth() function now accoutns for BitNode growth multiplier. Cleaned up docuemntation 2019-03-19 17:53:46 -07:00
danielyxie
f7fd3c859f Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-19 16:38:54 -07:00
danielyxie
dfd7aa2d2e Minor fixes to new Sleeve API 2019-03-19 16:38:49 -07:00
Olivier Gagnon
0df437ef35 Update AugmentationHelpers.js 2019-03-19 16:33:30 -07:00
Olivier Gagnon
bedd615c0e Making the QLink almost worth getting. 2019-03-19 16:33:30 -07:00
acogdev
1f4f6bd179 Update purchaseServer docs to account for BitNode 10
BitNode 10 reduces the maximum RAM a purchased server can have so encouraging the use of getPurchasedServerMaxRam() instead of a hardcoded value of 2 ^ 20
2019-03-19 16:29:30 -07:00
danielyxie
d75ff5d95b Fixed bug with Corporation bribing. Hoisted isRelevantMaterial() function in IndustryWarehouse up to a class method 2019-03-18 01:15:44 -07:00
danielyxie
c3bc6a0c28 Changed Sleeve API functions to prevent conflicts with identically-named functions 2019-03-17 22:04:12 -07:00
danielyxie
066ccf343a Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-17 18:20:35 -07:00
danielyxie
c973663dc2 Fixed empty td Element issue with new React Character overview. Updated changelog 2019-03-17 18:20:31 -07:00
Olivier Gagnon
08136524be use SourceFileFlags instead of hasSleeveSF 2019-03-17 18:15:10 -07:00
Olivier Gagnon
261abdea78 typo in sleeve getTask doc 2019-03-17 18:15:10 -07:00
Olivier Gagnon
b132efbded doc for sleeve api 2019-03-17 18:15:10 -07:00
Olivier Gagnon
f8f4299ed5 getInfo and getTask sleeve api 2019-03-17 18:15:10 -07:00
Olivier Gagnon
9f715020df syntax highlight some sleeve api 2019-03-17 18:15:10 -07:00
Olivier Gagnon
060e0f7bfc get sync/shock 2019-03-17 18:15:10 -07:00
Olivier Gagnon
8df7f8de4b basic sleeve api 2019-03-17 18:15:10 -07:00
danielyxie
e6c5ff7ab7 Fixed more bugs with new Corporation UI. Minor rebalancing on Corp UI. Changed the Market TA researches to allow you to automatically set price 2019-03-17 17:58:06 -07:00
danielyxie
a28fe7ab9f Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-15 02:37:10 -07:00
danielyxie
c3ecc189fd Fixed numerous bugs with the recent Corporation UI rewrite. Rebalanced Corporation mechanic to give employees better and more interesting effects 2019-03-15 02:37:06 -07:00
Olivier Gagnon
b4057fcb26 Character overview is now through react 2019-03-15 02:35:50 -07:00
danielyxie
8470f307ac Fix description for Hyperbolic Regeneration Chamber action 2019-03-13 20:11:48 -07:00
danielyxie
8eecb1539c Fix bug with recent Corporation UI rewrite. Improve some styling with Corporation UI and the status text messages 2019-03-13 20:10:28 -07:00
danielyxie
5230837dad Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-03-13 15:22:14 -07:00
Olivier Gagnon
da97c1b4b9 added getBlackOpRank 2019-03-13 15:21:31 -07:00
danielyxie
963cb0039d Fixed merge conflicts with hydroflame's PRs 2019-03-13 15:19:29 -07:00
danielyxie
3e10f5de6d Migrated Corporation UI implementation to use React 2019-03-13 15:17:30 -07:00
Olivier Gagnon
6969a8f92c inactive buttons can no longer be highlighted, like bladeburner skill level up 2019-03-13 15:14:16 -07:00
Olivier Gagnon
2198bfd962 Update Bladeburner.js 2019-03-13 15:07:58 -07:00
Olivier Gagnon
d4d5202cbd Display integer time required in bladeburner
contracts already display integer only, now ops and blackops do too.
2019-03-13 15:07:58 -07:00
Olivier Gagnon
cde2c9e615 Update getActionCountRemaining.rst
Added description of what happens when getActionCountRemaining is used on a BlackOps
2019-03-13 15:07:24 -07:00
Olivier Gagnon
59018d9902 Update AceNetscriptMode.js
bladeburner getCurrentAction should be highlighted in text editor.
2019-03-13 15:06:03 -07:00
Olivier Gagnon
c378400a10 fix initForeignServers import in Prestige.js 2019-03-13 15:04:16 -07:00
Olivier Gagnon
58062bf421 fix wrong location for function 2019-03-13 15:04:16 -07:00
danielyxie
f3dbdad011 Merge pull request #547 from danielyxie/server-code-refactor
Server code refactor
2019-03-05 00:01:56 -08:00
danielyxie
d9ee715bc7 Fixed some more incorrect imports 2019-03-05 00:01:34 -08:00
danielyxie
bd13234f06 Corrected some incorrect imports 2019-03-04 23:55:54 -08:00
danielyxie
fa4e98d06c Merge branch 'master' of https://github.com/danielyxie/bitburner into server-code-refactor 2019-03-04 23:29:01 -08:00
danielyxie
cca32923e3 Merge pull request #546 from danielyxie/dev
v0.44.1 Build
2019-03-04 22:50:52 -08:00
danielyxie
f2b4ae8692 Adding build for v0.44.1...forgot it because im a dumbass 2019-03-04 22:49:31 -08:00
danielyxie
a22bfb5015 Updating version to v0.44.1 and Updating docuemtnation changelog 2019-03-04 22:41:31 -08:00
danielyxie
18d8b2ecd4 v0.44.1 Minor Update - Added Augs to Duplicate Sleeves and updated documentation 2019-03-04 22:41:31 -08:00
danielyxie
9879d07d7c Fixed a few minor bugs with submitting solutions for Coding Contracts. Started on Getting STarted Guide for wiki 2019-03-04 22:41:31 -08:00
danielyxie
d54e39c9c6 v0.44.1 Duplicate Sleeve updates 2019-03-04 22:41:31 -08:00
Mason Dechaineux
67d083772a Fixed bug with rm terminal and ns commands that made non-exe files with .exe in their name undeletable. 2019-03-04 22:41:31 -08:00
danielyxie
e6a3794849 Fixed changelog formatting 2019-03-04 22:41:31 -08:00
danielyxie
d9c818777b Updating version to v0.44.1 and Updating docuemtnation changelog 2019-03-04 22:29:27 -08:00
danielyxie
473f0f1447 Refactored Server/Script/Files code to TypeScript 2019-03-04 17:40:28 -08:00
danielyxie
e1b8a23f1e Started server code refactor 2019-03-02 19:15:10 -08:00
danielyxie
8e4c7beb1a v0.44.1 Minor Update - Added Augs to Duplicate Sleeves and updated documentation 2019-03-02 19:08:54 -08:00
danielyxie
af3323a111 Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-02-27 10:38:16 -08:00
danielyxie
31ed986b8f Merge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-02-26 18:26:39 -08:00
danielyxie
1d07ca4ffb Fixed a few minor bugs with submitting solutions for Coding Contracts. Started on Getting STarted Guide for wiki 2019-02-26 18:26:29 -08:00
danielyxie
ddfae56e34 Fixed bug with Hacknet Nodes production not updating initially. FIxed bug with 'purchase augmentations' btn being displayed for Gang BitNode 2019-02-26 16:01:37 -08:00
danielyxie
b0ba3b2ea4 Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-02-26 00:56:08 -08:00
danielyxie
a277810095 v0.44.1 Duplicate Sleeve updates 2019-02-26 00:55:22 -08:00
danielyxie
78c631751e Merge branch 'dev' of https://github.com/danielyxie/bitburner into dev 2019-02-26 00:48:27 -08:00
danielyxie
610b644fb1 git pull oMerge branch 'master' of https://github.com/danielyxie/bitburner into dev 2019-02-26 00:48:14 -08:00
Mason Dechaineux
b26568bf7d Fixed bug with rm terminal and ns commands that made non-exe files with .exe in their name undeletable. 2019-02-26 00:47:29 -08:00
danielyxie
29075acffe Fixed changelog formatting 2019-02-26 00:45:34 -08:00
danielyxie
3d76390c2c Merge pull request #542 from danielyxie/dev
v0.44.0 Merge
2019-02-26 00:30:42 -08:00
754 changed files with 85202 additions and 42300 deletions

3
.babelrc Normal file
View File

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

View File

@@ -2,3 +2,7 @@ node_modules/
doc/build/
dist/
tests/*.bundle.*
src/ThirdParty/*
src/ScriptEditor/CodeMirrorNetscriptMode.js
src/ScriptEditor/CodeMirrorNetscriptLint.js
src/JSInterpreter.js

File diff suppressed because it is too large Load Diff

6
.gitignore vendored
View File

@@ -3,6 +3,6 @@ Netburner.txt
/doc/build
/node_modules
/dist/*.map
/tests/*.map
/tests/*.bundle.*
/tests/*.css
/test/*.map
/test/*.bundle.*
/test/*.css

View File

@@ -1,11 +1,12 @@
# Bitburner
Bitburner is a cyberpunk hacking-themed incremental game. The game can be
played at https://danielyxie.github.io/bitburner.
Bitburner is a programming-based [incremental game](https://en.wikipedia.org/wiki/Incremental_game)
that revolves around hacking and cyberpunk themes.
The game can be played at https://danielyxie.github.io/bitburner.
# Documentation
The game's official documentation can be found on [Read The
Docs](http://bitburner.readthedocs.io/). Please note that this is still a
work-in-progress and is in its early stages.
work-in-progress.
The documentation is created using [Sphinx](http://www.sphinx-doc.org).
@@ -14,11 +15,6 @@ files](/doc/source) and then making a pull request with your contributions.
For further guidance, please refer to the "As A Documentor" section of
[CONTRIBUTING](CONTRIBUTING.md).
# Wiki
The game's wiki can be found on [Wikia](http://bitburner.wikia.com/). Please
note that the wiki is in the process of being deprecated. Eventually all of
the wiki content will be moved into the Read The Docs documentation.
# Contribution
There are many ways to contribute to the game. It can be as simple as fixing
a typo, correcting a bug, or improving the UI. For guidance on doing so,
@@ -32,4 +28,4 @@ publish, and distribute your contributions to the project. A formal
Contributor's License Agreement will be drawn up in the future.
If you would like to make significant contributions to the project as a
collaborator, please reach out to @danielyxie to help coordinate the effort.
collaborator, please reach out to @danielyxie to help coordinate the effort.

23
README_contribution.md Normal file
View File

@@ -0,0 +1,23 @@
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`

126
css/activescripts.scss Normal file
View File

@@ -0,0 +1,126 @@
@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%;
}
}

31
css/augmentations.scss Normal file
View File

@@ -0,0 +1,31 @@
/**
* Styling for the Augmentations UI. This is the page that displays all of the
* player's owned and purchased Augmentations and Source-Files. It also allows
* the player to install Augmentations
*/
@import "theme";
#augmentations-container {
position: fixed;
padding-top: 10px;
}
#augmentations-content {
> p {
font-size: $defaultFontSize * 0.875;
width: 70%;
}
}
.augmentations-list {
button,
div {
color: var(--my-font-color);
text-decoration: none;
}
button {
padding: 4px;
}
}

View File

@@ -51,6 +51,44 @@
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;

View File

@@ -38,6 +38,7 @@ button {
}
.a-link-button-inactive,
.std-button-disabled,
.std-button:disabled {
text-decoration: none;
background-color: #333;
@@ -47,6 +48,11 @@ button {
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,

24
css/casino.scss Normal file
View File

@@ -0,0 +1,24 @@
.casino-card {
padding: 10px;
border: solid 1px #808080;
background-color: white;
display: inline-block;
border-radius: 10px;
font-size: 14pt;
text-align: center;
margin: 3px;
font-weight: bold;
}
.casino-card .value {
font-size:15pt;
font-family: sans-serif;
}
.casino-card.red {
color: red;
}
.casino-card.black {
color: black;
}

View File

@@ -2,7 +2,7 @@
@import "theme";
/**
* Styling for the Character Overview Panel (top-right)
* Styling for the Character Overview Panel (top-right panel)
*/
#character-overview-wrapper {
@@ -43,9 +43,9 @@
background-color: #444;
}
.character-stat-cell {
text-align: right;
}
.character-stat-cell {
text-align: right;
}
#character-hack-wrapper td,
#character-agi-wrapper td {
@@ -59,10 +59,16 @@
}
#character-hp-wrapper { color: $my-stat-hp-color; }
.character-hp-cell { color: $my-stat-hp-color; }
#character-money-wrapper { color: $my-stat-money-color; }
.character-money-cell { color: $my-stat-money-color; }
#character-hack-wrapper { color: $my-stat-hack-color; }
.character-hack-cell { color: $my-stat-hack-color; }
#character-cha-wrapper { color: $my-stat-cha-color; }
.character-cha-cell { color: $my-stat-cha-color; }
#character-int-wrapper { color: $my-stat-int-color; }
.character-int-cell { color: $my-stat-int-color; }
.character-combat-cell { color: $my-stat-physical; }
.character-overview-btn {
@include borderRadius(12px);

View File

@@ -6,7 +6,7 @@
#codemirror-form-wrapper {
height: 80%;
margin: 10px 0px 0px 6px;
margin: 10px 0 0 6px;
}
.CodeMirror {
@@ -22,11 +22,11 @@
* Highlight matches
*/
.cm-matchhighlight {
background-color: #8F908A;
background-color: #8f908a;
}
.CodeMirror-selection-highlight-scrollbar {
background-color: #8F908A;
background-color: #8f908a;
}
/**
@@ -35,7 +35,7 @@
.cm-whitespace::before {
position: absolute;
pointer-events: none;
color: #404F7D;
color: #404f7d;
}
/**

View File

@@ -10,7 +10,8 @@
#cmpy-mgmt-container p,
#cmpy-mgmt-container a,
#cmpy-mgmt-container div {
#cmpy-mgmt-container div,
#cmpy-mgmt-container br {
font-size: $defaultFontSize * 0.8125;
}
@@ -56,29 +57,33 @@
.cmpy-mgmt-industry-left-panel,
.cmpy-mgmt-industry-right-panel {
display: inline-block;
width: 45%;
height: 100%;
top: 10px;
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%;
}
@@ -115,13 +120,18 @@
background-color: #333;
}
/* Upgrades */
/* 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;
@@ -136,10 +146,20 @@
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: visible !important;
overflow-x: auto !important;
overflow-y: auto !important;
}

36
css/dev-menu.css Normal file
View File

@@ -0,0 +1,36 @@
.add-exp-button {
margin-right: 0;
}
.remove-exp-button {
margin-left:0;
}
.exp-input {
margin-right: 0;
margin-left:0;
margin-top: 5px;
margin-bottom: 5px;
padding: 2px 5px;
}
.text-center {
margin: auto;
text-align: center;
vertical-align: middle;
}
.touch-right {
margin-right: 0;
}
.touch-left {
margin-left: 0;
}
.touch-sides {
margin-left: 0;
margin-right: 0;
}

6
css/grid.min.css vendored Normal file

File diff suppressed because one or more lines are too long

75
css/hacknetnodes.scss Normal file
View File

@@ -0,0 +1,75 @@
@import "mixins";
@import "theme";
/**
* Styling for the Hacknet Nodes UI Page
*/
#hacknet-nodes-container {
position: fixed;
padding: 10px;
}
.hacknet-general-info {
margin: 10px;
width: 70vw;
}
#hacknet-nodes-container li {
float: left;
overflow: hidden;
white-space: nowrap;
&.hacknet-node {
$boxShadowArgs: inset 0 0 8px rgba(0, 0, 0, 0.1), 0 0 16px rgba(0, 0, 0, 0.1);
@include boxShadow($boxShadowArgs);
margin: 6px;
padding: 7px;
width: 35vw;
border: 2px solid var(--my-highlight-color);
}
}
#hacknet-nodes-list {
list-style: none;
width: 82vw;
}
#hacknet-nodes-money {
margin: 10px;
float: left;
}
#hacknet-nodes-money-multipliers-div {
display: inline-block;
width: 70vw;
}
#hacknet-nodes-multipliers {
float: right;
}
#hacknet-nodes-purchase-button {
display: inline-block;
}
.hacknet-node-container {
display: inline-table;
.row {
display: table-row;
height: 30px;
p {
display: table-cell;
}
}
.upgradable-info {
display: inline-block;
margin: 0 4px; /* Don't want the vertical margin/padding, just left & right */
padding: 0 4px;
width: $defaultFontSize * 4;
}
}

View File

@@ -18,201 +18,6 @@
position: fixed;
}
/* Active scripts */
.active-scripts-list {
list-style-type: none;
}
#active-scripts-container {
position: fixed;
padding-top: 10px;
}
#active-scripts-text,
#active-scripts-total-prod {
width: 70%;
margin: 6px;
padding: 4px;
}
.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;
}
.active-scripts-server-header.active,
.active-scripts-server-header:hover {
background-color: #555;
}
.active-scripts-server-header.active:hover {
background-color: #666;
}
.active-scripts-server-header:after {
content: '\02795'; /* "plus" sign (+) */
font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
}
.active-scripts-server-header.active:after {
content: "\2796"; /* "minus" sign (-) */
font-size: $defaultFontSize * 0.8125;
color: #fff;
float: right;
margin-left: 5px;
}
.active-scripts-server-panel {
margin: 0 6px 6px 6px;
padding: 0 6px 6px 6px;
width: 55%;
margin-left: 5%;
display: none;
}
.active-scripts-server-panel div,
.active-scripts-server-panel ul,
.active-scripts-server-panel ul > li {
background-color: #555;
}
.active-scripts-script-header {
background-color: #555;
color: var(--my-font-color);
padding: 4px 25px 4px 10px;
cursor: pointer;
width: auto;
text-align: left;
border: none;
outline: none;
position: relative;
&: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 {
padding: 0 18px;
background-color: #555;
width: auto;
display: none;
margin-bottom: 6px;
p, h2, ul, li {
background-color: #555;
width: auto;
color: #fff;
margin-left: 5%;
}
}
/* Hacknet Nodes */
#hacknet-nodes-container {
position: fixed;
padding: 10px;
}
#hacknet-nodes-text,
#hacknet-nodes-container li {
margin: 10px;
padding: 10px;
}
#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;
}
}
.menu-page-text {
width: 70vw;
}
/* World */
#world-container {
position: fixed;
@@ -260,19 +65,6 @@
width: 70%;
}
#faction-donate-amount-txt,
#faction-donate-input {
padding: 6px;
margin: 6px;
display: inline-block;
color: var(--my-font-color);
background-color: #000;
}
#faction-donate-amount-txt {
width: 50%;
}
#faction-container p,
#faction-container pre {
padding: 4px 6px;
@@ -288,45 +80,12 @@
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
/* Faction Augmentations */
#faction-augmentations-container {
position: fixed;
padding-top: 10px;
p, a, ul, h1 {
margin: 8px;
padding: 4px;
}
}
/* World */
#world-container li {
margin: 0 0 15px 0;
list-style-type: none;
}
/* Augmentations */
#augmentations-container {
position: fixed;
padding-top: 10px;
}
.augmentations-list {
button,
div {
color: var(--my-font-color);
text-decoration: none;
}
button {
padding: 2px 5px;
}
div {
padding: 6px;
}
}
/* Tutorial */
#tutorial-container {
position: fixed;
@@ -425,5 +184,4 @@
#infiltration-buttons .a-link-button {
display: inline;
width: 25%;
}

5
css/milestones.scss Normal file
View File

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

View File

@@ -3,7 +3,7 @@
/* Pop-up boxes */
.popup-box-container {
display: none; /* Hidden by default */
display: none; /* Initially hidden */
position: fixed; /* Stay in place */
z-index: 10; /* Sit on top */
left: 0;

View File

@@ -7,16 +7,28 @@
position: fixed;
}
.bitnode {
color: #00f;
}
&.level-0 {
color: red;
}
.bitnode-destroyed {
color: #f00;
}
&.level-1 {
color: yellow;
}
.bitnode:hover,
.bitnode-destroyed:hover {
color: #fff;
&.level-2 {
color: #48d1cc;
}
&.level-3 {
color: blue;
}
&.unimplemented {
color: gray;
}
&:hover {
color: #fff;
}
}

View File

@@ -1,4 +1,4 @@
/**
/**
* Styling for the Re-Sleeving Page
*/
@import "theme";
@@ -15,7 +15,7 @@
.resleeve-panel {
display: inline-block;
margin: 0px;
margin: 0;
padding: 2px;
}

View File

@@ -68,13 +68,14 @@
@include boxShadow($boxShadowArgs);
background-color: #555;
border: 2px solid var(--my-highlight-color);
color: #fff;
display: inline-block;
float: center;
resize: none;
color: #fff;
margin: 4px;
padding: 2px;
border: 2px solid var(--my-highlight-color);
resize: none;
width: 60%;
}
#script-editor-status {

View File

@@ -20,7 +20,7 @@
.sleeve-panel {
display: inline-block;
margin: 0px;
margin: 0;
padding: 2px;
select {

View File

@@ -7,35 +7,45 @@
p {
font-size: $defaultFontSize * 0.8125;
}
a {
font-size: $defaultFontSize * 0.875;
}
h2 {
}
.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 li {
button {
font-size: $defaultFontSize;
#stock-market-list {
list-style: none;
li {
button {
font-size: $defaultFontSize;
}
}
}
#stock-market-container p {
padding: 6px;
margin: 6px;
width: 70%;
}
#stock-market-container a {
margin: 10px;
}
#stock-market-watchlist-filter {
display: block;
margin: 5px 5px 5px 10px;
padding: 4px;
width: 50%;
margin-left: 10px;
}
.stock-market-input {
@@ -47,14 +57,36 @@
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: inline-block;
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 {

View File

@@ -17,7 +17,8 @@ body {
p,
pre,
h2,
.text {
.text,
td {
color: var(--my-font-color);
}
@@ -62,6 +63,9 @@ a:visited {
.text-input {
color: #fff;
background-color: #000;
border-style: solid;
border-width: 1px;
border-color: white;
}
/* Notification icon (for create program right now only) */
@@ -76,6 +80,28 @@ a:visited {
right: 0;
}
#factions-tab {
position: relative;
}
#factions-notification {
font-size: $defaultFontSize * 0.625;
position: absolute; /* Position the badge within the relatively positioned button */
top: 0;
right: 0;
}
#augmentations-tab {
position: relative;
}
#augmentations-notification {
font-size: $defaultFontSize * 0.625;
position: absolute; /* Position the badge within the relatively positioned button */
top: 0;
right: 0;
}
.notification-on {
background-color: #fa3e3e;
color: #fff;
@@ -202,23 +228,25 @@ a:visited {
}
.status-text {
display: inline-block;
height: 15%;
position: fixed;
z-index: 2;
-webkit-animation: status-text 3s 1;
}
#status-text-container {
background-color: transparent;
position:absolute;
top:0;
left:50%;
}
#status-text {
background-color: transparent;
font-size: $defaultFontSize * 1.25;
bottom: 0;
color: #fff;
display: none;
font-size: $defaultFontSize * 1.25;
margin-right: 14px;
opacity: 0;
padding: 4px;
right: 0;
top: 0;
@@ -239,8 +267,8 @@ a:visited {
/* Accordion menus (Header with collapsible panel) */
.accordion-header {
background-color: #444;
font-size: $defaultFontSize * 1.25;
color: #fff;
font-size: $defaultFontSize * 1.25;
margin: 6px 6px 0 6px;
padding: 4px 6px;
cursor: pointer;
@@ -329,6 +357,68 @@ a:visited {
color: $my-stat-cha-color;
}
.reputation {
color: $light-yellow;
}
.smallfont {
font-size: $defaultFontSize * 0.8125;
}
.samefont {
font-size: inherit;
}
.noscrollbar {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
.noscrollbar::-webkit-scrollbar {
display: none;
}
input[type=checkbox] {
filter: invert(1) sepia(1) hue-rotate(41deg) brightness(100%) saturate(10);
}
.optionCheckbox {
margin: 5px;
float: right;
}
.optionRange {
-webkit-appearance: none;
background: #777;
outline: none;
opacity: 0.7;
height: 10px;
-webkit-transition: 0.2s;
transition: opacity 0.2s;
margin: 3px;
}
.optionRange::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 10px;
height: 10px;
background: var(--my-font-color);
cursor: pointer;
}
.optionRange::-moz-range-thumb {
width: 10px;
height: 10px;
background: var(--my-font-color);
cursor: pointer;
}
.noselect {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}

View File

@@ -35,7 +35,7 @@
left: 50%;
transform: translate(-100%, -100%);
/* Backwards compatibility */
/* Backwards compatibility */
-webkit-transform: translate(-100%, -100%);
-moz-transform: translate(-100%, -100%);
-o-transform: translate(-100%, -100%);
@@ -85,3 +85,45 @@
.tooltip:hover .tooltiptextlow {
visibility: visible;
}
.copy_tooltip {
position: relative;
display: inline-block;
}
.copy_tooltip_copied {
color: #fff;
transition: color 0.3s;
}
.copy_tooltip .copy_tooltip_text {
visibility: hidden;
font-size: 15px;
padding: 5px;
background-color: var(--my-background-color);
color: #fff;
text-align: center;
position: absolute;
z-index: 1;
top: 120%;
left: 5%;
opacity: 0;
border: 2px solid var(--my-highlight-color);
}
.copy_tooltip .copy_tooltip_text::after {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -6px;
border-width: 8px;
border-style: solid;
border-color: transparent transparent white transparent;
}
.copy_tooltip .copy_tooltip_text_visible {
visibility: visible;
opacity: 1;
transition: opacity 0.3s;
}

View File

@@ -7,16 +7,16 @@
.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 .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);
padding: 4px;
min-width: 60px;
text-align: center;
border: 2px solid #e8e8e3;
border-radius: 2px;
box-shadow: 1px 1px 1px rgba(0,0,0,0.5);
font-size: 12px;
}

20
dist/engine.bundle.js vendored

File diff suppressed because one or more lines are too long

2305
dist/engine.css vendored

File diff suppressed because it is too large Load Diff

2
dist/engineStyle.bundle.js vendored Normal file
View File

@@ -0,0 +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([841,0]),o()}({780:function(n,t,o){},782:function(n,t,o){},784:function(n,t,o){},786:function(n,t,o){},788:function(n,t,o){},790:function(n,t,o){},792:function(n,t,o){},794:function(n,t,o){},796:function(n,t,o){},798:function(n,t,o){},800:function(n,t,o){},802:function(n,t,o){},804:function(n,t,o){},806:function(n,t,o){},808:function(n,t,o){},810:function(n,t,o){},812:function(n,t,o){},814:function(n,t,o){},816:function(n,t,o){},818:function(n,t,o){},820:function(n,t,o){},822:function(n,t,o){},824:function(n,t,o){},826:function(n,t,o){},828:function(n,t,o){},830:function(n,t,o){},832:function(n,t,o){},834:function(n,t,o){},836:function(n,t,o){},838:function(n,t,o){},841:function(n,t,o){"use strict";o.r(t);o(840),o(838),o(836),o(834),o(832),o(830),o(828),o(826),o(824),o(822),o(820),o(818),o(816),o(814),o(812),o(810),o(808),o(806),o(804),o(802),o(800),o(798),o(796),o(794),o(792),o(790),o(788),o(786),o(784),o(782),o(780)}});
//# sourceMappingURL=engineStyle.bundle.js.map

5037
dist/engineStyle.css vendored Normal file

File diff suppressed because it is too large Load Diff

675
dist/vendor.bundle.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -56,8 +56,3 @@ through destroying BitNodes is:
* Source-Files
* Scripts on the home computer
BitNode Details
^^^^^^^^^^^^^^^
TODO

View File

@@ -14,6 +14,8 @@ Sleeve technology unlocks two different gameplay features:
Sleeve technology is unlocked in :ref:`BitNode-10 <gameplay_bitnodes>`.
.. _gameplay_duplicatesleeves:
Duplicate Sleeves
^^^^^^^^^^^^^^^^^
Duplicate Sleeves are MK-V Synthoids (synthetic androids) into which your consciuosness
@@ -28,6 +30,19 @@ Sleeves are their own individuals, which means they each have their own experien
When a sleeve earns experience, it earns experience for itself, the player's
original consciousness, as well as all of the player's other sleeves.
Duplicate Sleeves are **not** reset when installing Augmentations, but they are reset
when switching BitNodes.
Obtaining Duplicate Sleeves
~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are two methods of obtaining Duplicate Sleeves:
1. Destroy BitNode-10. Each completion give you one additional Duplicate Sleeve
2. Purchase Duplicate Sleeves from :ref:`the faction The Covenant <gameplay_factions>`.
This is only available in BitNodes-10 and above, and is only available after defeating
BitNode-10 at least once. Sleeves purchased this way are **permanent** (they persist
through BitNodes). You can purchase up to 5 Duplicate Sleeves from The Covenant.
Synchronization
~~~~~~~~~~~~~~~
Synchronization is a measure of how aligned your consciousness is with that of your
@@ -50,6 +65,34 @@ no shock. Shock affects the amount of experience earned by the sleeve.
Sleeve shock slowly decreases over time. You can further increase the rate at which
it decreases by assigning sleeves to the 'Shock Recovery' task.
Augmentations
~~~~~~~~~~~~~
You can purchase :ref:`Augmentations <gameplay_augmentations>` for your Duplicate
Sleeves. In order to do this, the Sleeve's Shock must be at 0. Any Augmentation
that is currently available to you through a faction is also available for your
Duplicate Sleeves. There are a few Augmentations, such as NeuroFlux Governor and
Bladeburner-specific ones, that cannot be purchased for a Duplicate Sleeve.
When you purchase an Augmentation for a Duplicate Sleeve, it is instantly installed.
When this happens, the Sleeve's stats are instantly reset back to 0, similar to
when you normally install Augmentations.
The cost of purchasing an Augmentation for a Duplicate Sleeve is **not** affected
by how many Augmentations you have purchased for yourself, and vice versa.
Memory
~~~~~~
Sleeve memory dictates what a sleeve's synchronization will be when its reset by
switching BitNodes. For example, if a sleeve has a memory of 10, then when you
switch BitNodes its synchronization will initially be set to 10, rather than 1.
Memory can only be increased by purchasing upgrades from The Covenant. Just like
the ability to purchase additional sleeves, this is only available in BitNodes-10
and above, and is only available after defeating BitNode-10 at least once.
Memory is a persistent stat, meaning it never gets reset back to 1.
The maximum possible value for a sleeve's memory is 100.
Re-sleeving
^^^^^^^^^^^
Re-sleeving is the process of digitizing and transferring your consciousness into a
@@ -64,4 +107,4 @@ Note that resleeving **REMOVES** all of your currently-installed Augmentations,
and replaces them with the ones provided by the purchased sleeve. However,
Augmentations that are purchased but not installed will **not** be removed. If you have purchased
an Augmentation and then re-sleeve into a body which already has that Augmentation,
it will be removed since you cannot have duplicate Augmentations.
it will be removed since you cannot have duplicate Augmentations.

View File

@@ -47,7 +47,8 @@ List of all Source-Files
+------------------------------------+-------------------------------------------------------------------------------------+
| BitNode-9: Coming Soon | |
+------------------------------------+-------------------------------------------------------------------------------------+
| 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 |
+------------------------------------+-------------------------------------------------------------------------------------+
| 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) |

View File

@@ -11,7 +11,7 @@ user's physical and mental faculties.
Augmentations provide persistent upgrades in the form of multipliers.
These multipliers apply to a wide variety of things such as stats,
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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -23,6 +23,8 @@ enough reputation in it, you will be able to purchase its Augmentations.
Different Factions offer different Augmentations. Augmentations must be
purchased in order to be installed, and they are fairly expensive.
.. _gameplay_augmentations_installing:
Installing Augmentations
^^^^^^^^^^^^^^^^^^^^^^^^
You will not gain the benefits of your purchased Augmentations until you
@@ -57,6 +59,8 @@ Here is everything you will KEEP when you install an Augmentation:
* RAM Upgrades on your home computer
* World Stock Exchange account and TIX API Access
.. _gameplay_augmentations_purchasingmultiple:
Purchasing Multiple Augmentations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You do not have to install an Augmentation right after you purchase it.

View File

@@ -40,7 +40,7 @@ solutions. Some may be numbers, others may be strings or arrays.
If a contract asks for a specific solution format, then
use that. Otherwise, follow these rules when submitting solutions:
* String-type solutions should not have quotation marks surrounding
* String-type solutions should **not** have quotation marks surrounding
the string (unless specifically asked for). Only quotation
marks that are part of the actual string solution should be included.
* Array-type solutions should be submitted with each element
@@ -204,8 +204,8 @@ The list contains the name of (i.e. the value returned by
| | | the string, the result should be an array with only an empty string. |
| | | |
| | | Examples: |
| | | ()())() -> ["()()()", "(())()"] |
| | | (a)())() -> ["(a)()()", "(a())()"] |
| | | ()())() -> [()()(), (())()] |
| | | (a)())() -> [(a)()(), (a())()] |
| | | )( -> [""] |
+------------------------------------+------------------------------------------------------------------------------------------+
| Find All Valid Math Expressions | | You are given a string which contains only digits between 0 and 9 as well as a target |
@@ -214,10 +214,12 @@ The list contains the name of (i.e. the value returned by
| | | |
| | | The answer should be provided as an array of strings containing the valid expressions. |
| | | |
| | | NOTE: Numbers in an expression cannot have leading 0's |
| | | |
| | | Examples: |
| | | Input: digits = "123", target = 6 |
| | | Output: ["1+2+3", "1*2*3"] |
| | | Output: [1+2+3, 1*2*3] |
| | | |
| | | Input: digits = "105", target = 5 |
| | | Output: ["1*0+5", "10-5"] |
| | | Output: [1*0+5, 10-5] |
+------------------------------------+------------------------------------------------------------------------------------------+

View File

@@ -35,7 +35,7 @@ List of Factions and their Requirements
| Early Game | Faction Name | Requirements | Joining this Faction prevents |
| Factions | | | you from joining: |
+ +----------------+-----------------------------------------+-------------------------------+
| | CyberSec | * Hack CSEC Manually | |
| | CyberSec | * Install a backdoor on the CSEC server | |
+ +----------------+-----------------------------------------+-------------------------------+
| | Tian Di Hui | * $1m | |
| | | * Hacking Level 50 | |
@@ -74,13 +74,16 @@ List of Factions and their Requirements
| | | | * New Tokyo |
| | | | * Ishima |
+---------------------+----------------+-----------------------------------------+-------------------------------+
| Hacking | NiteSec | * Hack avmnite-02h manually | |
| Groups | | * Home Computer RAM of at least 32GB | |
| Hacking | NiteSec | * Install a backdoor on the avmnite-02h | |
| Groups | | server | |
| | | * Home Computer RAM of at least 32GB | |
+ +----------------+-----------------------------------------+-------------------------------+
| | The Black Hand | * Hack I.I.I.I manually | |
| | The Black Hand | * Install a backdoor on the I.I.I.I | |
| | | server | |
| | | * Home Computer RAM of at least 64GB | |
+ +----------------+-----------------------------------------+-------------------------------+
| | Bitrunners | * Hack run4theh111z manually | |
| | Bitrunners | * Install a backdoor on the run4theh111z| |
| | | server | |
| | | * Home Computer RAM of at least 128GB | |
+---------------------+----------------+-----------------------------------------+-------------------------------+
| Megacorporations | ECorp | * Have 200k reputation with | |
@@ -112,7 +115,8 @@ List of Factions and their Requirements
+ +----------------+-----------------------------------------+-------------------------------+
| | Fulcrum Secret | * Have 250k reputation with | |
| | Technologies | the Corporation | |
| | | * Hack fulcrumassets manually | |
| | | * Install a backdoor on the | |
| | | fulcrumassets server | |
+---------------------+----------------+-----------------------------------------+-------------------------------+
| Criminal | Slum Snakes | * All Combat Stats of 30 | |
| Organizations | | * -9 Karma | |

View File

@@ -49,6 +49,8 @@ on a server in order to successfully NUKE it:**
Once you have enough ports opened on a server and have ran the NUKE virus
to gain root access, you will be able to hack it.
.. _gameplay_hacking_generalhackingmechanics:
General Hacking Mechanics
^^^^^^^^^^^^^^^^^^^^^^^^^
When you execute the hack command, either manually through the terminal
@@ -73,6 +75,8 @@ in your hacking (since you are only hacking a certain percentage).
You can increase the amount of money on a server using a script and
the :js:func:`grow` function in Netscript.
.. _gameplay_hacking_serversecurity:
Server Security
^^^^^^^^^^^^^^^
Each server has a security level, typically between 1 and 100.

View File

@@ -37,6 +37,8 @@ name and the arguments that it was run with.**
The arguments must be an **exact** match. This means that both
the order and type of the arguments matter.
.. _gameplay_scripts_multithreadingscripts:
Multithreading scripts
^^^^^^^^^^^^^^^^^^^^^^
A script can be run with multiple threads. This is also called multithreading.

View File

@@ -7,6 +7,15 @@ buy and sell stocks in order to make money.
The WSE can be found in the 'City' tab, and is accessible in every city.
Fundamentals
------------
The Stock Market is not as simple as "buy at price X and sell at price Y". The following
are several fundamental concepts you need to understand about the stock market.
.. note:: For those that have experience with finance/trading/investing, please be aware
that the game's stock market does not function exactly like it does in the real
world. So these concepts below should seem similar, but won't be exactly the same.
Positions: Long vs Short
^^^^^^^^^^^^^^^^^^^^^^^^
When making a transaction on the stock market, there are two types of positions:
@@ -16,16 +25,73 @@ is the exact opposite. In a Short position you purchase shares of a stock and
earn a profit if the price of that stock decreases. This is also called 'shorting'
a stock.
NOTE: Shorting stocks is not available immediately, and must be unlocked later in the
game.
.. note:: Shorting stocks is not available immediately, and must be unlocked later in the
game.
Forecast & Second-Order Forecast
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A stock's forecast is its likelihood of increasing or decreasing in value. The
forecast is typically represented by its probability of increasing in either
a decimal or percentage form. For example, a forecast of 70% means the stock
has a 70% chance of increasing and a 30% chance of decreasing.
A stock's second-order forecast is the target value that its forecast trends towards.
For example, if a stock has a forecast of 60% and a second-order forecast of 70%,
then the stock's forecast should slowly trend towards 70% over time. However, this is
determined by RNG so there is a chance that it may never reach 70%.
Both the forecast and the second-order forecast change over time.
A stock's forecast can be viewed after purchasing Four Sigma (4S) Market Data
access. This lets you see the forecast info on the Stock Market UI. If you also
purchase access to the 4S Market Data TIX API, then you can view a stock's forecast
using the :js:func:`getStockForecast` function.
A stock's second-order forecast is always hidden.
.. _gameplay_stock_market_spread:
Spread (Bid Price & Ask Price)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The **bid price** is the maximum price at which someone will buy a stock on the
stock market.
The **ask price** is the minimum price that a seller is willing to receive for a stock
on the stock market
The ask price will always be higher than the bid price (This is because if a seller
is willing to receive less than the bid price, that transaction is guaranteed to
happen). The difference between the bid and ask price is known as the **spread**.
A stock's "price" will be the average of the bid and ask price.
The bid and ask price are important because these are the prices at which a
transaction actually occurs. If you purchase a stock in the long position, the cost
of your purchase depends on that stock's ask price. If you then try to sell that
stock (still in the long position), the price at which you sell is the stock's
bid price. Note that this is reversed for a short position. Purchasing a stock
in the short position will occur at the stock's bid price, and selling a stock
in the short position will occur at the stock's ask price.
Transactions Influencing Stock Forecast
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Buying or selling a large number of shares
of a stock will influence that stock's forecast & second-order forecast.
The forecast is the likelihood that the stock will increase or decrease in price.
The magnitude of this effect depends on the number of shares being transacted.
More shares will have a bigger effect.
The effect that transactions have on a stock's second-order forecast is
significantly smaller than the effect on its forecast.
.. _gameplay_stock_market_order_types:
Order Types
^^^^^^^^^^^
There are three different types of orders you can make to buy or sell stocks on the exchange:
Market Order, Limit Order, and Stop Order.
Note that Limit Orders and Stop Orders are not available immediately, and must be unlocked
later in the game.
.. note:: Limit Orders and Stop Orders are not available immediately, and must be unlocked
later in the game.
When you place a Market Order to buy or sell a stock, the order executes immediately at
whatever the current price of the stock is. For example if you choose to short a stock
@@ -66,3 +132,77 @@ A Limit Order to sell will execute if the stock's price <= order's price
A Stop Order to buy will execute if the stock's price <= order's price
A Stop Order to sell will execute if the stock's price >= order's price.
.. _gameplay_stock_market_player_actions_influencing_stock:
Player Actions Influencing Stocks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It is possible for your actions elsewhere in the game to influence the stock market.
Hacking
If a server has a corresponding stock (e.g. *foodnstuff* server -> FoodNStuff
stock), then hacking that server can decrease the stock's second-order
forecast. This causes the corresponding stock's forecast to trend downwards in value
over time.
This effect only occurs if you set the *stock* option to
true when calling the :js:func:`hack` function. The chance that hacking a
server will cause this effect is based on what percentage of the
server's total money you steal.
A single hack will have a minor
effect, but continuously hacking a server for lots of money over time
will have a noticeable effect in making the stock's forecast trend downwards.
Growing
If a server has a corresponding stock (e.g. *foodnstuff* server -> FoodNStuff
stock), then growing that server's money can increase the stock's
second-order forecast. This causes the corresponding stock's
forecast to trend upwards in value over time.
This effect only occurs if you set the *stock* option to true when calling the
:js:func:`grow` function. The chance that growing a server will cause this
effect is based on what percentage of the server's total money to add to it.
A single grow operation will have a minor effect, but continuously growing
a server for lots of money over time will have a noticeable effect in making
the stock's forecast trend upwards.
Working for a Company
If a company has a corresponding stock, then working for that company will
increase the corresponding stock's second-order forecast. This will
cause the stock's forecast to (slowly) trend upwards in value
over time.
The potency of this effect is based on how "effective" you are when you work
(i.e. its based on your stats and multipliers).
Automating the Stock Market
---------------------------
You can write scripts to perform automatic and algorithmic trading on the Stock Market.
See :ref:`netscript_tixapi` for more details.
Under the Hood
--------------
Stock prices are updated every ~6 seconds.
Whether a stock's price moves up or down is determined by RNG. However,
stocks have properties that can influence the way their price moves. These properties
are hidden, although some of them can be made visible by purchasing the
Four Sigma (4S) Market Data upgrade. Some examples of these properties are:
* Volatility
* Likelihood of increasing or decreasing (i.e. the stock's forecast)
* Likelihood of forecast increasing or decreasing (i.e. the stock's second-order forecast)
* How easily a stock's price/forecast is influenced by transactions
* Spread percentage
* Maximum price (not a real maximum, more of a "soft cap")
Each stock has its own unique values for these properties.
Offline Progression
-------------------
The Stock Market does not change or process anything while the game has closed.
However, it does accumulate time when offline. This accumulated time allows
the stock market to run 50% faster when the game is opened again. This means
that stock prices will update every ~4 seconds instead of 6.

View File

@@ -16,6 +16,85 @@ the terminal and enter::
nano .fconf
.. _terminal_filesystem:
Filesystem (Directories)
------------------------
The Terminal contains a **very** basic filesystem that allows you to store and
organize your files into different directories. Note that this is **not** a true
filesystem implementation. Instead, it is done almost entirely using string manipulation.
For this reason, many of the nice & useful features you'd find in a real
filesystem do not exist.
Here are the Terminal commands you'll commonly use when dealing with the filesystem.
* :ref:`ls_terminal_command`
* :ref:`cd_terminal_command`
* :ref:`mv_terminal_command`
Directories
^^^^^^^^^^^
In order to create a directory, simply name a file using a full absolute Linux-style path::
/scripts/myScript.js
This will automatically create a "directory" called :code:`scripts`. This will also work
for subdirectories::
/scripts/hacking/helpers/myHelperScripts.script
Files in the root directory do not need to begin with a forward slash::
thisIsAFileInTheRootDirectory.txt
Note that there is no way to manually create or remove directories. The creation and
deletion of directories is automatically handled as you name/rename/delete
files.
Absolute vs Relative Paths
^^^^^^^^^^^^^^^^^^^^^^^^^^
Many Terminal commands accept absolute both absolute and relative paths for specifying a
file.
An absolute path specifies the location of the file from the root directory (/).
Any path that begins with the forward slash is an absolute path::
$ nano /scripts/myScript.js
$ cat /serverList.txt
A relative path specifies the location of the file relative to the current working directory.
Any path that does **not** begin with a forward slash is a relative path. Note that the
Linux-style dot symbols will work for relative paths::
. (a single dot) - represents the current directory
.. (two dots) - represents the parent directory
$ cd ..
$ nano ../scripts/myScript.js
$ nano ../../helper.js
Netscript
^^^^^^^^^
Note that in order to reference a file, :ref:`netscript` functions require the
**full** absolute file path. For example
.. code:: javascript
run("/scripts/hacking/helpers.myHelperScripts.script");
rm("/logs/myHackingLogs.txt");
rm("thisIsAFileInTheRootDirectory.txt");
.. note:: A full file path **must** begin with a forward slash (/) if that file
is not in the root directory.
Missing Features
^^^^^^^^^^^^^^^^
These features that are typically in Linux filesystems have not yet been added to the game:
* Tab autocompletion does not work with relative paths
* :code:`mv` only accepts full filepaths for the destination argument. It does not accept directories
Commands
--------
@@ -69,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
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
^^^
@@ -98,6 +185,25 @@ Display a message (.msg), literature (.lit), or text (.txt) file::
$ cat foo.lit
$ cat servers.txt
.. _cd_terminal_command:
cd
^^
$ cd [dir]
Change to the specified directory.
See :ref:`terminal_filesystem` for details on directories.
Note that this command works even for directories that don't exist. If you change
to a directory that doesn't exist, it will not be created. A directory is only created
once there is a file in it::
$ cd scripts/hacking
$ cd /logs
$ cd ..
check
^^^^^
@@ -126,6 +232,8 @@ Both 'clear' and 'cls' do the same thing::
$ clear
$ cls
.. _connect_terminal_command:
connect
^^^^^^^
@@ -165,8 +273,6 @@ Examples::
$ expr 3 ** 3
Evalutes a
free
^^^^
@@ -193,6 +299,7 @@ detailed information about the Terminal command. Examples::
$ help alias
$ help scan-analyze
.. _home_terminal_command:
home
^^^^
@@ -213,9 +320,12 @@ kill
^^^^
$ kill [script name] [args...]
$ kill [pid]
Kill the script specified by the script name and arguments. Each argument must
be separated by a space. Remember that a running script is uniquely identified
Kill the script specified by the script filename and arguments OR by its PID.
If you are killing the script using its filename and arguments, then each argument
must be separated by a space. Remember that a running script is uniquely identified
by both its name and the arguments that are used to start it. So, if a script
was ran with the following arguments::
@@ -225,35 +335,42 @@ Then to kill this script the same arguments would have to be used::
$ kill foo.script 50e3 sigma-cosmetics
Note that after issuing the 'kill' command for a script, it may take a few seconds for
the script to actually stop running.
If you are killing the script using its PID, then the PID argument must be numeric.
killall
^^^^^^^
Kills all scripts on the current server.
.. _ls_terminal_command:
ls
^^
$ ls [| grep pattern]
$ ls [dir] [| grep pattern]
Prints files on the current server to the Terminal screen.
Prints files and directories on the current server to the Terminal screen.
If this command is run with no arguments, then it prints all files on the current
server to the Terminal screen. The files will be displayed in alphabetical
order.
If this command is run with no arguments, then it prints all files and directories on the current
server to the Terminal screen. Directories will be printed first in alphabetical order,
followed by the files (also in alphabetical order).
The '| grep pattern' is an optional parameter that can be used to only display files
whose filenames match the specified pattern. For example, if you wanted to only display
files with the .script extension, you could use::
The :code:`dir` optional parameter allows you to specify the directory for which to display
files.
The :code:`| grep pattern` optional parameter allows you to only display files and directories
with a certain pattern in their names.
Examples::
// List files/directories with the '.script' extension in the current directory
$ ls | grep .script
Alternatively, if you wanted to display all files with the word *purchase* in the filename,
you could use::
// List files/directories with the '.js' extension in the root directory
$ ls / | grep .js
$ ls | grep purchase
// List files/directories with the word 'purchase' in the name, in the :code:`scripts` directory
$ ls scripts | grep purchase
lscpu
@@ -281,6 +398,28 @@ The first example above will print the amount of RAM needed to run 'foo.script'
with a single thread. The second example above will print the amount of RAM needed
to run 'foo.script' with 50 threads.
.. _mv_terminal_command:
mv
^^
$ mv [source] [destination]
Move the source file to the specified destination in the filesystem.
See :ref:`terminal_filesystem` for more details about the Terminal's filesystem.
This command only works for scripts and text files (.txt). It cannot, however, be used
to convert from script to text file, or vice versa.
This function can also be used to rename files.
.. note:: Unlike the Linux :code:`mv` command, the *destination* argument must be the
full filepath. It cannot be a directory.
Examples::
$ mv hacking.script scripts/hacking.script
$ mv myScript.js myOldScript.js
nano
^^^^
@@ -346,6 +485,9 @@ scan
Prints all immediately-available network connections. This will print a list
of all servers that you can currently connect to using the 'connect' Terminal command.
.. _scan_analyze_terminal_command:
scan-analyze
^^^^^^^^^^^^
@@ -364,6 +506,8 @@ The information 'scan-analyze' displays about each server includes whether or
not you have root access to it, its required hacking level, the number of open
ports required to run NUKE.exe on it, and how much RAM it has.
.. _scp_terminal_command:
scp
^^^
@@ -377,6 +521,8 @@ sudov
Prints whether or not you have root access to the current server.
.. _tail_terminal_command:
tail
^^^^
@@ -450,7 +596,7 @@ The data can only be downloaded to a script (.script, .ns, .js) or a text file
(.txt). If the target file already exists, it will be overwritten by this command.
Note that will not be possible to download data from many websites because they
do not allow cross-origin origin sharing (CORS). This includes websites such
do not allow cross-origin resource sharing (CORS). This includes websites such
as gist and pastebin. One notable site it will work on is rawgithub. Example::
$ wget https://raw.githubusercontent.com/danielyxie/bitburner/master/README.md game_readme.txt

View File

@@ -3,25 +3,725 @@
Changelog
=========
v0.51.8 - 2021-05-07 It was there all along (hydroflame)
--------------------------------------------------------
**Servers**
* Update n00dles metadata
**Netscript**
* 'hashGainRate' use the correct 'usedRam' and 'maxRam'
* Fix 'setActionAutolevel' logging.
* Fix 'setActionLevel' not working at all.
* Add 'installBackdoor' singularity function.
**Hacknet**
* Fix Hacknet Servers total production always displaying 0
**Documentation**
* Updated guide to no longer recommend BN12.
* Fix documentation for maxNumNodes (@ModdedGamers)
* Fix typo in 'sourcefiles.rst'
* Fix typo in 'recommendedbitnodeorder.rst'
* Fix 'getServer' documentation missing 'server' argument.
* Fix missing ram cost in 'getData.rst'
* Fix basic formulas examples.
* Fix typo in BN11 description.
* Fix formatting issue in Bladeburner (@Pimgd)
**Misc.**
* Fix negative money being displayed in full.
* Fix Hacking Missions not working.
* Fix Corporation tree not rendering.
* Fix script being needlessly recompiled. This should save real ram (not game ram)
* w0r1d_d43m0n can be backdoored
* Coding Contracts title is click-to-copy (@Rodeth)
* Covenant memory upgrade works better.
* Fix Neuroflux not being correctly calculated when entering BN with SF12.
* Delete Active Script now delete all active scripts, not just home.
* Now you can 'cd' in directories that only contain '.txt' files.
* Fix 'analyze' always saying players had root access
* Passive faction rep no longer builds for special factions.
* Donation option no longer appears for special factions.
* Rephrased some milestones.
* donation textbox now accepts money in the format '1b' and the like (@Dawe)
* Fix being able to join hated factions simultaneously. (@Dawe)
* 'ls' now displays files in multiple column. (Helps players with many files)
* Bladeburner multiplers now appear under Character>Stats and
Character>Augmentation when they are relevant.
* Fix missing functions syntax highlight in codemirror.
* Fix infiltration number formatting.
* script income transfers to parent on death. This helps keep track of
income for scripts that spawn short lived scripts.
v0.51.7 - 2021-04-28 n00dles
----------------------------
**Tutorial servers**
* All the tutorial servers have been reverted to their original value
* The new server n00dles has been added as tutorial server.
**Terminal**
* 'tail' now accepts Pid.
* 'analyze' now handles Hacknet Servers correctly.
* 'ServerProfiler.exe' now handles Hacknet Servers correctly.
**SF12**
* Now makes you start with Neuroflux Governor equal to the level of the SF.
**Netscript**
* Deprecated 'getServerRam'.
* 'getServerMaxRam' added to replace 'getServerRam'
* 'getServerUsedRam' added to replace 'getServerRam'
* 'getBitnodeMultipliers' is available inside BN5
* Time logged by hack/grow/weaken now displays in human time.
* thread count logged by hack/grow/weaken now displays with commas every
thousands place.
**Donation**
* Always visible but locked until favor requirements are reached.
**Augmentations**
* City factions has been rebalanced to give a reason to visit them all.
**Sleeves**
* Fix sleeves not being able to work at Volhavens gym.
**Lint**
* This shouldn't change anything but was like 10h of work. So I'm logging it.
**Misc.**
* Plethora of typo fixed (@Pimgd)
* ps documentation fix (@Dawe)
* The dev menu now has a quick bitflume option.
* Fix SF -1 not being as powerful as intended.
* Fix cashroot starter kit not displaying correctly.
* Fix DOM element 'character-overview-text' being nested twice.
* Hacknet documentation example fix.
* Money amount under 1000 dont display 3 decimal anymore.
* Fix nextSourceFile flag miscalculation on the bitverse (for Bn12)
* Faction invite text says "Decide later"/"Join!" instead of "No"/"Yes"
v0.51.6 - 2021-04-28 Backdoor! (Community)
------------------------------------------
**Backdoor**
* a new terminal command, backdoor, has been added to help differentiate
between the terminal hack command and the netscript hack function. (@dewint)
**Servers**
* foodnstuff, sigma-cosmetics, and joesguns have been rebalanced to help new players.
**Milestones**
* A new tab under the Help menu has been added to guide players through the
game.
**Casino**
* Blackjack has been added (@BigD)
**Netscript**
* 'prompt' now converts input to JSON.
* 'getRunningScript' is a new netscript function that returns a bunch of
data related to a running script.
**Coding contracts**
* trivial puzzles should no longer appear.
**Infiltration**
* All numbers are formatted like the rest of the game.
**Misc.**
* Server security is capped at 100.
* Added option to quit a job.
* 'cd' no longer works on unexistent folders.
* cd with no arguments brings you back to top level folder (@Andreas)
* 'softReset' documentation udpated.
* Money tracker now accounts for going to the hospital manually.
* codemirror is now the default editor (for new save files)
* fix typo in dark web help text (@Rodeth)
* so many documentation and typos fixes (@Pimgd)
* A corruption visual effect has been added to location with servers that
have backdoor installed. (@dewint)
v0.51.5 - 2021-04-20 Flags! (hydroflame)
----------------------------------------
**Netscript**
* 'flags' is a new function that helps script handle flags.
This is subject to change if it doesn't meet the need of the players.
* 'ps' now returns the pid.
* 'tail' now works with pid as first argument.
* 'tail' hostname defaults to current server. (like the documentation says)
* 'isRunning' hostname defaults to current server.
* 'isRunning' now works with pid as first argument.
**Gang**
* Nerfed ascension mechanic once again :(
**Misc.**
* Souce-File typo fix
* Fix 'while you were away' screen.
* Bladeburner team size can no longer be set to negative amounts.
v0.51.4 - 2021-04-19 Manual hacking is fun (hydroflame)
-------------------------------------------------------
**Manual hacking**
* These bonus require an install or a soft reset to take effect.
* Manual hacking gyms and university gives you a 10% discount.
* Manual hacking a corporation server decreases the penalty for leaving work
early.
**BladeBurner**
* nerfed int exp gained.
**Documentation**
* purchaseServer specifies what happens on failure.
* Fixed typo in recommended bitnode page.
* Removed misleading ram requirements for hacking factions.
**Netscript**
* growthAnalyze handles Infinity correctly.
**Misc.**
* Faction Augmentation will list how much reputation is required even after
that goal has been reached.
* Removed dollar sign in travel agency confirmation dialog box.
* Fixed typo in alpha-omega.lit
* the 'Game saved!' text no longer blocks the save game/options button.
* The text editor now remembers the location of your cursor and restores it.
* skills are recalculated instantly.
* Fix typo in Operation Zero description.
v0.51.3 - 2021-04-16 Y'all broke it on the first day (hydroflame)
-----------------------------------------------------------------
**Passive faction reputation**
* Reworked, from 1 rep / 2 minute. Now is a complicated percentage of the
reputation you'd gain working for them. It's not op but it feels a bit
more useful.
**Netscript**
* print/tprint now take any number of arguments.
* print/tprint will now print object as json.
* print/tprint now handle passing in an undefined argument properly.
**Casino**
* Cannot bet negative money anymore.
* Roulette max bet is a bit higher.
* Coin Flip has a small cooldown.
* All buttons reject unstrusted mouse events.
**Documentation**
* Changed a message that said nsjs only works on Chrome.
**Bugfix**
* hacknet.maxNumNodes now works for both nodes and servers.
* Fixed a bug where the popup boxes would contain data from previous popup boxes.
* .js files will also have the 'export async function' boilerplate.
**Misc.**
* turned off web form autocomplete for the terminal text input.
* Fixed an issue on Windows+Firefox where pressing up on the terminal would
bring the cursor to the begining of the line. (Issue #836)
* Hacknet node names is easier to handle for screen readers.
* Money spent on classes is now tracked independently of work money.
* running coding contract from the terminal will display its name.
v0.51.2 - 2021-04-09 Vegas, Baby! (hydroflame)
----------------------------------------------
**New location: The Iker Molina Casino**
* A casino opened in Aevum. However the house is rumored to cheat. If only
we could give them a taste of their own medicine.
**Misc.**
* Link to discord added under options
* 'getMemberInformation' doc updated, oops
* tech vendor now handle max ram and cores.
v0.51.1 - 2021-04-06 Bugfixes because the author of the last patch sucks (it's hydroflame)
------------------------------------------------------------------------------------------
**Netscript**
* 'getPlayer' returns players faction and tor
* 'hospitalization' is a new singularity function.
* 'gang.getMemberInformation' now returns more information.
* 'hacknet.hashCapacity' is a new hacknet function that returns the maximum hash capacity.
**Hospitalization**
* Now only cost at most 10% of your money.
**Bugfix**
* confirmation dialog box no longer use previous text
**Accessibility**
* The game is a little easier to handle for screen readers (yes, there's an
absolute legend playing this game with a screen reader)
* Infiltration use buttons instead of a-links
* New option to disable ASCII art. This will make the metro map and world
map display as a list of buttons.
**Misc.**
* 'fl1ght.exe' will no longer suggest the combat path. Related faction
requirements unchanged.
v0.51.0 - 2021-03-31 Formulas (hydroflame)
------------------------------------------
**Formulas API**
* A new API is introduced, this gives players access to various formulas used in the game.
It'll help you make more informed decisions.
**Netscript**
* 'getServer' is a new function meant to be used with the formulas API.
* 'getPlayer' is a new function meant to be used with the formulas API.
* 'getStats' and 'getCharacterInformation' are deprecated in favor of 'getPlayer'
* 'getCurrentServer' is a new function that returns the server the player is currently connected.
**Display**
* All money should now consistently be orange.
* All rep should now consistently be light-yellow.
* Most numbers should display consistently now (aka all money is formatted the same).
**Click to copy**
* Certain UI elements are now 'click-to-copy'
v0.50.2 - 2021-03-25 Everyone asked for this one. (hydroflame)
--------------------------------------------------------------
**BitNodeMultipliers**
* 'GangKarmaRequirements': a new multipler that influences how much karma is required to make a gang different bitnodes.
**Netscript**
* 'connect': a new singularity function that connects you to a server. (like the terminal command)
* 'manualHack': a new singularity function that performs a manual hack on the players current server.
* ns2 stack trace works on Firefox now.
**Misc.**
* New shortcut, Alt + b, brings you to bladeburner
* New shortcut, Alt + g, brings you to gang
v0.50.1 - 2021-03-22 (hydroflame)
---------------------------------
**Netscript**
* getTaskStats works
**Source-File -1**
* Added a new Exploit
**Factions**
* Augmentations offered by a Faction but already bought are in a separate list at the bottom of the page.
**Bug fixed**
* Fixed a bug where completing a maxed non-repeatable BitNode would make its color on the BitVerse like level 1.
**Misc.**
* Minor spacing in stats tables.
v0.50.0 - 2021-03-20 Intelligence (hydroflame)
----------------------------------------------
**Intelligence**
* int exp gain and effect has been reworked. It is now much more easy to
acquire and far more powerful. The goal here is to feel like players have
another tool in their arsenal.
**Factions**
* Hacking factions no longer have hacking level requirements since their associated servers do.
**Misc.**
* Sleeve styling.
* number formatting
* remove wiki button in Hacking Missions.
* Fix NaN displayed when very very large numbers are reached.
v0.49.2 - 2021-03-13 (hydroflame)
---------------------------------
**BN8**
* A new bitnode multipler has been added, it lets you reduce money from a
server without gaining actually any money. This is important for BN8 where
hack/grow can influence the stock market. No money can be gained from
hacking but server money can still be reduced.
**Documentation**
* readthedocs should now be more consistent and many examples were added.
**Netscript**
* Ace editor will now correctly highlight all functions.
* 'tFormat' is a new netscript function that returns a human readable
representation of milliseconds. eg. "2 hours 15 minute 43 seconds"
**Gang**
* style improvements
**Bladeburner**
* style improvements
* fix bug where 'skill list SKILL' would crash if skill is level 0.
**Sleeve**
* karma gain now scales with sync.
**Misc.**
* Fix issue where the effective stats under Character>Stats were being calculated.
v0.49.0 - 2021-03-11 Source-File -1 (hydroflame)
------------------------------------------------
**Source-File -1**
* For advanced players: The game now embraces exploits and will reward
players for doing so.
**Gang**
* ascension is less effective as the ascension multiplier goes up.
* territory gain scales with power difference.
**Netscript**
* 'gang.getEquipmentStats' returns the stats of the equipment.
* 'gang.getTaskStats' returns the stats of a task.
* 'getCrimeStats' returns the stats of a crime.
* Crashes should now print the ns stack trace.
* Log messages are now more consistent.
* 'softReset' now accepts a callback script like 'installAugmentations'
**Misc.**
* Minor formatting under Hacking>Active Scripts
* option menu colors now match the rest of the game, kinda.
v0.48.0 - ASCII - 2021-03-07 (hydroflame)
-----------------------------------------
**ASCII**
* Travel Agency now displays a world map
* Cities are now top view of metro station maps
**Netscript**
* 'softReset' is a new netscript function that performs a soft reset
regardless of if the player has bought augmentations or not.
* 'getAugmentationStats' is a new netscript function that returns the stats of
an augmentation.
* getCharacterInformation now additionally returns exp
* pid resets back to 1 when installing or destroying a BitNode.
* New '.ns' scripts start with a main function.
* 'hacknet.maxNumNodes' returns the maximum number of hacknet nodes.
**Bladeburner**
* Current stamina will scale as max stamina increases, this prevents players
from having very high penalty when they gain huge amount of exp at the
start of a reset.
**Misc.**
* Fixed an issue where SF3 was listed as infinitly repeatable and SF12 as
having a limit of 3.
* Fixed an issue where the gang equipment screen would freeze the game if a
script installed augmentations while it is open.
* All BonusTime now displays in the 'H M S' format.
* Donation textbox style updated to match the rest of the game.
* Corporation name style updated to match the rest of the game.
* minor formatting under Hacking>Active Scripts
* typo in BN12 description
* BN12 now reduces contract money
* Character>Stats percentages are aligned, server and hacknet limit are
displayed, if the player has SF5 the reduces stats are shown.
* Character>Augmentations now displays by how much the player stats will
increase.
* Character>Augmentations has a badge indicating how many augs the player
has bought but not installed
* Character>Factions has a badge indicating how many factions have pending
invites.
v0.47.2 - 7/15/2019
-------------------
**Netscript Changes**
* Added tail() Netscript function
* hacknet.getNodeStats() function now returns an additional property for Hacknet Servers: hashCapacity
* When writing to a file, the write() function now casts the data being written to a string (using String())
* BitNode-selection page now shows what Source-File level you have for each BitNode
* Overloaded kill() function so that you can kill a script by its PID
* spawn() now only takes 10 seconds to run (decreased from 20 seconds)
* run() and exec() now return the PID of the newly-executed scripts, rather than a boolean
* (A PID is just a positive integer)
* run(), exec(), and spawn() no longer need to be await-ed in NetscriptJS
* Script parsing and RAM calculations now support ES9
* installAugmentations() no longer has a return value since it causes all scripts to die
* isBusy() now returns true if you are in a Hacking Mission
* Bug fix: workForFaction() function now properly accounts for disabled logs
* Bug fix: RAM should now be properly calculated when running a callback script with installAugmentations()
* Bug fix: Fixed bug that caused scripts killed by exit()/spawn() to "clean up" twice
**Misc Changes**
* The 'kill' Terminal command can now kill a script by its PID
* Added 'Solarized Dark' theme to CodeMirror editor
* After Infiltration, you will now return to the company page rather than the city page
* Bug fix: Stock Market UI should no longer crash for certain locale settings
* Bug fix: You can now properly remove unfinished programs (the `*.exe-N%-INC` files)
* Bug fix: Fixed an issue that allowed you to increase money on servers with a 'maxMoney' of 0 (like CSEC)
* Bug fix: Scripts no longer persist if they were started with syntax/import errors
* Bug fix: 'hack' and 'analyze' Terminal commands are now blocking
* Bug fix: Exp earned by duplicate sleeves at universities/gyms now takes hash upgrades into account
v0.47.1 - 6/27/2019
-------------------
* Stock Market changes:
* Transactions no longer influence stock prices (but they still influence forecast)
* Changed the way stocks behave, particularly with regard to how the stock forecast occasionally "flips"
* Hacking & growing a server can potentially affect the way the corresponding stock's forecast changes
* Working for a company positively affects the way the corresponding stock's forecast changes
* Scripts now start/stop instantly
* Improved performance when starting up many copies of a new NetscriptJS script (by Ornedan)
* Improved performance when killing scripts
* Dialog boxes can now be closed with the ESC key (by jaguilar)
* NetscriptJS scripts should now be "re-compiled" if their dependencies change (by jaguilar)
* write() function should now properly cause NetscriptJS scripts to "re-compile" (by jaguilar)
v0.47.0 - 5/17/2019
-------------------
* Stock Market changes:
* Implemented spread. Stock's now have bid and ask prices at which transactions occur
* Large transactions will now influence a stock's price and forecast
* This "influencing" can take effect in the middle of a transaction
* See documentation for more details on these changes
* Added getStockAskPrice(), getStockBidPrice() Netscript functions to the TIX API
* Added getStockPurchaseCost(), getStockSaleGain() Netscript functions to the TIX API
* Re-sleeves can no longer have the NeuroFlux Governor augmentation
* This is just a temporary patch until the mechanic gets re-worked
* hack(), grow(), and weaken() functions now take optional arguments for number of threads to use (by MasonD)
* codingcontract.attempt() now takes an optional argument that allows you to configure the function to return a contract's reward
* Adjusted RAM costs of Netscript Singularity functions (mostly increased)
* Adjusted RAM cost of codingcontract.getNumTriesRemaining() Netscript function
* Netscript Singularity functions no longer cost extra RAM outside of BitNode-4
* Corporation employees no longer have an "age" stat
* Gang Wanted level gain rate capped at 100 (per employee)
* Script startup/kill is now processed every 3 seconds, instead of 6 seconds
* getHackTime(), getGrowTime(), and getWeakenTime() now return Infinity if called on a Hacknet Server
* Money/Income tracker now displays money lost from hospitalizations
* Exported saves now have a unique filename based on current BitNode and timestamp
* Maximum number of Hacknet Servers decreased from 25 to 20
* Bug Fix: Corporation employees stats should no longer become negative
* Bug Fix: Fixed sleeve.getInformation() throwing error in certain scenarios
* Bug Fix: Coding contracts should no longer generate on the w0r1d_d43m0n server
* Bug Fix: Duplicate Sleeves now properly have access to all Augmentations if you have a gang
* Bug Fix: getAugmentationsFromFaction() & purchaseAugmentation() functions should now work properly if you have a gang
* Bug Fix: Fixed issue that caused messages (.msg) to be sent when refreshing/reloading the game
* Bug Fix: Purchasing hash upgrades for Bladeburner/Corporation when you don't actually have access to those mechanics no longer gives hashes
* Bug Fix: run(), exec(), and spawn() Netscript functions now throw if called with 0 threads
* Bug Fix: Faction UI should now automatically update reputation
* Bug Fix: Fixed purchase4SMarketData()
* Bug Fix: Netscript1.0 now works properly for multiple 'namespace' imports (import * as namespace from "script")
* Bug Fix: Terminal 'wget' command now correctly evaluates directory paths
* Bug Fix: wget(), write(), and scp() Netscript functions now fail if an invalid filepath is passed in
* Bug Fix: Having Corporation warehouses at full capacity should no longer freeze game in certain conditions
* Bug Fix: Prevented an exploit that allows you to buy multiple copies of an Augmentation by holding the 'Enter' button
* Bug Fix: gang.getOtherGangInformation() now properly returns a deep copy
* Bug Fix: Fixed getScriptIncome() returning an undefined value
* Bug Fix: Fixed an issue with Hacknet Server hash rate not always updating
v0.46.3 - 4/20/2019
-------------------
* Added a new Augmentation: The Shadow's Simulacrum
* Improved tab autocompletion feature in Terminal so that it works better with directories
* Bug Fix: Tech vendor location UI now properly refreshed when purchasing a TOR router
* Bug Fix: Fixed UI issue with faction donations
* Bug Fix: The money statistics & breakdown should now properly track money earned from Hacknet Server (hashes -> money)
* Bug Fix: Fixed issue with changing input in 'Minimum Path Sum in a Triangle' coding contract problem
* Fixed several typos in various places
v0.46.2 - 4/14/2019
-------------------
* Source-File 2 now allows you to form gangs in other BitNodes when your karma reaches a very large negative value
* (Karma is a hidden stat and is lowered by committing crimes)
* Gang changes:
* Bug Fix: Gangs can no longer clash with themselve
* Bug Fix: Winning against another gang should properly reduce their power
* Bug Fix: Terminal 'wget' command now works properly
* Bug Fix: Hacknet Server Hash upgrades now properly reset upon installing Augs/switching BitNodes
* Bug Fix: Fixed button for creating Corporations
v0.46.1 - 4/12/2019
-------------------
* Added a very rudimentary directory system to the Terminal
* Details here: https://bitburner.readthedocs.io/en/latest/basicgameplay/terminal.html#filesystem-directories
* Added numHashes(), hashCost(), and spendHashes() functions to the Netscript Hacknet Node API
* 'Generate Coding Contract' hash upgrade is now more expensive
* 'Generate Coding Contract' hash upgrade now generates the contract randomly on the server, rather than on home computer
* The cost of selling hashes for money no longer increases each time
* Selling hashes for money now costs 4 hashes (in exchange for $1m)
* Bug Fix: Hacknet Node earnings should work properly when game is inactive/offline
* Bug Fix: Duplicate Sleeve augmentations are now properly reset when switching to a new BitNode
v0.46.0 - 4/3/2019
------------------
* Added BitNode-9: Hacktocracy
* Changed BitNode-11's multipliers to make it slightly harder overall
* Source-File 11 is now slightly stronger
* Added several functions to Netscript Sleeve API for buying Sleeve augmentations (by hydroflame)
* Added a new stat for Duplicate Sleeves: Memory
* Increase baseline experience earned from Infiltration, but it now gives diminishing returns (on exp) as you get to higher difficulties/levels
* In Bladeburner, stamina gained from Hyperbolic Regeneration Chamber is now a percentage of your max stamina
* Corporation Changes:
* 'Demand' value of products decreases more slowly
* Bug Fix: Fixed a Corporation issue that broke the Market-TA2 Research
* Bug Fix: Issuing New Shares now works properly
* Bug Fix: Money Statistics tracker was incorrectly recording profits when selling stocks manually
* Bug Fix: Fixed an issue with the job requirement tooltip for security jobs
v0.45.1 - 3/23/2019
-------------------
* Added two new Corporation Researches
* General UI improvements (by hydroflame and koriar)
* Bug Fix: Sleeve Netscript API should no longer cause Dynamic RAM errors
* Bug Fix: sleeve.getSleeveStats() should now work properly
v0.45.0 - 3/22/2019
-------------------
* Corporation changes:
* Decreased the time of a full market cycle from 15 seconds to 10 seconds.
* This means that each Corporation 'state' will now only take 2 seconds, rather than 3
* Increased initial salaries for newly-hired employees
* Increased the cost multiplier for upgrading office size (the cost will increase faster)
* The stats of your employees now has a slightly larger effect on production & sales
* Added several new Research upgrades
* Market-TA research now allows you to automatically set sale price at optimal values
* Market-TA research now works for Products (not just Materials)
* Reduced the amount of Scientific Research needed to unlock the Hi-Tech R&D Laboratory from 10k to 5k
* Energy Material requirement of the Software industry reduced from 1 to 0.5
* It is now slightly easier to increase the Software industry's production multiplier
* Industries now have a maximum number of allowed products, starting at 3. This can be increased through research.
* You can now see an approximation of how each material affects an industry's production multiplier by clicking the "?" help tip next to it
* Significantly changed the effects of the different employee positions. See updated descriptions
* Reduced the amount of money you gain from private investors
* Training employees is now 3x more effective
* Bug Fix: An industry's products are now properly separated between different cities
* The QLink Augemntation is now significantly stronger, but also significantly more expensive (by hydroflame)
* Added a Netscript API for Duplicate Sleeves (by hydroflame)
* Modified the multipliers of BitNode-3 and BitNode-8 to make them slightly harder
* After installing Augmentations, Duplicate Sleeves will now default to Synchronize if their Shock is 0
* Bug Fix: Bladeburner's Hyperbolic Regeneration Chamber should no longer instantly refill all stamina
* Bug Fix: growthAnalyze() function now properly accounts for BitNode multipliers
* Bug Fix: The cost of purchasing Augmentations for Duplicate Sleeves no longer scales with how many Augs you've purchased for yourself
v0.44.1 - 3/4/2019
------------------
* Duplicate Sleeve changes:
* You can now purchase Augmentations for your Duplicate Sleeves
* Sleeves are now assigned to Shock Recovery task by default
* Shock Recovery and Synchronize tasks are now twice as effective
* Changed documentation so that Netscript functions are own their own pages. Sorry if this is annoying, it was necessary for properly cross-referencing
* Officially deprecated the Wiki (the fandom site). Use the 'readthedocs' Documentation instead
* Bug Fix: 'rm' Terminal and Netscript commands now work on non-program files that have '.exe' in the name (by Github user MasonD)
* Bug Fix: The 'Find All Valid Math Expressions' Coding Contract should now properly ignore whitespace in answers
* Bug Fix: The 'Merge Overlapping Intervals' Coding Contract should now properly accept 2D arrays when being attempted through Netscript
v0.44.0 - 2/26/2019
-------------------
* Bladeburner Changes:
** Reduced the amount of rank needed to earn a skill point
** Reduced the effects of the "Reaper" and "Evasive System" skills
** Increased the effect of the "Hyperdrive" and "Hands of Midas" skills
** Slightly increased the rate which the skill point cost rises for almost all skills
** The "Overlock" Skill now has a maximum level of 90 instead of 95
** Money earned from Contracts increased by 400%
** Changed the way population affects success rate. Extreme populations now have less dramatic effects
** Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber
** Lowered the rep and money cost of the "Blade's Simulacrum" augmentation
** Significantly decreased the initial amount of Contracts/Operations (the "Contracts/Operations remaining" value)
** Decreased the rate at which the amount of Contracts/Operations increases over time
** Decreased the number of successes you need to increase the max level of a Contract/Operation
** Increased the average number of Synthoid communities each city has
** Reduced the amount by which a successful raid will decrease the population of a city
** The "riots" event will now increase the chaos of a city by a greater amount
** Significantly increased the effect that Agility and Dexterity have on action time
* Reduced the amount of rank needed to earn a skill point
* Reduced the effects of the "Reaper" and "Evasive System" skills
* Increased the effect of the "Hyperdrive" and "Hands of Midas" skills
* Slightly increased the rate which the skill point cost rises for almost all skills
* The "Overlock" Skill now has a maximum level of 90 instead of 95
* Money earned from Contracts increased by 400%
* Changed the way population affects success rate. Extreme populations now have less dramatic effects
* Added two new General Actions: Diplomacy and Hyperbolic Regeneration Chamber
* Lowered the rep and money cost of the "Blade's Simulacrum" augmentation
* Significantly decreased the initial amount of Contracts/Operations (the "Contracts/Operations remaining" value)
* Decreased the rate at which the amount of Contracts/Operations increases over time
* Decreased the number of successes you need to increase the max level of a Contract/Operation
* Increased the average number of Synthoid communities each city has
* Reduced the amount by which a successful raid will decrease the population of a city
* The "riots" event will now increase the chaos of a city by a greater amount
* Significantly increased the effect that Agility and Dexterity have on action time
* Added new BitNode multipliers:
* HomeComputerRamCost - Affects how much it costs to upgrade home computer's RAM
* DaedalusAugsRequirement - Affects how many Augmentations you need in order to get invited to Daedalus

View File

@@ -64,9 +64,9 @@ documentation_title = '{0} Documentation'.format(project)
# built documents.
#
# The short X.Y version.
version = '0.43'
version = '0.51'
# The full version, including alpha/beta/rc tags.
release = '0.43.0'
release = '0.51.8'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@@ -1,9 +1,12 @@
Guides & Tips
=============
Getting Started Guide for Intermediate Programmers
Beginners FAQ
.. toctree::
:maxdepth: 3
Getting Started Guide for Beginner Programmers
Getting Started Guide for Intermediate Programmers
What BitNode should I do?
Getting Started Guide for Beginner Programmers <guidesandtips/gettingstartedguideforbeginnerprogrammers>
What BitNode should I do?<guidesandtips/recommendedbitnodeorder>

View File

@@ -0,0 +1,877 @@
Getting Started Guide for Beginner Programmers
==============================================
.. note:: Note that the scripts and strategies given in this guide aren't necessarily
optimal. They're just meant to introduce you to the game and help you get
started.
This is an introductory guide to getting started with Bitburner. It is not meant to be a
comprehensive guide for the entire game, only the early stages. If you are confused
or overwhelmed by the game, especially the programming and scripting aspects, this
guide is perfect for you!
Note that this guide is tailored towards those with minimal programming experience.
Introduction
------------
Bitburner is a cyberpunk-themed incremental RPG. The player progresses by raising
their :ref:`gameplay_stats`, earning money, and :ref:`climbing the corporate ladder <gameplay_companies>`.
Eventually, after reaching certain criteria, the player will begin receiving invitations
from :ref:`gameplay_factions`. Joining these factions and working for them will unlock
:ref:`gameplay_augmentations`. Purchasing and installing Augmentations provide persistent
upgrades and are necessary for progressing in the game.
The game has a minimal story/quest-line that can be followed to reach the end of the game.
Since this guide is only about getting started with Bitburner, it will not cover the
entire "quest-line".
First Steps
-----------
I'm going to assume you followed the introductory tutorial when you first began the game.
In this introductory tutorial you created a script called :code:`foodnstuff.script` and ran it
on the :code:`foodnstuff` server. Right now, we'll kill this script. There are two ways
to do this:
1. You can go to the Terminal and enter::
$ kill foodnstuff.script
2. You can go to the :code:`Active Scripts` page (|Keyboard shortcut| Alt + s) and
press the "Kill Script" button for :code:`foodnstuff.script`.
If you skipped the introductory tutorial, then ignore the part above. Instead, go to the
:code:`Hacknet Nodes` page (|Keyboard shortcut| Alt + h) and purchase a
Hacknet Node to start generating some passive income.
Creating our First Script
-------------------------
Now, we'll create a generic hacking script that can be used early on in the game (or throughout the
entire game, if you want).
Before we write the script, here are some things you'll want to familiarize yourself with:
* :ref:`gameplay_hacking_generalhackingmechanics`
* :ref:`gameplay_hacking_serversecurity`
* :js:func:`hack`
* :js:func:`grow`
* :js:func:`weaken`
* :js:func:`brutessh`
* :js:func:`nuke`
To briefly summarize the information from the links above: Each server has a
security level that affects how difficult it is to hack. Each server also has a
certain amount of money, as well as a maximum amount of money it can hold. Hacking a
server steals a percentage of that server's money. The :js:func:`hack` Netscript function
is used to hack server. The :js:func:`grow` Netscript function is used to increase
the amount of money available on a server. The :js:func:`weaken` Netscript function is
used to decrease a server's security level.
Now let's move on to actually creating the script.
Go to your home computer and then create a script called :code:`early-hack-template.script` by
going to Terminal and entering the following two commands::
$ home
$ nano early-hack-template.script
This will take you to the script editor, which you can use to code and create
:ref:`gameplay_scripts`. It will be helpful to consult the :ref:`netscript` documentation.
Specifically, you'll want to take a look at :ref:`netscriptfunctions`.
Enter the following code in the script editor:
.. code:: javascript
// Defines the "target server", which is the server
// that we're going to hack. In this case, it's "foodnstuff"
var target = "foodnstuff";
// Defines how much money a server should have before we hack it
// In this case, it is set to 75% of the server's max money
var moneyThresh = getServerMaxMoney(target) * 0.75;
// Defines the maximum security level the target server can
// have. If the target's security level is higher than this,
// we'll weaken it before doing anything else
var securityThresh = getServerMinSecurityLevel(target) + 5;
// If we have the BruteSSH.exe program, use it to open the SSH Port
// on the target server
if (fileExists("BruteSSH.exe", "home")) {
brutessh(target);
}
// Get root access to target server
nuke(target);
// Infinite loop that continously hacks/grows/weakens the target server
while(true) {
if (getServerSecurityLevel(target) > securityThresh) {
// If the server's security level is above our threshold, weaken it
weaken(target);
} else if (getServerMoneyAvailable(target) < moneyThresh) {
// If the server's money is less than our threshold, grow it
grow(target);
} else {
// Otherwise, hack it
hack(target);
}
}
The script above contains comments that document what it does, but let's go through it
step-by-step anyways.
.. code:: javascript
var target = "foodnstuff";
This first command defines a string which contains our target server. That's the server
that we're going to hack. For now, it's set to `foodnstuff` because that's the only
server with a required hacking level of 1. If you want to hack a different server,
simply change this
variable to be the hostname of another server.
.. code:: javascript
var moneyThresh = getServerMaxMoney(target) * 0.75;
This second command defines a numerical value representing the minimum
amount of money that must be available on the target server in order for our script
to hack it. If the money available on the target server is less than this value,
then our script will :js:func:`grow` the server rather than hacking it.
It is set to 75% of the maximum amount of money that can be available on the server.
The :js:func:`getServerMaxMoney` Netscript function is used to find this value
.. code:: javascript
var securityThresh = getServerMinSecurityLevel(target) + 5;
This third command defines a numerical value representing the maximum security level
the target server can have. If the target server's security level is higher than
this value, then our script will :js:func:`weaken` the script before doing anything else.
.. code:: javascript
if (fileExists("BruteSSH.exe", "home")) {
brutessh(target);
}
nuke(target);
This section of code is used to gain root access on the target server. This is
necessary for hacking. See :ref:`here for more details <gameplay_hacking>`.
.. code:: javascript
while (true) {
if (getServerSecurityLevel(target) > securityThresh) {
// If the server's security level is above our threshold, weaken it
weaken(target);
} else if (getServerMoneyAvailable(target) < moneyThresh) {
// Otherwise, if the server's money is less than our threshold, grow it
grow(target);
} else {
// Otherwise, hack it
hack(target);
}
}
This is the main section that drives our script. It dictates the script's logic
and carries out the hacking operations. The `while (true)` creates an infinite loop
that will continuously run the hacking logic until the the script is killed.
Running our Scripts
-------------------
Now we want to start running our hacking script so that it can start earning us
money and experience. Our home computer only has 8GB of RAM and we'll be using it for
something else later. So instead, we'll take advantage of the RAM on other machines.
Go to |Terminal| and enter the following command::
$ scan-analyze 2
This will show detailed information about some servers on the network. The
**network is randomized so it will be different for every person**.
Here's what mine showed at the time I made this::
[home ~]> scan-analyze 2
~~~~~~~~~~ Beginning scan-analyze ~~~~~~~~~~
>foodnstuff
--Root Access: NO, Required hacking skill: 1
--Number of open ports required to NUKE: 0
--RAM: 16
>sigma-cosmetics
--Root Access: NO, Required hacking skill: 5
--Number of open ports required to NUKE: 0
--RAM: 16
>joesguns
--Root Access: NO, Required hacking skill: 10
--Number of open ports required to NUKE: 0
--RAM: 16
---->max-hardware
------Root Access: NO, Required hacking skill: 80
------Number of open ports required to NUKE: 1
------RAM: 32
>hong-fang-tea
--Root Access: NO, Required hacking skill: 30
--Number of open ports required to NUKE: 0
--RAM: 16
---->nectar-net
------Root Access: NO, Required hacking skill: 20
------Number of open ports required to NUKE: 0
------RAM: 16
>harakiri-sushi
--Root Access: NO, Required hacking skill: 40
--Number of open ports required to NUKE: 0
--RAM: 16
>iron-gym
--Root Access: NO, Required hacking skill: 100
--Number of open ports required to NUKE: 1
--RAM: 32
---->zer0
------Root Access: NO, Required hacking skill: 75
------Number of open ports required to NUKE: 1
------RAM: 32
---->CSEC
------Root Access: NO, Required hacking skill: 54
------Number of open ports required to NUKE: 1
------RAM: 8
Take note of the following servers:
* |foodnstuff|
* |sigma-cosmetics|
* |joesguns|
* |nectar-net|
* |hong-fang-tea|
* |harakiri-sushi|
All of these servers have 16GB of RAM. Furthermore, all of these servers do not require
any open ports in order to NUKE. In other words, we can gain root access to all of these
servers and then run scripts on them.
First, let's determine how many threads of our hacking script we can run.
:ref:`Read more about multithreading scripts here <gameplay_scripts_multithreadingscripts>`
The script we wrote
uses 2.6GB of RAM. You can check this using the following |Terminal| command::
$ mem early-hack-template.script
This means we can run 6 threads on a 16GB server. Now, to run our scripts on all of these
servers, we have to do the following:
1. Use the :ref:`scp_terminal_command` |Terminal| command to copy our script to each server.
2. Use the :ref:`connect_terminal_command` |Terminal| command to connect to a server.
3. Use the :ref:`run_terminal_command` |Terminal| command to run the `NUKE.exe` program and
gain root access.
4. Use the :ref:`run_terminal_command` |Terminal| command again to run our script.
5. Repeat steps 2-4 for each server.
Here's the sequence of |Terminal| commands I used in order to achieve this::
$ home
$ scp early-hack-template.script foodnstuff
$ scp early-hack-template.script sigma-cosmetics
$ scp early-hack-template.script joesguns
$ scp early-hack-template.script nectar-net
$ scp early-hack-template.script hong-fang-tea
$ scp early-hack-template.script harakiri-sushi
$ connect foodnstuff
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ home
$ connect sigma-cosmetics
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ home
$ connect joesguns
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ home
$ connect hong-fang-tea
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ home
$ connect harakiri-sushi
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ home
$ connect hong-fang-tea
$ connect nectar-net
$ run NUKE.exe
$ run early-hack-template.script -t 6
.. note::
Pressing the :code:`Tab` key in the middle of a Terminal command will attempt to
auto-complete the command. For example, if you type in :code:`scp ea` and then
hit :code:`Tab`, the rest of the script's name should automatically be filled in.
This works for most commands in the game!
The :ref:`home_terminal_command` |Terminal| command is used to connect to the home
computer. When running our scripts with the :code:`run early-hack-template.script -t 6`
command, the :code:`-t 6` specifies that the script should be run with 6 threads.
Note that the |nectar-net| server isn't in the home computer's immediate network.
This means you can't directly connect to it from home. You will have to search for it
inside the network. The results of the `scan-analyze 2` command we ran before
will show where it is. In my case, I could connect to it by going from
`hong-fang-tea -> nectar-net`. However, this will probably be different for you.
After running all of these |Terminal| commands, our scripts are now up and running.
These will earn money and hacking experience over time. These gains will be
really slow right now, but they will increase once our hacking skill rises and
we start running more scripts.
Increasing Hacking Level
------------------------
There are many servers besides |foodnstuff| that can be hacked, but they have
higher required hacking levels. Therefore, we should raise our hacking level. Not only
will this let us hack more servers, but it will also increase the effectiveness of our hacking
against |foodnstuff|.
The easiest way to train your hacking level is to visit Rothman University. You can do this by
clicking the `City` tab on the left-hand navigation menu, or you can use the
:ref:`keyboard shortcut <shortcuts>` Alt + w. Rothman University should be one of the buttons
near the top. Click the button to go to the location.
Once you go to Rothman University, you should see a screen with several options. These
options describe different courses you can take. You should click the first button, which
says: "Study Computer Science (free)".
After you click the button, you will start studying and earning hacking experience. While you
are doing this, you cannot interact with any other part of the game until you click the button
that says "Stop taking course".
Right now, we want a hacking level of 10. You need approximately 174 hacking experience to reach
level 10. You can check how much hacking experience you have by clicking the `Stats` tab
on the left-hand navigation menu, or by using |Keyboard shortcut| Alt + c.
Since studying at Rothman University earns you 1 experience per second, this will take
174 seconds, or approximately 3 minutes. Feel free to do something in the meantime!
Editing our Hacking Script
--------------------------
Now that we have a hacking level of 10, we can hack the :code:`joesguns` server. This server
will be slightly more profitable than :code:`foodnstuff`. Therefore, we want to change our hacking
script to target :code:`joesguns` instead of :code:`foodnstuff`.
Go to |Terminal| and edit the hacking script by entering::
$ home
$ nano early-hack-template.script
At the top of the script, change the `target` variable to be `joesguns`:
.. code:: javascript
var target = "joesguns";
Note that this will **NOT** affect any instances of the script that are already running.
This will only affect instances of the script that are ran from this point forward.
Creating a New Script to Purchase New Servers
---------------------------------------------
Next, we're going to create a script that automatically purchases additional servers. These
servers will be used to run many scripts. Running this script will initially be very
expensive since purchasing a server costs money, but it will pay off in the long run.
In order to create this script, you should familiarize yourself with the following
Netscript functions:
* :js:func:`purchaseServer`
* :js:func:`getPurchasedServerCost`
* :js:func:`getPurchasedServerLimit`
* :js:func:`getServerMoneyAvailable`
* :js:func:`scp`
* :js:func:`exec`
Create the script by going to |Terminal| and typing::
$ home
$ nano purchase-server-8gb.script
Paste the following code into the script editor:
.. code:: javascript
// How much RAM each purchased server will have. In this case, it'll
// be 8GB.
var ram = 8;
// Iterator we'll use for our loop
var i = 0;
// Continuously try to purchase servers until we've reached the maximum
// amount of servers
while (i < getPurchasedServerLimit()) {
// Check if we have enough money to purchase a server
if (getServerMoneyAvailable("home") > getPurchasedServerCost(ram)) {
// If we have enough money, then:
// 1. Purchase the server
// 2. Copy our hacking script onto the newly-purchased server
// 3. Run our hacking script on the newly-purchased server with 3 threads
// 4. Increment our iterator to indicate that we've bought a new server
var hostname = purchaseServer("pserv-" + i, ram);
scp("early-hack-template.script", hostname);
exec("early-hack-template.script", hostname, 3);
++i;
}
}
This code uses a while loop to purchase the maximum amount of servers using the
:js:func:`purchaseServer` Netscript function. Each of these servers will have
8GB of RAM, as defined in the :code:`ram` variable. Note that the script uses the command
:code:`getServerMoneyAvailable("home")` to get the amount of money you currently have.
This is then used to check if you can afford to purchase a server.
Whenever the script purchases a new server, it uses the :js:func:`scp` function to copy
our script onto that new server, and then it uses the :js:func:`exec` function to
execute it on that server.
To run this script, go to |Terminal| and type::
$ run purchase-server-8gb.script
This purchase will continuously run until it has purchased the maximum number of servers.
When this happens, it'll mean that you have a bunch of new servers that are all running
hacking scripts against the :code:`joesguns` server!
.. note::
The reason we're using so many scripts to hack :code:`joesguns` instead of targeting other
servers is because it's more effective. This early in the game, we don't have enough RAM
to efficiently hack multiple targets, and trying to do so would be slow as we'd be spread
too thin. You should definitely do this later on, though!
Note that purchasing a server is fairly expensive, and purchasing the maximum amount of
servers even more so. At the time of writing this guide, the script above requires
$11 million in order to finish purchasing all of the 8GB servers.
Therefore, we need to find additional ways to make money to speed
up the process! These are covered in the next section.
Additional Sources of Income
----------------------------
There are other ways to gain money in this game besides scripts & hacking.
Hacknet Nodes
^^^^^^^^^^^^^
If you completed the introductory tutorial, you were already introduced to this method: Hacknet Nodes.
Once you have enough money, you can start upgrading your Hacknet Nodes in order to increase
your passive income stream. This is completely optional. Since each Hacknet Node upgrade
takes a certain amount of time to "pay itself off", it may not necessarily be in your best
interest to use these.
Nonetheless, Hacknet Nodes are a good source of income early in the game, although
their effectiveness tapers off later on. If you do wind up purchasing and upgrading Hacknet Nodes,
I would suggest only upgrading their levels for now. I wouldn't bother with RAM and Core
upgrades until later on.
Crime
^^^^^
The best source of income right now is from :ref:`committing crimes <gameplay_crimes>`.
This is because it not only gives you a large amount of money, but it also raises your
hacking level. To commit crimes, click on the :code:`City` tab on the left-hand
navigation menu or use the |Keyboard shortcut| Alt + w.
Then, click on the link that says :code:`The Slums`.
In the Slums, you can attempt to commit a variety of crimes, each of which gives certain
types of experience and money if successful. See :ref:`gameplay_crimes` for more details.
.. note::
You are not always successful when you attempt to commit a crime. Nothing bad happens
if you fail a crime, but you won't earn any money and the experience gained will be
reduced. Raising your stats improves your chance of successfully committing a crime.
Right now, the best option is the :code:`Rob Store` crime. This takes 60 seconds to attempt
and gives $400k if successful. I suggest this crime because you don't have to click or check
in too often since it takes a whole minute to attempt. Furthermore, it gives hacking experience,
which is very important right now.
Alternatively, you can also use the :code:`Shoplift` crime. This takes 2 seconds to attempt
and gives $15k if successful. This crime is slightly easier and is more profitable
than :code:`Rob Store`, but it requires constant clicking and it doesn't give
hacking experience.
Work for a Company
^^^^^^^^^^^^^^^^^^
If you don't want to constantly check in on the game to commit crimes, there's another option
that's much more passive: working for a :ref:`company <gameplay_companies>`.
This will not be nearly as profitable as crimes, but it's completely passive.
Go to the :code:`City` tab on the left-hand navigation menu and then go to
:code:`Joe's Guns`. At :code:`Joe's Guns`, there will be an option that says
:code:`Apply to be an Employee`. Click this to get the job. Then, a new option
will appear that simply says :code:`Work`. Click this to start working.
Working at :code:`Joe's Guns` earns $110 per second and also grants some experience
for every stat except hacking.
Working for a company is completely passive. However, you will not be able to do anything
else in the game while you work. You can cancel working at any time. You'll notice that
cancelling your work early causes you to lose out on some reputation gains, but
you shouldn't worry about this. Company reputation isn't important right now.
Once your hacking hits level 75, you can visit :code:`Carmichael Security` in the city
and get a software job there. This job offers higher pay and also earns you
hacking experience.
There are many more companies in the |City tab| that offer more pay and also more gameplay
features. Feel free to explore!
After you Purchase your New Servers
-----------------------------------
After you've made a total of $11 million, your automatic server-purchasing script should
finish running. This will free up some RAM on your home computer. We don't want this RAM
to go to waste, so we'll make use of it. Go to |Terminal| and enter the following commands::
$ home
$ run early-hack-template.script -t 3
Reaching a Hacking Level of 50
------------------------------
Once you reach a hacking level of 50, two new important parts of the game open up.
Creating your first program: BruteSSH.exe
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On the left-hand navigation menu you will notice a :code:`Create Programs` tab with a
red notification icon. This indicates that there are programs available to be created.
Click on that tab (or use |Keyboard shortcut| Alt + p) and you'll see a
list of all the programs you can currently create. Hovering over a program will give a
brief description of its function. Simply click on a program to start creating it.
Right now, the program we want to create is :code:`BruteSSH.exe`. This program is used
to open up SSH ports on servers. This will allow you to hack more servers,
as many servers in the game require a certain number of opened ports in order for
:code:`NUKE.exe` to gain root access.
When you are creating a program, you cannot interact with any other part of the game.
Feel free to cancel your work on creating a program at any time, as your progress will
be saved and can be picked back up later. :code:`BruteSSH.exe` takes about
10 minutes to complete.
Optional: Create AutoLink.exe
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On the :code:`Create Programs` page, you will notice another program you can create
called :code:`AutoLink.exe`. If you don't mind waiting another 10-15 minutes, you should
go ahead and create this program. It makes it much less tedious to connect to other servers,
but it's not necessary for progressing.
Joining your first faction: CyberSec
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Shortly after you reached level 50 hacking, you should have received a message that
said this::
Message received from unknown sender:
We've been watching you. Your skills are very impressive. But you're wasting
your talents. If you join us, you can put your skills to good use and change
the world for the better. If you join us, we can unlock your full potential.
But first, you must pass our test. Find and hack our server using the Terminal.
-CyberSec
This message was saved as csec-test.msg onto your home computer.
If you didn't, or if you accidentally closed it, that's okay! Messages get saved onto
your home computer. Enter the following |Terminal| commands to view the message::
$ home
$ cat csec-test.msg
This message is part of the game's main "quest-line". It is a message from the
|CyberSec faction| that is asking you to pass their test.
Passing their test is simple, you just have to find their server and hack it through
the |Terminal|. Their server is called :code:`CSEC`.
To do this, we'll use the :ref:`scan_analyze_terminal_command`
Terminal command, just like we did before::
$ home
$ scan-analyze 2
This will show you the network for all servers that are up to 2 "nodes" away from
your home computer. Remember that the network is randomly generated so it'll look
different for everyone. Here's the relevant part of my :code:`scan-analyze` results::
>iron-gym
--Root Access: NO, Required hacking skill: 100
--Number of open ports required to NUKE: 1
--RAM: 32
---->zer0
------Root Access: NO, Required hacking skill: 75
------Number of open ports required to NUKE: 1
------RAM: 32
---->CSEC
------Root Access: NO, Required hacking skill: 54
------Number of open ports required to NUKE: 1
------RAM: 8
This tells me that I can reach :code:`CSEC` by going through :code:`iron-gym`::
$ connect iron-gym
$ connect CSEC
.. note::
If you created the :code:`AutoLink.exe` program earlier, then there is an easier
method of connecting to :code:`CSEC`. You'll notice that in the :code:`scan-analyze`
results, all of the server hostnames are white and underlined. You can simply
click one of the server hostnames in order to connect to it. So, simply click
:code:`CSEC`!
.. note::
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
from CSEC once you hit 50 hacking, you cannot actually pass their test
until your hacking is high enough to install a backdoor on their server.
After you are connected to the :code:`CSEC` server, you can hack it. Note that this
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|::
$ run BruteSSH.exe
$ run NUKE.exe
$ backdoor
After you successfully install the backdoor, you should receive a faction
invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
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
accept the invitation.
Congrats! You just joined your first faction. Don't worry about doing anything
with this faction yet, we can come back to it later.
Using Additional Servers to Hack Joesguns
-----------------------------------------
Once you have the |BruteSSH| program, you will be able to gain root access
to several additional servers. These servers have more RAM that you can use to
run scripts. We'll use the RAM on these servers to run more scripts that target
:code:`joesguns`.
Copying our Scripts
^^^^^^^^^^^^^^^^^^^
The server's we'll be using to run our scripts are:
* :code:`neo-net`
* :code:`zer0`
* :code:`max-hardware`
* :code:`iron-gym`
All of these servers have 32GB of RAM. You can use the |Terminal| command
:code:`scan-analyze 3` to see for yourself. To copy our hacking scripts onto these servers,
go to |Terminal| and run::
$ home
$ scp early-hack-template.script neo-net
$ scp early-hack-template.script zer0
$ scp early-hack-template.script max-hardware
$ scp early-hack-template.script iron-gym
Since each of these servers has 32GB of RAM, we can run our hacking script with 12 threads
on each server. By now, you should know how to connect to servers. So find and connect to
each of the servers above using the :code:`scan-analyze 3` |Terminal| command. Then, use
following |Terminal| command to run our hacking
script with 12 threads::
$ run early-hack-template.script -t 12
Remember that if you have the |AutoLink| program, you can simply click on the hostname of a server
after running :ref:`scan_analyze_terminal_command` to connect to it.
Profiting from Scripts & Gaining Reputation with CyberSec
---------------------------------------------------------
Now it's time to play the waiting game. It will take some time for your scripts to start
earning money. Remember that most of your scripts are targeting |joesguns|. It will take a
bit for them to :js:func:`grow` and :js:func:`weaken` the server to the appropriate values
before they start hacking it. Once they do, however, the scripts will be very profitable.
.. note::
For reference, in about two hours after starting my first script, my scripts had a
production rate of $20k per second and had earned a total of $70 million.
(You can see these stats on the :code:`Active Scripts` tab).
After another 15 minutes, the production rate had increased to $25k per second
and the scripts had made an additional $55 million.
Your results will vary based on how fast you earned money from crime/working/hacknet nodes,
but this will hopefully give you a good indication of how much the scripts can earn.
In the meantime, we are going to be gaining reputation with the |CyberSec faction|.
Go to the |Factions tab| on the left-hand
navigation menu, and from there select |CyberSec|. In the middle of
the page there should be a button for :code:`Hacking Contracts`.
Click it to start earning reputation for the |CyberSec| faction (as well
as some hacking experience). The higher your hacking level, the more reputation you
will gain. Note that while you are working for a faction, you cannot interact with
the rest of the game in any way. You can cancel your faction work at any time
with no penalty.
Purchasing Upgrades and Augmentations
-------------------------------------
As I mentioned before, within 1-2 hours I had earned over $200 million. Now, it's time
to spend all of this money on some persistent upgrades to help progress!
Upgrading RAM on Home computer
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The most important thing to upgrade right now is the RAM on your home computer. This
will allow you to run more scripts.
To upgrade your RAM, go to the |City tab| and visit the company |Alpha Enterprises|.
There will be an option that says :code:`Purchase additional RAM for Home Computer`.
Click it and follow the dialog box to upgrade your RAM.
I recommend getting your home computer's RAM to *at least* 128GB. Getting it even
higher would be better.
Purchasing your First Augmentations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Once you get ~1000 reputation with the |CyberSec faction|, you can purchase
your first :ref:`Augmentation <gameplay_augmentations>` from them.
To do this, go to the |Factions tab| on the left-hand navigation menu
(|Keyboard shortcut| Alt + f) and select |CyberSec|. There is an button
near the bottom that says :code:`Purchase Augmentations`. This will bring up a
page that displays all of the Augmentations available from |CyberSec|. Some of them
may be locked right now. To unlock these, you will need to earn more
reputation with |CyberSec|.
Augmentations give persistent upgrades in the form of multipliers. These aren't very
powerful early in the game because the multipliers are small. However, the effects
of Augmentations stack multiplicatively **with each other**, so as you continue to install
many Augmentations their effects will increase significantly.
Because of this, I would recommend investing more in RAM upgrades for your home computer rather
than Augmentations early on. Having enough RAM to run many scripts will allow you to make
much more money, and then you can come back later on and get all these Augmentations.
Right now, I suggest purchasing at the very least the :code:`Neurotrainer I` Augmentation from
|CyberSec|. If you have the money to spare, I would also suggest getting :code:`BitWire` and
several levels of the :code:`NeuroFlux Governor` Augmentations. Note that each time
you purchase an Augmentation,
:ref:`the price of purchasing another increases by 90% <gameplay_augmentations_purchasingmultiple>`,
so make sure you buy the most expensive Augmentation first. Don't worry, once you choose to
install Augmentations, their prices will reset back to their original values.
Next Steps
----------
That's the end of the walkthrough portion of this guide! You should continue to explore
what the game has to offer. There's quite a few features that aren't covered or mentioned
in this guide, and even more that get unlocked as you continue to play!
Also, check out the :ref:`netscript` documentation to see what it has to offer. Writing
scripts to perform and automate various tasks is where most of the fun in the game comes
from (in my opinion)!
The following are a few things you may want to consider doing in the near future.
Installing Augmentations (and Resetting)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you've purchased any :ref:`gameplay_augmentations`, you'll need to install them before you
actually gain their effects. Installing Augmentations is the game's "soft-reset" or "prestige"
mechanic. You can :ref:`read more details about it here <gameplay_augmentations_installing>`.
To install your Augmentations, click the |Augmentations tab| on the left-hand navigation
menu (|Keyboard shortcut| Alt + a). You will see a list of all of the Augmentations
you have purchased. Below that, you will see a button that says :code:`Install Augmentations`.
Be warned, after clicking this there is no way to undo it (unless you load an earlier save).
Automating the Script Startup Process
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Whenever you install Augmentations, all of your scripts are killed and you'll have to
re-run them. Doing this every time you install Augmentations would be very tedious and annoying,
so you should write a script to automate the process. Here's a simple example for a
startup script. Feel free to adjust it to your liking.
.. code:: javascript
// Array of all servers that don't need any ports opened
// to gain root access. These have 16 GB of RAM
var servers0Port = ["foodnstuff",
"sigma-cosmetics",
"joesguns",
"nectar-net",
"hong-fang-tea",
"harakiri-sushi"];
// Array of all servers that only need 1 port opened
// to gain root access. These have 32 GB of RAM
var servers1Port = ["neo-net",
"zer0",
"max-hardware",
"iron-gym"];
// Copy our scripts onto each server that requires 0 ports
// to gain root access. Then use nuke() to gain admin access and
// run the scripts.
for (var i = 0; i < servers0Port.length; ++i) {
var serv = servers0Port[i];
scp("early-hack-template.script", serv);
nuke(serv);
exec("early-hack-template.script", serv, 6);
}
// Wait until we acquire the "BruteSSH.exe" program
while (!fileExists("BruteSSH.exe")) {
sleep(60000);
}
// Copy our scripts onto each server that requires 1 port
// to gain root access. Then use brutessh() and nuke()
// to gain admin access and run the scripts.
for (var i = 0; i < servers1Port.length; ++i) {
var serv = servers1Port[i];
scp("early-hack-template.script", serv);
brutessh(serv);
nuke(serv);
exec("early-hack-template.script", serv, 12);
}
Random Tips
-----------
* Early on in the game, it's better to spend your money on upgrading RAM and purchasing
new servers rather than spending it on Augmentations
* The more money available on a server, the more effective the :js:func:`hack` and
:js:func:`grow` Netscript functions will be. This is because both of these functions
use percentages rather than flat values. :js:func:`hack` steals a percentage of a server's
total available money, and :js:func:`grow` increases a server's money by X%.
* There is a limit to how much money can exist on a server. This value is different for each
server. The :js:func:`getServerMaxMoney` function will tell you this maximum value.
* At this stage in the game, your combat stats (strength, defense, etc.) are not nearly
as useful as your hacking stat. Do not invest too much time or money into gaining combat
stat exp.
.. Substitution definitions
.. |Alpha Enterprises| replace:: :code:`Alpha Enterprises`
.. |Augmentations tab| replace:: :code:`Augmentations` tab
.. |AutoLink| replace:: :code:`AutoLink.exe`
.. |BruteSSH| replace:: :code:`BruteSSH.exe`
.. |City tab| replace:: :code:`City` tab
.. |CyberSec| replace:: :code:`CyberSec`
.. |CyberSec faction| replace:: :code:`CyberSec` :ref:`faction <gameplay_factions>`
.. |Factions tab| replace:: :code:`Factions` tab
.. |Keyboard shortcut| replace:: :ref:`Keyboard shortcut <shortcuts>`
.. |NUKE| replace:: :code:`NUKE.exe`
.. |Terminal| replace:: :code:`Terminal`
.. |foodnstuff| replace:: :code:`foodnstuff`
.. |harakiri-sushi| replace:: :code:`harakiri-sushi`
.. |hong-fang-tea| replace:: :code:`hong-fang-tea`
.. |joesguns| replace:: :code:`joesguns`
.. |nectar-net| replace:: :code:`nectar-net`
.. |sigma-cosmetics| replace:: :code:`sigma-cosmetics`

View File

@@ -0,0 +1,488 @@
What BitNode should I do?
=========================
.. warning:: This page contains spoilers regarding the game's story/plot-line.
After destroying their first :ref:`BitNode <gameplay_bitnodes>`, many players
wonder which BitNode they should tackle next. This guide hopefully helps answer
that question.
Overview of each BitNode
------------------------
BitNode-1: Source Genesis
^^^^^^^^^^^^^^^^^^^^^^^^^
Description
The first BitNode created by the Enders to imprison the minds of humans. It became
the prototype and testing-grounds for all of the BitNodes that followed.
This is the first BitNode that you play through. It has no special
modifications or mechanics.
Source-File
:Max Level: 3
This Source-File lets the player start with 32GB of RAM on his/her home computer when
entering a new BitNode, and also increases all of the player's multipliers by:
* Level 1: 16%
* Level 2: 24%
* Level 3: 28%
Difficulty
The easiest BitNode
BitNode-2: Rise of the Underworld
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
Organized crime groups quickly filled the void of power left behind from the collapse of
Western government in the 2050s. As society and civlization broke down, people quickly
succumbed to the innate human impulse of evil and savagery. The organized crime
factions quickly rose to the top of the modern world.
In this BitNode:
* Your hacking level is reduced by 20%
* The growth rate and maximum amount of money available on servers are significantly decreased
* The amount of money gained from crimes and Infiltration is tripled
* Certain Factions (Slum Snakes, Tetrads, The Syndicate, The Dark Army, Speakers for the Dead,
NiteSec, The Black Hand) give the player the ability to form and manage their own gangs. These gangs
will earn the player money and reputation with the corresponding Faction
* Every Augmentation in the game will be available through the Factions listed above
* For every Faction NOT listed above, reputation gains are halved
* You will no longer gain passive reputation with Factions
Source-File
:Max Level: 3
This Source-File allows you to form gangs in other BitNodes once your karma decreases to a certain value.
It also increases the player's crime success rate, crime money, and charisma multipliers by:
* Level 1: 24%
* Level 2: 36%
* Level 3: 42%
Difficulty
Fairly easy, as hacking is still very profitable and the costs of various purchases/upgrades
is not increased. The gang mechanic may seem strange as its very different from anything
else, but it can be very powerful once you get the hang of it.
BitNode-3: Corporatocracy
^^^^^^^^^^^^^^^^^^^^^^^^^
Description
Our greatest illusion is that a healthy society can revolve around a
single-minded pursuit of wealth.
Sometime in the early 21st century economic and political globalization turned
the world into a corporatocracy, and it never looked back. Now, the privileged
elite will happily bankrupt their own countrymen, decimate their own community,
and evict their neighbors from houses in their desperate bid to increase their wealth.
In this BitNode you can create and manage your own corporation. Running a successful corporation
has the potential of generating massive profits. All other forms of income are reduced by 75%. Furthermore:
* The price and reputation cost of all Augmentations is tripled
* The starting and maximum amount of money on servers is reduced by 75%
* Server growth rate is reduced by 80%
* You now only need 75 favour with a faction in order to donate to it, rather than 150
Source-File
:Max Level: 3
This Source-File lets you create corporations on other BitNodes (although
some BitNodes will disable this mechanic). This Source-File also increases your
charisma and company salary multipliers by:
* Level 1: 8%
* Level 2: 12%
* Level 3: 14%
Difficulty
Somewhat-steep learning curve as you learn how to use and manage Corporations. Afterwards,
however, the BitNode is easy as Corporations can be very profitable.
BitNode-4: The Singularity
^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
The Singularity has arrived. The human race is gone, replaced by artificially superintelligent
beings that are more machine than man.
In this BitNode, progressing is significantly harder:
* Experience gain rates for all stats are reduced.
* Most methods of earning money will now give significantly less.
In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions.
These functions allow you to control most aspects of the game through scripts, including
working for factions/companies, purchasing/installing Augmentations, and creating programs.
Source-File
:Max Level: 3
This Source-File lets you access and use the Singularity Functions in other BitNodes.
Each level of this Source-File will open up more Singularity Functions that you can use.
Difficulty:
Depending on what Source-Files you have unlocked before attempting this BitNode,
it can range from easy to moderate.
BitNode-5: Artificial Intelligence
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
They said it couldn't be done. They said the human brain,
along with its consciousness and intelligence, couldn't be replicated. They said the complexity
of the brain results from unpredictable, nonlinear interactions that couldn't be modeled
by 1's and 0's. They were wrong.
In this BitNode:
* The base security level of servers is doubled
* The starting money on servers is halved, but the maximum money remains the same
* Most methods of earning money now give significantly less
* Infiltration gives 50% more reputation and money
* Corporations have 50% lower valuations and are therefore less profitable
* Augmentations are more expensive
* Hacking experience gain rates are reduced
Source-File
:Max Level: 3
This Source-File grants you a special new stat called Intelligence.
Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However
gaining Intelligence experience is much slower than other stats, and it is also hidden (you won't know
when you gain experience and how much). Higher Intelligence levels will boost your production for many actions
in the game.
In addition, this Source-File will unlock the :js:func:`getBitNodeMultipliers()` Netscript function,
and will also raise all of your hacking-related multipliers by:
* Level 1: 8%
* Level 2: 12%
* Level 3: 14%
Difficulty
Depending on what Source-Files you have unlocked before attempting this BitNode, it
can range from easy to moderate.
BitNode-6: Bladeburners
^^^^^^^^^^^^^^^^^^^^^^^
Description
In the middle of the 21st century, OmniTek Incorporated began designing and manufacturing advanced synthetic
androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation
of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was
the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent
than the humans that had created them.
In this BitNode you will be able to access the Bladeburner Division at the NSA, which provides
a new mechanic for progression. Furthermore:
* Hacking and Hacknet Nodes will be less profitable
* Your hacking level is reduced by 65%
* Hacking experience gain from scripts is reduced by 75%
* Corporations have 80% lower valuations and are therefore less profitable
* Working for companies is 50% less profitable
* Crimes and Infiltration are 25% less profitable
Source-File
:Max Level: 3
This Source-File allows you to access the NSA's Bladeburner Division in other
BitNodes. In addition, this Source-File will raise both the level and experience
gain rate of all your combat stats by:
* Level 1: 8%
* Level 2: 12%
* Level 3: 14%
Difficulty
Initially difficult due to the fact that hacking is no longer profitable and you have
to learn a new mechanic. After you get the hang of the Bladeburner mechanic, however,
it becomes moderately easy.
BitNode-7: Bladeburners 2079
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
In the middle of the 21st century, you were doing cutting-edge work at OmniTek Incorporated
as part of the AI design team for advanced synthetic androids, or Synthoids for short. You helped
achieve a major technological breakthrough in the sixth generation of the company's Synthoid
design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was the first
sentient AI ever created. This resulted in Synthoid models that were stronger, faster,
and more intelligent than the humans that had created them.
In this BitNode you will be able to access the Bladeburner API, which allows you to access
Bladeburner functionality through Netscript. Furthermore:
* The rank you gain from Bladeburner contracts/operations is reduced by 40%
* Bladeburner skills cost twice as many skill points
* Augmentations are 3x more expensive
* Hacking and Hacknet Nodes will be significantly less profitable
* Your hacking level is reduced by 65%
* Hacking experience gain from scripts is reduced by 75%
* Corporations have 80% lower valuations and are therefore less profitable
* Working for companies is 50% less profitable
* Crimes and Infiltration are 25% less profitable
Source-File
:Max Level: 3
This Source-File allows you to access the Bladeburner Netscript API in other
BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:
* Level 1: 8%
* Level 2: 12%
* Level 3: 14%
Difficulty
Slightly more difficult than BitNode-6. However, you will be able to automate more
aspects of the Bladeburner feature, which means it will be more passive.
BitNode-8: Ghost of Wall Street
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.
In this BitNode:
* You start with $250 million
* The only way to earn money is by trading on the stock market
* You start with a WSE membership and access to the TIX API
* You are able to short stocks and place different types of orders (limit/stop)
* You can immediately donate to factions to gain reputation
Source-File
:Max Level: 3
This Source-File grants the following benefits:
* Level 1: Permanent access to WSE and TIX API
* Level 2: Ability to short stocks in other BitNodes
* Level 3: Ability to use limit/stop orders in other BitNodes
This Source-File also increases your hacking growth multipliers by:
* Level 1: 12%
* Level 2: 18%
* Level 3: 21%
Difficulty
Very difficult until you unlock the Four Sigma (4S) Market Data API. After you
unlock the API however, it becomes moderately easy.
BitNode-9: Hacktocracy
^^^^^^^^^^^^^^^^^^^^^^
Description
When Fulcrum Technologies released their open-source Linux distro Chapeau, it quickly
became the OS of choice for the underground hacking community. Chapeau became especially
notorious for powering the Hacknet, a global, decentralized network used for nefarious
purposes. Fulcrum quickly abandoned the project and dissociated themselves from it.
This BitNode unlocks the Hacknet Server, an upgraded version of the Hacknet Node. Hacknet Servers generate
hashes, which can be spent on a variety of different upgrades.
In this BitNode:
* Your stats are significantly decreased
* You cannnot purchase additional servers
* Hacking is significantly less profitable
Source-File
:Max Level: 3
This Source-File grants the following benefits:
* Level 1: Permanently unlocks the Hacknet Server in other BitNodes
* Level 2: You start with 128GB of RAM on your home computer 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
when installing Augmentations.)
Difficulty
Hard
BitNode-10: Digital Carbon
^^^^^^^^^^^^^^^^^^^^^^^^^^
Description
In 2084, VitaLife unveiled to the world the Persona Core, a technology that allowed people
to digitize their consciousness. Their consciousness could then be transferred into Synthoids
or other bodies by trasmitting the digitized data. Human bodies became nothing more than 'sleeves'
for the human consciousness. Mankind had finally achieved immortality - at least for those
that could afford it.
This BitNode unlocks Sleeve technology. Sleeve technology allows you to:
1. Re-sleeve: Purchase and transfer your consciousness into a new body
2. Duplicate Sleeves: Duplicate your consciousness into Synthoids, allowing you to perform different tasks synchronously
In this BitNode:
* Your stats are significantly decreased
* 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
* Augmentations are 5x as expensive and require twice as much reputation
Source-File
:Max Level: 3
This Source-File unlocks Sleeve technology in other BitNodes.
Each level of this Source-File also grants you a Duplicate Sleeve.
Difficulty
Hard
BitNode-11: The Big Crash
^^^^^^^^^^^^^^^^^^^^^^^^^
Description
The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period
of disorder that eventually lead to the governmental reformation of many global superpowers, most notably
the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophe hit.
In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers
were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as
governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.
In this BitNode:
* Your hacking stat and experience gain are halved
* The starting and maximum amount of money available on servers is significantly decreased
* The growth rate of servers is significantly reduced
* Weakening a server is twice as effective
* Company wages are decreased by 50%
* Corporation valuations are 99% lower and are therefore significantly less profitable
* Hacknet Node production is significantly decreased
* Crime and Infiltration are more lucrative
* Augmentations are twice as expensive
Source-File
:Max Level: 3
Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will
upgrade its level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH
the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain).
This Source-File also increases the player's company salary and reputation gain multipliers by:
* Level 1: 32%
* Level 2: 48%
* Level 3: 56%
Difficulty
Hard
BitNode-12: The Recursion
^^^^^^^^^^^^^^^^^^^^^^^^^
Description
Every time this BitNode is destroyed, it becomes slightly harder.
Source-File
:Max Level: Infinity
Each level of Source-File 12 will let you start with Neuroflux Governor
equal to the level of this Source-File.
This BitNode is meant to be done passively or when waiting for new content.
Difficulty
Initially very easy, but then it (obviously) becomes harder as you continue to do it.
Recommended BitNodes
--------------------
As a player, you are not forced to tackle the BitNodes in any particular order. You are
free to choose whichever ones you want. The "best" order can vary between players,
depending on what you like to do any what kind of player you are. In general, here
are the recommended BitNodes for different things:
For fast progression
^^^^^^^^^^^^^^^^^^^^
.. note:: This does not recommend the absolute fastest path, as I don't know what
exactly the fastest path is. But it does recommend the BitNodes that are
commonly considered to be optimal by players.
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.
2. 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
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.
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
let you automate significantly more aspects of the game.
4. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
has high profit potential.
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).
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.
.. todo:: To be continued as more BitNodes get added
For the strongest Source-Files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note that the strongest Source-Files are typically rewarded by the hardest BitNodes.
The strongest Source-File is that from **BitNode-1: Source Genesis**, as it raises
all multipliers by a significant amount.
Similarly, the Source-File from **BitNode-12: The Recursion** is also very strong
because it raises all multipliers. Each level of Source-File 12 is fairly weak,
but its effectiveness gets better over time since the effects of Source-Files and
Augmentations are multiplicative with each other.
The Source-File from **BitNode-9: Hacktocracy** is good because it unlocks the Hacknet
Server mechanic. The Hacknet Server mechanic causes Hacknet Nodes to produce a new
currency called *hashes*, rather than money. *Hashes* can be spent on powerful upgrades
that benefit your hacking, Corporation, Bladeburner, etc.
The Duplicate Sleeves granted by the Source-File from **BitNode-10: Digital Carbon**
are strong, but only after you have several of them and have spent some time/money upgrading
them.
For more scripting/hacking
^^^^^^^^^^^^^^^^^^^^^^^^^^
**BitNode-4: The Singularity** unlocks the :ref:`netscript_singularityfunctions`, which
can be used to automate many different aspects of the game, including working for factions/companies,
purchasing & installing Augmentations, and creating programs
**BitNode-6** and **BitNode-7** unlock Bladeburner and its corresponding
:ref:`Netscript API <netscript_bladeburnerapi>`. This allows you to automate an entire
new mechanic.
**BitNode-2: Rise of the Underworld** also unlocks a new mechanic and Netscript API for automating
it (the Gang mechanic). However, it is not as interesting as Bladeburner (in my opinion)
**BitNode-9: Hacktocracy** unlocks the Hacknet Server mechanic and several new
functions in the :ref:`Hacknet Node API <netscript_hacknetnodeapi>` for using it.
For new mechanics
^^^^^^^^^^^^^^^^^
**BitNode-2: Rise of the Underworld** unlocks a new mechanic in which you can
manage a gang. Gangs earn you money and can be very profitable once they get large
and powerful. The biggest benefit of gangs, however, is that they make all
Augmentations available to you through their corresponding faction.
**BitNode-3: Corporatocracy** unlocks a new mechanic in which you can manage a
corporation. You can earn money through Corporations by selling your stocks, or by
configuring your corporation to pay dividends to shareholders. If your Corporation
gets big enough, it can also bribe factions in exchange for faction reputation.
**BitNode-6: Bladeburners** unlocks a new mechanic that centers around combat rather
than hacking. The main benefit of the Bladeburner mechanic is that it offers a new
method of destroying a BitNode.
**BitNode-9: Hacktocracy** unlocks the Hacknet Server, which is an upgraded version of a
Hacknet Node. The Hacknet Server generates a computational unit called a *hash*. *Hashes*
can be spent on a variety of different upgrades that can benefit your hacking,
Corporation, Bladeburner progress, and more. It transforms the Hacknet Node from a
simple money-generator to a more interesting mechanic.
**BitNode-10: Digital Carbon** unlocks two new mechanics: Re-Sleeving and
Duplicate Sleeves.
For a Challenge
^^^^^^^^^^^^^^^
In general, the higher BitNodes are more difficult than the lower ones.
**BitNode-12: The Recursion** is an obvious exception as it gets progressively harder.
**BitNode-8: Ghost of Wall Street** provides a unique challenge as the only method
of earning money in that BitNode is through trading at the stock market.

View File

@@ -5,8 +5,9 @@
Welcome to Bitburner's documentation!
=====================================
Bitburner is a cyberpunk-themed `incremental game <https://en.wikipedia.org/wiki/Incremental_game>`_ that is currently in the
early beta stage of development. The game `can be played here <https://danielyxie.github.io/bitburner/>`_.
Bitburner is a programming-based `incremental game <https://en.wikipedia.org/wiki/Incremental_game>`_
that revolves around hacking and cyberpunk themes. The game is currently in the
early beta stage of development. It `can be played here <https://danielyxie.github.io/bitburner/>`_.
What is Bitburner?
------------------
@@ -26,6 +27,7 @@ secrets that you've been searching for.
Script Editors <scripteditors>
Game Frozen or Stuck? <gamefrozen>
Guides & Tips <guidesandtips>
Tools & Resources <toolsandresources>
Changelog <changelog>
Donate <https://paypal.me/danielyxie>

View File

@@ -5,7 +5,7 @@ Netscript
Netscript is the programming language used in the world of Bitburner.
When you write scripts in Bitburner, they are written in the Netscript language.
Netscript is simply a subset of `JavaScript <https://developer.mozilla.org/en-US/docs/Web/JavaScript>`_,.
Netscript is simply a subset of `JavaScript <https://developer.mozilla.org/en-US/docs/Web/JavaScript>`_.
This means that Netscript's syntax is
identical to that of JavaScript, but it does not implement some of the features
that JavaScript has.
@@ -29,4 +29,6 @@ to reach out to the developer!
Bladeburner API <netscript/netscriptbladeburnerapi>
Gang API <netscript/netscriptgangapi>
Coding Contract API <netscript/netscriptcodingcontractapi>
Sleeve API <netscript/netscriptsleeveapi>
Formulas API <netscript/netscriptformulasapi>
Miscellaneous <netscript/netscriptmisc>

View File

@@ -0,0 +1,25 @@
getBitNodeMultipliers() Netscript Function
==========================================
.. js:function:: getBitNodeMultipliers()
:RAM cost: 4 GB
Returns an object containing the current BitNode multipliers. This function
requires Source-File 5 in order 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. 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.
Example::
mults = getBitNodeMultipliers();
print(mults.ServerMaxMoney);
print(mults.HackExpGain);

View File

@@ -0,0 +1,40 @@
getServer() Netscript Function
==========================================
.. js:function:: getServer([hostname])
:RAM cost: 4 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
}

View File

@@ -0,0 +1,17 @@
brutessh() Netscript Function
=============================
.. js:function:: brutessh(hostname)
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
Runs the BruteSSH.exe program on the target server. BruteSSH.exe must exist
on your home computer.
Examples:
.. code-block:: javascript
brutessh("foodnstuff");

View File

@@ -0,0 +1,16 @@
clear() Netscript Function
==========================
.. js:function:: clear(portOrFilename)
: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.
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 ``portOrFilename`` argument is a string, then it specifies the name
of a text file (.txt) and will delete all data from that text file.

View File

@@ -0,0 +1,17 @@
clearLog() Netscript Function
=============================
.. js:function:: clearLog()
:RAM cost: 0 GB
Clears the script's logs. Useful when making monitoring scripts.
Examples:
.. code-block:: javascript
while(true) {
clearLog();
print(getServerMoneyAvailable('foodnstuff'));
}

View File

@@ -0,0 +1,14 @@
deleteServer() Netscript Function
=================================
.. js:function:: deleteServer(hostname)
:RAM cost: 2.25 GB
:param string hostname: Hostname of the server to delete.
:returns: ``true`` if successful, ``false`` otherwise.
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 string. This function
will not delete a server that still has scripts running on it.

View File

@@ -0,0 +1,17 @@
disableLog() Netscript Function
===============================
.. js:function:: disableLog(functionName)
: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
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

View File

@@ -0,0 +1,12 @@
enableLog() Netscript Function
==============================
.. js:function:: enableLog(functionName)
:RAM cost: 0 GB
:param string functionName: Name of function for which to enable logging.
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')``

View File

@@ -0,0 +1,41 @@
exec() Netscript Function
=========================
.. js:function:: exec(script, hostname[, numThreads=1[, args...]])
:RAM cost: 1.3 GB
:param string script: Filename of script to execute.
: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.
Run a script as a separate process on a specified server. This is similar to
the :doc:`run<run>` function except that it can be used to run a script on any
server, instead of just the current server.
.. warning:: Running this function with a ``numThreads`` argument of 0 will return 0 without
running the script. However, running this function with a negative *numThreads*
argument will cause a runtime error.
The simplest way to use the :doc:`exec<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");
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);
This last example will try to run the script ``foo.script`` on the
``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");

View File

@@ -0,0 +1,8 @@
exit() Netscript Function
=========================
.. js:function:: exit()
:RAM cost: 0 GB
Terminates the current script immediately.

View File

@@ -0,0 +1,29 @@
fileExists() Netscript Function
===============================
.. js:function:: fileExists(filename[, hostname])
:RAM cost: 0.1 GB
:param string filename: Filename of file to check.
:param string hostname:
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.
The filename for scripts is case-sensitive, but for other types of files it
is not. For example, ``fileExists("brutessh.exe")`` will work fine, even
though the actual program is named ``BruteSSH.exe``.
If the ``hostname`` argument is omitted, then the function will search
through the server running the script that calls this function for the file.
Examples:
.. code-block:: javascript
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.

View File

@@ -0,0 +1,40 @@
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.
The flag definition is an array of pairs of values, the first value is the
name of the flag, 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"}
[home ~/]> run example.script --delay 3000
{"_":[],"server":"foodnstuff","delay":3000}
[home ~/]> run example.script --delay 3000 --server harakiri-sushi
{"_":[],"delay":3000,"server":"harakiri-sushi"}
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world
{"_":["hello","world"],"delay":3000,"server":"harakiri-sushi"}
[home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b
{"_":["hello","world"],"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}
[home ~/]> run example.script --help
{"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}

View File

@@ -0,0 +1,18 @@
ftpcrack() Netscript Function
=============================
.. js:function:: ftpcrack(hostname)
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
Runs the ``FTPCrack.exe`` program on the target server. ``FTPCrack.exe``
must exist on your home computer.
Examples:
.. code-block:: javascript
ftpcrack("foodnstuff");

View File

@@ -0,0 +1,13 @@
getFavorToDonate() Netscript Function
=====================================
.. js:function:: getFavorToDonate()
:RAM cost: 0.1 GB
:returns: Amount of faction favor required to unlock donation.
Example:
.. code-block:: javascript
getFavorToDonate() // returns: 150

View File

@@ -0,0 +1,24 @@
getGrowTime() Netscript Function
================================
.. js:function:: getGrowTime(hostname[, hackLvl=current level])
:RAM cost: 0.05 GB
:param string hostname: Hostname of target server.
:param number hackLvl: Optional hacking level for the calculation. Defaults
to player's current hacking level.
:returns: seconds it takes to execute :doc:`grow<grow>` on that server.
The function takes in an optional ``hackLvl`` parameter that can be
specified to see what the grow time would be at different hacking levels.
Example:
.. code-block:: javascript
getGrowTime("foodnstuff"); // returns: 53.4
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
return ``Infinity``.

View File

@@ -0,0 +1,22 @@
getHackTime() Netscript Function
================================
.. js:function:: getHackTime(hostname[, hackLvl=current level])
:RAM cost: 0.05 GB
:param string hostname: Hostname of target server.
:param number hackLvl: Optional hacking level for the calculation. Defaults
to player's current hacking level.
:returns: seconds it takes to execute :doc:`hack<hack>` on that server.
The function takes in an optional ``hackLvl`` parameter that can be
specified to see what the hack time would be at different hacking levels.
Example:
.. code-block:: javascript
getHackTime("foodnstuff"); // returns: 53.4
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
return :code:`Infinity`.

View File

@@ -0,0 +1,13 @@
getHackingLevel() Netscript Function
====================================
.. js:function:: getHackingLevel()
:RAM cost: 0.05 GB
:returns: The player's current hacking level.
Example:
.. code-block:: javascript
getHackingLevel(); // returns: 124

View File

@@ -0,0 +1,26 @@
getHackingMultipliers() Netscript Function
==========================================
.. js:function:: getHackingMultipliers()
: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%).
Structure::
{
chance: Player's hacking chance multiplier,
speed: Player's hacking speed multiplier,
money: Player's hacking money stolen multiplier,
growth: Player's hacking growth multiplier
}
Example:
.. code-block:: javascript
mults = getHackingMultipliers();
print(mults.chance);
print(mults.growth);

View File

@@ -0,0 +1,27 @@
getHacknetMultipliers() Netscript Function
==========================================
.. js:function:: getHacknetMultipliers()
: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%).
Structure::
{
production: Player's hacknet production multiplier,
purchaseCost: Player's hacknet purchase cost multiplier,
ramCost: Player's hacknet ram cost multiplier,
coreCost: Player's hacknet core cost multiplier,
levelCost: Player's hacknet level cost multiplier
}
Example:
.. code-block:: javascript
mults = getHacknetMultipliers();
print(mults.production);
print(mults.purchaseCost);

View File

@@ -0,0 +1,14 @@
getHostname() Netscript Function
================================
.. js:function:: getHostname()
:RAM cost: 0.05 GB
:returns: Hostname of the server this script is running on.
Example:
.. code-block:: javascript
getHostname(); // returns: "foodnstuff"

View File

@@ -0,0 +1,11 @@
getPortHandle() Netscript Function
==================================
.. js:function:: getPortHandle(port)
:RAM cost: 10 GB
: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`.

View File

@@ -0,0 +1,15 @@
getPurchasedServerCost() Netscript Function
===========================================
.. js:function:: getPurchasedServerCost(ram)
: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)
:returns: Cost to purchase a server with the specified amount of ``ram``.
Example:
.. code-block:: javascript
getPurchasedServerCost(8192); // returns: 450560000

View File

@@ -0,0 +1,13 @@
getPurchasedServerLimit() Netscript Function
============================================
.. js:function:: getPurchasedServerLimit()
:RAM cost: 0.05 GB
:returns: The maximum number of servers you can purchase.
Example:
.. code-block:: javascript
getPurchasedServerLimit() // returns: 25

View File

@@ -0,0 +1,13 @@
getPurchasedServerMaxRam() Netscript Function
=============================================
.. js:function:: getPurchasedServerMaxRam()
:RAM cost: 0.05 GB
:returns: The maximum RAM that a purchased server can have.
Example:
.. code-block:: javascript
getPurchasedServerMaxRam(); // returns: 1048576

View File

@@ -0,0 +1,13 @@
getPurchasedServers() Netscript Function
========================================
.. js:function:: getPurchasedServers()
:RAM cost: 2.25 GB
:returns: String array of hostnames of all of the servers you have purchased.
Example:
.. code-block:: javascript
getPurchasedServers(); // returns: ['grow-server-0', 'grow-server-1', 'weaken-server-0']

View File

@@ -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 to the script.
: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"

View File

@@ -0,0 +1,18 @@
getScriptExpGain() Netscript Function
=====================================
.. js:function:: getScriptExpGain([scriptname[, hostname[, args...]]])
: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.
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.

View File

@@ -0,0 +1,19 @@
getScriptIncome() Netscript Function
====================================
.. js:function:: getScriptIncome([scriptname[, hostname/ip[, [args...]]])
:RAM cost: 0.1 GB
: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
:returns: Amount of income the specified script generates while online.
If called with no arguments this function will return an array of two
values. The first value is the total income ($ / second) of all of your
active scripts (scripts that are currently running on any server). The
second value is the total income ($ / second) that you've earned from
scripts since you last installed Augmentations.
.. note:: A script is uniquely identified by both its name and its
arguments.

View File

@@ -0,0 +1,33 @@
getScriptLogs() Netscript Function
==================================
.. js:function:: getScriptLogs([filename[, hostname=current hostname[, args...]]])
:RAM cost: 0 GB
:param string filename: Optional. Filename of script to get logs from.
:param string hostname: Optional. Hostname of the server running the script.
:param args...: Arguments to identify which scripts to get logs for
:returns: Array of string, each line being a logged line. Chronological.
.. note:: There is a maximum number of lines that a script stores in its logs.
This is configurable in the game's options.
If the function is called with no arguments, it will return the current
script's logs.
Otherwise, the ``filename``, ``hostname``, and ``args...`` arguments can be
used to get the logs from another script. Remember that scripts are uniquely
identified by both their names and arguments.
Example:
.. code-block:: javascript
// Get logs from foo.script on the current server that was run with no args
getScriptLogs("foo.script");
// Get logs from foo.script on the foodnstuff server that was run with no args
getScriptLogs("foo.script", "foodnstuff");
// Get logs from foo.script on the foodnstuff server that was run with the arguments [1, "test"]
getScriptLogs("foo.script", "foodnstuff", 1, "test");

View File

@@ -0,0 +1,13 @@
getScriptName() Netscript Function
==================================
.. js:function:: getScriptName()
:RAM cost: 0 GB
:returns: Current script name.
Example:
.. code-block:: javascript
getScriptName(); // returns: "example.script"

View File

@@ -0,0 +1,16 @@
getScriptRam() Netscript Function
=================================
.. js:function:: getScriptRam(filename[, hostname])
:RAM cost: 0.1 GB
:param string filename: Filename of script.
:param string hostname: Hostname of target server the script is located on.
Default to the server this script is running on.
:returns: Amount of RAM required to run the script, 0 if it does not exist.
Example:
.. code-block:: javascript
getScriptRam("grow.script"); // returns: 1.75

View File

@@ -0,0 +1,28 @@
getServerBaseSecurityLevel() Netscript Function
===============================================
.. js:function:: getServerBaseSecurityLevel(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Base security level of target server.
The base security level is the security level that the server starts out with.
This function isn't particularly useful.
:doc:`getServerSecurityLevel<getServerSecurityLevel>` and
:doc:`getServerMinSecurityLevel<getServerMinSecurityLevel>` are more often
used.
Example:
.. code-block:: javascript
getServerBaseSecurityLevel('foodnstuff'); // returns: 9
.. note:: This is different than :doc:`getServerSecurityLevel<getServerSecurityLevel>`
because :doc:`getServerSecurityLevel<getServerSecurityLevel>` returns the current
security level of a server, which can constantly change due to
:doc:`hack<hack>`, :doc:`grow<grow>`, and :doc:`weaken<weaken>` calls on
that server. The base security level will stay the same until you reset
by installing augmentation(s).

View File

@@ -0,0 +1,19 @@
getServerGrowth() Netscript Function
====================================
.. js:function:: getServerGrowth(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Server growth parameter.
The growth parameter is a number between 1 and 100 affects the percentage by
which the server's money is increased when using the :doc:`grow<grow>`
function. A higher growth parameter will result in a higher percentage
increase.
Example:
.. code-block:: javascript
getServerGrowth('foodnstuff'); // returns: 5

View File

@@ -0,0 +1,14 @@
getServerMaxMoney() Netscript Function
======================================
.. js:function:: getServerMaxMoney(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Maximum amount of money that can be available on a server.
Example:
.. code-block:: javascript
getServerMaxMoney('foodnstuff'); // returns: 4000000

View File

@@ -0,0 +1,15 @@
getServerMaxRam() Netscript Function
====================================
.. js:function:: getServerMaxRam(hostname)
:RAM cost: 0.05 GB
:param string hostname: Hostname of target server.
:returns: Total ram available on that server. In GB.
Example:
.. code-block:: javascript
maxRam = getServerMaxRam("helios"); // returns: 16
print("helios has "+maxRam + "GB");

View File

@@ -0,0 +1,14 @@
getServerMinSecurityLevel() Netscript Function
==============================================
.. js:function:: getServerMinSecurityLevel(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: The minimum security level of the target server.
Example:
.. code-block:: javascript
getServerMinSecurityLevel('foodnstuff'); // returns: 3

View File

@@ -0,0 +1,19 @@
getServerMoneyAvailable() Netscript Function
============================================
.. js:function:: getServerMoneyAvailable(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Money available on that server.
.. note::
Running this function on the home computer will return the player's money.
Example:
.. code-block:: javascript
getServerMoneyAvailable("foodnstuff"); // returns: 120000
getServerMoneyAvailable("home"); // returns: 1000

View File

@@ -0,0 +1,15 @@
getServerNumPortsRequired() Netscript Function
==============================================
.. js:function:: getServerNumPortsRequired(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: The number of open ports required to successfully run NUKE.exe on
the specified server.
Example:
.. code-block:: javascript
getServerNumPortsRequired("unitalife"); // returns: 4

View File

@@ -0,0 +1,23 @@
getServerRam() Netscript Function
=================================
.. js:function:: getServerRam(hostname)
.. warning:: This function is deprecated.
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: An array of 2 number, first number is the total RAM, second the
used RAM.
Returns an array with two elements that gives information about a server's memory (RAM). The first
element in the array is the amount of RAM that the server has total (in GB). The second element in
the array is the amount of RAM that is currently being used on the server (in GB).
Example:
.. code-block:: javascript
res = getServerRam("helios"); // returns: [5, 10]
totalRam = res[0];
ramUsed = res[1];

View File

@@ -0,0 +1,14 @@
getServerRequiredHackingLevel() Netscript Function
==================================================
.. js:function:: getServerRequiredHackingLevel(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: The required hacking level of target server.
Example:
.. code-block:: javascript
getServerRequiredHackingLevel("foodnstuff"); // returns: 5

View File

@@ -0,0 +1,14 @@
getServerSecurityLevel() Netscript Function
===========================================
.. js:function:: getServerSecurityLevel(hostname)
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: The security level of the target server.
Example:
.. code-block:: javascript
getServerSecurityLevel("foodnstuff"); // returns: 3.45

View File

@@ -0,0 +1,15 @@
getServerUsedRam() Netscript Function
=====================================
.. js:function:: getServerUsedRam(hostname)
:RAM cost: 0.05 GB
:param string hostname: Hostname of target server.
:returns: Used ram on that server. In GB.
Example:
.. code-block:: javascript
usedRam = getServerUsedRam("harakiri-sushi"); // returns: 5.6
print("harakiri-sushi uses "+usedRam + "GB");

View File

@@ -0,0 +1,13 @@
getTimeSinceLastAug() Netscript Function
========================================
.. js:function:: getTimeSinceLastAug()
:RAM cost: 0.05 GB
:returns: Milliseconds since you last installed augmentations.
Example:
.. code-block:: javascript
getTimeSinceLastAug(); // returns: 13912400

View File

@@ -0,0 +1,23 @@
getWeakenTime() Netscript Function
==================================
.. js:function:: getWeakenTime(hostname[, hackLvl=current level])
:RAM cost: 0.05 GB
:param string hostname: Hostname of target server.
:param number hackLvl: Optional hacking level for the calculation. Defaults
to player's current hacking level.
:returns: seconds it takes to execute the :doc:`weaken<weaken>` Netscript
function on the target server.
The function takes in an optional *hackLvl* parameter that can be specified
to see what the weaken time would be at different hacking levels.
Example:
.. code-block:: javascript
getWeakenTime("foodnstuff"); // returns: 34.5
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
return :code:`Infinity`.

View File

@@ -0,0 +1,37 @@
grow() Netscript Function
=========================
.. js:function:: grow(hostname[, opts={}])
:RAM cost: 0.15 GB
:param string hostname: Hostname of the target server.
:param object opts: Optional parameters for configuring function behavior. Properties:
* threads (*number*) - Number of threads to use for this function.
Must be less than or equal to the number of threads the script is running with.
* stock (*boolean*) - If true, the function can affect the stock market. See
:ref:`gameplay_stock_market_player_actions_influencing_stock`
:returns: The number by which the money on the server was multiplied for the growth
Increase the amount of money available on a server. The time it takes to
execute depends on your hacking level and the target server's security
level. When :doc:`grow<grow>` completes, the money available on a target
server will be increased by a certain, fixed percentage. This percentage is
determined by the target server's growth rate (which varies between servers)
and security level. Generally, higher-level servers have higher growth
rates. The :doc:`getServerGrowth<getServerGrowth>` function can be used to
obtain a server's growth rate.
Like :doc:`hack<hack>`, :doc:`grow<grow>` can be called on any server, from
any server. The :doc:`grow<grow>` command requires root access to the target
server, but there is no required hacking level to run the command. It also
raises the security level of the target server by 0.004 per thread.
Example:
.. code-block:: javascript
while(true) {
grow("foodnstuff");
}

View File

@@ -0,0 +1,23 @@
growthAnalyze() Netscript Function
==================================
.. js:function:: growthAnalyze(hostname, growthAmount)
:RAM cost: 1 GB
:param string hostname: Hostname of server to analyze.
:param number growthAmount: Multiplicative factor by which the server is
grown. Decimal form. Must be >= 1.
:returns: The amount of :doc:`grow<grow>` threads needed to grow the specified
server by the specified amount.
Example:
.. code-block:: javascript
// How many grow threads are needed to double the current money on 'foodnstuff'
growthAnalyze("foodnstuff", 2); // returns: 5124
If this returns 5124, then this means you need to call :doc:`grow<grow>`
5124 times in order to double the money (or once with 5124 threads).
**Warning**: The value returned by this function isn't necessarily a whole number.

View File

@@ -0,0 +1,36 @@
hack() Netscript Function
=========================
.. js:function:: hack(hostname[, opts={}])
:RAM cost: 0.1 GB
:param string hostname: Hostname of the target server.
:param object opts: Optional parameters for configuring function behavior. Properties:
* threads (*number*) - Number of threads to use for this function.
Must be less than or equal to the number of threads the script is running with.
* stock (*boolean*) - If true, the function can affect the stock market. See
:ref:`gameplay_stock_market_player_actions_influencing_stock`
:returns: The amount of money stolen if the hack is successful, and zero otherwise
Function that is used to try and hack servers to steal money and gain
hacking experience. The runtime for this command depends on your hacking
level and the target server's security level. In order to hack a server you
must first gain root access to that server and also have the required
hacking level.
A script can hack a server from anywhere. It does not need to be running on
the same server to hack that server. For example, you can create a script
that hacks the 'foodnstuff' server and run that script on any server in the
game.
A successful :doc:`hack<hack>` on a server will raise that server's security
level by 0.002.
Example:
.. code-block:: javascript
hack("foodnstuff");
hack("10.1.2.3");
hack("foodnstuff", { threads: 5 }); // Only use 5 threads to hack

View File

@@ -0,0 +1,22 @@
hackAnalyzePercent() Netscript Function
=======================================
.. js:function:: hackAnalyzePercent(hostname)
:RAM cost: 1 GB
:param string hostname: Hostname of target server.
:returns: The percentage of money you will steal from the target server with
a single hack.
Returns the percentage of the specified server's money you will steal with a
single hack. This value is returned in percentage form, not decimal.
For example, assume the following returns 1:
.. code-block:: javascript
hackAnalyzePercent("foodnstuff"); // returns: 1
This means that if hack the 'foodnstuff' server, then you will steal 1% of its
total money. If you :doc:`hack<hack>` using N threads, then you will steal N% of its total
money.

View File

@@ -0,0 +1,37 @@
hackAnalyzeThreads() Netscript Function
=======================================
.. js:function:: hackAnalyzeThreads(hostname, hackAmount)
:RAM cost: 1 GB
:param string hostname: Hostname of server to analyze.
:param number hackAmount: Amount of money you want to hack from the server.
:returns: The number of threads needed to :doc:`hack<hack>` the server for
``hackAmount`` money.
This function returns the number of script threads you need when running
the :doc:`hack<hack>` command to steal the specified amount of money from
the target server.
If ``hackAmount`` is less than zero or greater than the amount of money
available on the server, then this function returns -1.
For example, let's say the 'foodnstuff' server has $10m and you run:
.. code-block:: javascript
hackAnalyzeThreads("foodnstuff", 1e6);
If this function returns 50, this means that if your next :doc:`hack<hack>` call
is run on a script with 50 threads, it will steal $1m from the `foodnstuff` server.
.. warning:: The value returned by this function isn't necessarily a whole number.
.. warning:: It is possible for this function to return :code:`Infinity` or :code:`NaN` in
certain uncommon scenarios. This is because in JavaScript:
* :code:`0 / 0 = NaN`
* :code:`N / 0 = Infinity` for 0 < N < Infinity.
For example, if a server has no money available and you want to hack some positive
amount from it, then the function would return :code:`Infinity` because
this would be impossible.

View File

@@ -0,0 +1,16 @@
hackChance() Netscript Function
===============================
.. js:function:: hackChance(hostname)
:RAM cost: 1 GB
:param string hostname: Hostname of target server.
:returns: The chance you have of successfully hacking the target server.
in decimal form.
Example:
.. code-block:: javascript
hackChance("foodnstuff"); // returns: .5
// So 50% chance to hack "foodnstuff"

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