Compare commits

..

235 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
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
654 changed files with 39877 additions and 13084 deletions

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

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`

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

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

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

2
css/grid.min.css vendored

File diff suppressed because one or more lines are too long

View File

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

@@ -17,7 +17,7 @@
}
&.level-2 {
color: #48D1CC;
color: #48d1cc;
}
&.level-3 {

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

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

View File

@@ -17,7 +17,8 @@ body {
p,
pre,
h2,
.text {
.text,
td {
color: var(--my-font-color);
}
@@ -79,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;
@@ -205,14 +228,15 @@ a:visited {
}
.status-text {
display: inline-block;
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 {
@@ -333,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;
}

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +1,2 @@
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],p=0,s=[];p<f.length;p++)i=f[p],u[i]&&s.push(u[i][0]),u[i]=0;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(n[e]=c[e]);for(a&&a(t);s.length;)s.shift()();return r.push.apply(r,l||[]),o()}function o(){for(var n,t=0;t<r.length;t++){for(var o=r[t],e=!0,f=1;f<o.length;f++){var c=o[f];0!==u[c]&&(e=!1)}e&&(r.splice(t--,1),n=i(i.s=o[0]))}return n}var e={},u={1:0},r=[];function i(t){if(e[t])return e[t].exports;var o=e[t]={i:t,l:!1,exports:{}};return n[t].call(o.exports,o,o.exports,i),o.l=!0,o.exports}i.m=n,i.c=e,i.d=function(n,t,o){i.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:o})},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.t=function(n,t){if(1&t&&(n=i(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var e in n)i.d(o,e,function(t){return n[t]}.bind(null,e));return o},i.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(t,"a",t),t},i.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},i.p="";var f=window.webpackJsonp=window.webpackJsonp||[],c=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var a=c;r.push([362,0]),o()}({305:function(n,t,o){},307:function(n,t,o){},309:function(n,t,o){},311:function(n,t,o){},313:function(n,t,o){},315:function(n,t,o){},317:function(n,t,o){},319:function(n,t,o){},321:function(n,t,o){},323:function(n,t,o){},325:function(n,t,o){},327:function(n,t,o){},329:function(n,t,o){},331:function(n,t,o){},333:function(n,t,o){},335:function(n,t,o){},337:function(n,t,o){},339:function(n,t,o){},341:function(n,t,o){},343:function(n,t,o){},345:function(n,t,o){},347:function(n,t,o){},349:function(n,t,o){},351:function(n,t,o){},353:function(n,t,o){},355:function(n,t,o){},357:function(n,t,o){},359:function(n,t,o){},362:function(n,t,o){"use strict";o.r(t);o(361),o(359),o(357),o(355),o(353),o(351),o(349),o(347),o(345),o(343),o(341),o(339),o(337),o(335),o(333),o(331),o(329),o(327),o(325),o(323),o(321),o(319),o(317),o(315),o(313),o(311),o(309),o(307),o(305)}});
!function(n){function t(t){for(var e,i,f=t[0],c=t[1],l=t[2],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

401
dist/engineStyle.css vendored
View File

@@ -26,7 +26,8 @@ body {
p,
pre,
h2,
.text {
.text,
td {
color: var(--my-font-color); }
h1 {
@@ -78,6 +79,26 @@ a:visited {
top: 0;
right: 0; }
#factions-tab {
position: relative; }
#factions-notification {
font-size: 10px;
position: absolute;
/* Position the badge within the relatively positioned button */
top: 0;
right: 0; }
#augmentations-tab {
position: relative; }
#augmentations-notification {
font-size: 10px;
position: absolute;
/* Position the badge within the relatively positioned button */
top: 0;
right: 0; }
.notification-on {
background-color: #fa3e3e;
color: #fff;
@@ -229,13 +250,14 @@ a:visited {
opacity: 0; } }
.status-text {
display: inline-block;
position: fixed;
z-index: 2;
-webkit-animation: status-text 3s 1; }
#status-text-container {
background-color: transparent; }
background-color: transparent;
position: absolute;
top: 0;
left: 50%; }
#status-text {
background-color: transparent;
@@ -332,9 +354,62 @@ a:visited {
.charisma-purple {
color: #a671d1; }
.reputation {
color: #faffdf; }
.smallfont {
font-size: 13px; }
.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; }
/* COLORS */
/* Attributes */
/* Styling for tooltip-style elements */
@@ -408,6 +483,43 @@ a:visited {
.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; }
/* COLORS */
/* Attributes */
/**
@@ -684,18 +796,36 @@ button {
#character-hp-wrapper {
color: #dd3434; }
.character-hp-cell {
color: #dd3434; }
#character-money-wrapper {
color: #ffd700; }
.character-money-cell {
color: #ffd700; }
#character-hack-wrapper {
color: #adff2f; }
.character-hack-cell {
color: #adff2f; }
#character-cha-wrapper {
color: #a671d1; }
.character-cha-cell {
color: #a671d1; }
#character-int-wrapper {
color: #6495ed; }
.character-int-cell {
color: #6495ed; }
.character-combat-cell {
color: #faffdf; }
.character-overview-btn {
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
@@ -897,7 +1027,7 @@ button {
*/
#codemirror-form-wrapper {
height: 80%;
margin: 10px 0px 0px 6px; }
margin: 10px 0 0 6px; }
.CodeMirror {
height: 100%;
@@ -911,10 +1041,10 @@ button {
* Highlight matches
*/
.cm-matchhighlight {
background-color: #8F908A; }
background-color: #8f908a; }
.CodeMirror-selection-highlight-scrollbar {
background-color: #8F908A; }
background-color: #8f908a; }
/**
* Show Invisibles
@@ -922,7 +1052,7 @@ button {
.cm-whitespace::before {
position: absolute;
pointer-events: none;
color: #404F7D; }
color: #404f7d; }
/**
* Vim command display
@@ -1245,8 +1375,7 @@ button {
margin-top: 20px; }
#infiltration-buttons .a-link-button {
display: inline;
width: 25%; }
display: inline; }
/**
* Styling for the Augmentations UI. This is the page that displays all of the
@@ -1286,7 +1415,7 @@ button {
color: yellow; }
.bitnode.level-2 {
color: #48D1CC; }
color: #48d1cc; }
.bitnode.level-3 {
color: blue; }
@@ -2288,7 +2417,7 @@ button {
.sleeve-panel {
display: inline-block;
margin: 0px;
margin: 0;
padding: 2px; }
.sleeve-panel select {
display: block; }
@@ -2307,7 +2436,7 @@ button {
.resleeve-panel {
display: inline-block;
margin: 0px;
margin: 0;
padding: 2px; }
.resleeve-aug-selector {
@@ -2349,7 +2478,7 @@ button {
cursor: pointer; }
.Treant .collapsed .collapse-switch {
background-color: #868DEE; }
background-color: #868dee; }
.Treant > .node img {
border: none;
@@ -2360,7 +2489,7 @@ button {
padding: 4px;
min-width: 60px;
text-align: center;
border: 2px solid #E8E8E3;
border: 2px solid #e8e8e3;
border-radius: 2px;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
font-size: 12px; }
@@ -4137,34 +4266,34 @@ html {
margin-left: 0 !important; }
.m-1 {
margin: .25rem !important; }
margin: 0.25rem !important; }
.mt-1, .my-1 {
margin-top: .25rem !important; }
margin-top: 0.25rem !important; }
.mr-1, .mx-1 {
margin-right: .25rem !important; }
margin-right: 0.25rem !important; }
.mb-1, .my-1 {
margin-bottom: .25rem !important; }
margin-bottom: 0.25rem !important; }
.ml-1, .mx-1 {
margin-left: .25rem !important; }
margin-left: 0.25rem !important; }
.m-2 {
margin: .5rem !important; }
margin: 0.5rem !important; }
.mt-2, .my-2 {
margin-top: .5rem !important; }
margin-top: 0.5rem !important; }
.mr-2, .mx-2 {
margin-right: .5rem !important; }
margin-right: 0.5rem !important; }
.mb-2, .my-2 {
margin-bottom: .5rem !important; }
margin-bottom: 0.5rem !important; }
.ml-2, .mx-2 {
margin-left: .5rem !important; }
margin-left: 0.5rem !important; }
.m-3 {
margin: 1rem !important; }
@@ -4227,34 +4356,34 @@ html {
padding-left: 0 !important; }
.p-1 {
padding: .25rem !important; }
padding: 0.25rem !important; }
.pt-1, .py-1 {
padding-top: .25rem !important; }
padding-top: 0.25rem !important; }
.pr-1, .px-1 {
padding-right: .25rem !important; }
padding-right: 0.25rem !important; }
.pb-1, .py-1 {
padding-bottom: .25rem !important; }
padding-bottom: 0.25rem !important; }
.pl-1, .px-1 {
padding-left: .25rem !important; }
padding-left: 0.25rem !important; }
.p-2 {
padding: .5rem !important; }
padding: 0.5rem !important; }
.pt-2, .py-2 {
padding-top: .5rem !important; }
padding-top: 0.5rem !important; }
.pr-2, .px-2 {
padding-right: .5rem !important; }
padding-right: 0.5rem !important; }
.pb-2, .py-2 {
padding-bottom: .5rem !important; }
padding-bottom: 0.5rem !important; }
.pl-2, .px-2 {
padding-left: .5rem !important; }
padding-left: 0.5rem !important; }
.p-3 {
padding: 1rem !important; }
@@ -4328,25 +4457,25 @@ html {
.ml-sm-0, .mx-sm-0 {
margin-left: 0 !important; }
.m-sm-1 {
margin: .25rem !important; }
margin: 0.25rem !important; }
.mt-sm-1, .my-sm-1 {
margin-top: .25rem !important; }
margin-top: 0.25rem !important; }
.mr-sm-1, .mx-sm-1 {
margin-right: .25rem !important; }
margin-right: 0.25rem !important; }
.mb-sm-1, .my-sm-1 {
margin-bottom: .25rem !important; }
margin-bottom: 0.25rem !important; }
.ml-sm-1, .mx-sm-1 {
margin-left: .25rem !important; }
margin-left: 0.25rem !important; }
.m-sm-2 {
margin: .5rem !important; }
margin: 0.5rem !important; }
.mt-sm-2, .my-sm-2 {
margin-top: .5rem !important; }
margin-top: 0.5rem !important; }
.mr-sm-2, .mx-sm-2 {
margin-right: .5rem !important; }
margin-right: 0.5rem !important; }
.mb-sm-2, .my-sm-2 {
margin-bottom: .5rem !important; }
margin-bottom: 0.5rem !important; }
.ml-sm-2, .mx-sm-2 {
margin-left: .5rem !important; }
margin-left: 0.5rem !important; }
.m-sm-3 {
margin: 1rem !important; }
.mt-sm-3, .my-sm-3 {
@@ -4388,25 +4517,25 @@ html {
.pl-sm-0, .px-sm-0 {
padding-left: 0 !important; }
.p-sm-1 {
padding: .25rem !important; }
padding: 0.25rem !important; }
.pt-sm-1, .py-sm-1 {
padding-top: .25rem !important; }
padding-top: 0.25rem !important; }
.pr-sm-1, .px-sm-1 {
padding-right: .25rem !important; }
padding-right: 0.25rem !important; }
.pb-sm-1, .py-sm-1 {
padding-bottom: .25rem !important; }
padding-bottom: 0.25rem !important; }
.pl-sm-1, .px-sm-1 {
padding-left: .25rem !important; }
padding-left: 0.25rem !important; }
.p-sm-2 {
padding: .5rem !important; }
padding: 0.5rem !important; }
.pt-sm-2, .py-sm-2 {
padding-top: .5rem !important; }
padding-top: 0.5rem !important; }
.pr-sm-2, .px-sm-2 {
padding-right: .5rem !important; }
padding-right: 0.5rem !important; }
.pb-sm-2, .py-sm-2 {
padding-bottom: .5rem !important; }
padding-bottom: 0.5rem !important; }
.pl-sm-2, .px-sm-2 {
padding-left: .5rem !important; }
padding-left: 0.5rem !important; }
.p-sm-3 {
padding: 1rem !important; }
.pt-sm-3, .py-sm-3 {
@@ -4460,25 +4589,25 @@ html {
.ml-md-0, .mx-md-0 {
margin-left: 0 !important; }
.m-md-1 {
margin: .25rem !important; }
margin: 0.25rem !important; }
.mt-md-1, .my-md-1 {
margin-top: .25rem !important; }
margin-top: 0.25rem !important; }
.mr-md-1, .mx-md-1 {
margin-right: .25rem !important; }
margin-right: 0.25rem !important; }
.mb-md-1, .my-md-1 {
margin-bottom: .25rem !important; }
margin-bottom: 0.25rem !important; }
.ml-md-1, .mx-md-1 {
margin-left: .25rem !important; }
margin-left: 0.25rem !important; }
.m-md-2 {
margin: .5rem !important; }
margin: 0.5rem !important; }
.mt-md-2, .my-md-2 {
margin-top: .5rem !important; }
margin-top: 0.5rem !important; }
.mr-md-2, .mx-md-2 {
margin-right: .5rem !important; }
margin-right: 0.5rem !important; }
.mb-md-2, .my-md-2 {
margin-bottom: .5rem !important; }
margin-bottom: 0.5rem !important; }
.ml-md-2, .mx-md-2 {
margin-left: .5rem !important; }
margin-left: 0.5rem !important; }
.m-md-3 {
margin: 1rem !important; }
.mt-md-3, .my-md-3 {
@@ -4520,25 +4649,25 @@ html {
.pl-md-0, .px-md-0 {
padding-left: 0 !important; }
.p-md-1 {
padding: .25rem !important; }
padding: 0.25rem !important; }
.pt-md-1, .py-md-1 {
padding-top: .25rem !important; }
padding-top: 0.25rem !important; }
.pr-md-1, .px-md-1 {
padding-right: .25rem !important; }
padding-right: 0.25rem !important; }
.pb-md-1, .py-md-1 {
padding-bottom: .25rem !important; }
padding-bottom: 0.25rem !important; }
.pl-md-1, .px-md-1 {
padding-left: .25rem !important; }
padding-left: 0.25rem !important; }
.p-md-2 {
padding: .5rem !important; }
padding: 0.5rem !important; }
.pt-md-2, .py-md-2 {
padding-top: .5rem !important; }
padding-top: 0.5rem !important; }
.pr-md-2, .px-md-2 {
padding-right: .5rem !important; }
padding-right: 0.5rem !important; }
.pb-md-2, .py-md-2 {
padding-bottom: .5rem !important; }
padding-bottom: 0.5rem !important; }
.pl-md-2, .px-md-2 {
padding-left: .5rem !important; }
padding-left: 0.5rem !important; }
.p-md-3 {
padding: 1rem !important; }
.pt-md-3, .py-md-3 {
@@ -4592,25 +4721,25 @@ html {
.ml-lg-0, .mx-lg-0 {
margin-left: 0 !important; }
.m-lg-1 {
margin: .25rem !important; }
margin: 0.25rem !important; }
.mt-lg-1, .my-lg-1 {
margin-top: .25rem !important; }
margin-top: 0.25rem !important; }
.mr-lg-1, .mx-lg-1 {
margin-right: .25rem !important; }
margin-right: 0.25rem !important; }
.mb-lg-1, .my-lg-1 {
margin-bottom: .25rem !important; }
margin-bottom: 0.25rem !important; }
.ml-lg-1, .mx-lg-1 {
margin-left: .25rem !important; }
margin-left: 0.25rem !important; }
.m-lg-2 {
margin: .5rem !important; }
margin: 0.5rem !important; }
.mt-lg-2, .my-lg-2 {
margin-top: .5rem !important; }
margin-top: 0.5rem !important; }
.mr-lg-2, .mx-lg-2 {
margin-right: .5rem !important; }
margin-right: 0.5rem !important; }
.mb-lg-2, .my-lg-2 {
margin-bottom: .5rem !important; }
margin-bottom: 0.5rem !important; }
.ml-lg-2, .mx-lg-2 {
margin-left: .5rem !important; }
margin-left: 0.5rem !important; }
.m-lg-3 {
margin: 1rem !important; }
.mt-lg-3, .my-lg-3 {
@@ -4652,25 +4781,25 @@ html {
.pl-lg-0, .px-lg-0 {
padding-left: 0 !important; }
.p-lg-1 {
padding: .25rem !important; }
padding: 0.25rem !important; }
.pt-lg-1, .py-lg-1 {
padding-top: .25rem !important; }
padding-top: 0.25rem !important; }
.pr-lg-1, .px-lg-1 {
padding-right: .25rem !important; }
padding-right: 0.25rem !important; }
.pb-lg-1, .py-lg-1 {
padding-bottom: .25rem !important; }
padding-bottom: 0.25rem !important; }
.pl-lg-1, .px-lg-1 {
padding-left: .25rem !important; }
padding-left: 0.25rem !important; }
.p-lg-2 {
padding: .5rem !important; }
padding: 0.5rem !important; }
.pt-lg-2, .py-lg-2 {
padding-top: .5rem !important; }
padding-top: 0.5rem !important; }
.pr-lg-2, .px-lg-2 {
padding-right: .5rem !important; }
padding-right: 0.5rem !important; }
.pb-lg-2, .py-lg-2 {
padding-bottom: .5rem !important; }
padding-bottom: 0.5rem !important; }
.pl-lg-2, .px-lg-2 {
padding-left: .5rem !important; }
padding-left: 0.5rem !important; }
.p-lg-3 {
padding: 1rem !important; }
.pt-lg-3, .py-lg-3 {
@@ -4724,25 +4853,25 @@ html {
.ml-xl-0, .mx-xl-0 {
margin-left: 0 !important; }
.m-xl-1 {
margin: .25rem !important; }
margin: 0.25rem !important; }
.mt-xl-1, .my-xl-1 {
margin-top: .25rem !important; }
margin-top: 0.25rem !important; }
.mr-xl-1, .mx-xl-1 {
margin-right: .25rem !important; }
margin-right: 0.25rem !important; }
.mb-xl-1, .my-xl-1 {
margin-bottom: .25rem !important; }
margin-bottom: 0.25rem !important; }
.ml-xl-1, .mx-xl-1 {
margin-left: .25rem !important; }
margin-left: 0.25rem !important; }
.m-xl-2 {
margin: .5rem !important; }
margin: 0.5rem !important; }
.mt-xl-2, .my-xl-2 {
margin-top: .5rem !important; }
margin-top: 0.5rem !important; }
.mr-xl-2, .mx-xl-2 {
margin-right: .5rem !important; }
margin-right: 0.5rem !important; }
.mb-xl-2, .my-xl-2 {
margin-bottom: .5rem !important; }
margin-bottom: 0.5rem !important; }
.ml-xl-2, .mx-xl-2 {
margin-left: .5rem !important; }
margin-left: 0.5rem !important; }
.m-xl-3 {
margin: 1rem !important; }
.mt-xl-3, .my-xl-3 {
@@ -4784,25 +4913,25 @@ html {
.pl-xl-0, .px-xl-0 {
padding-left: 0 !important; }
.p-xl-1 {
padding: .25rem !important; }
padding: 0.25rem !important; }
.pt-xl-1, .py-xl-1 {
padding-top: .25rem !important; }
padding-top: 0.25rem !important; }
.pr-xl-1, .px-xl-1 {
padding-right: .25rem !important; }
padding-right: 0.25rem !important; }
.pb-xl-1, .py-xl-1 {
padding-bottom: .25rem !important; }
padding-bottom: 0.25rem !important; }
.pl-xl-1, .px-xl-1 {
padding-left: .25rem !important; }
padding-left: 0.25rem !important; }
.p-xl-2 {
padding: .5rem !important; }
padding: 0.5rem !important; }
.pt-xl-2, .py-xl-2 {
padding-top: .5rem !important; }
padding-top: 0.5rem !important; }
.pr-xl-2, .px-xl-2 {
padding-right: .5rem !important; }
padding-right: 0.5rem !important; }
.pb-xl-2, .py-xl-2 {
padding-bottom: .5rem !important; }
padding-bottom: 0.5rem !important; }
.pl-xl-2, .px-xl-2 {
padding-left: .5rem !important; }
padding-left: 0.5rem !important; }
.p-xl-3 {
padding: 1rem !important; }
.pt-xl-3, .py-xl-3 {
@@ -4851,14 +4980,14 @@ html {
visibility: hidden !important; }
.add-exp-button {
margin-right: 0px; }
margin-right: 0; }
.remove-exp-button {
margin-left: 0px; }
margin-left: 0; }
.exp-input {
margin-right: 0px;
margin-left: 0px;
margin-right: 0;
margin-left: 0;
margin-top: 5px;
margin-bottom: 5px;
padding: 2px 5px; }
@@ -4869,14 +4998,40 @@ html {
vertical-align: middle; }
.touch-right {
margin-right: 0px; }
margin-right: 0; }
.touch-left {
margin-left: 0px; }
margin-left: 0; }
.touch-sides {
margin-left: 0px;
margin-right: 0px; }
margin-left: 0;
margin-right: 0; }
.casino-card {
padding: 10px;
border: solid 1px #808080;
background-color: white;
display: inline-block;
border-radius: 10px;
font-size: 14pt;
text-align: center;
margin: 3px;
font-weight: bold; }
.casino-card .value {
font-size: 15pt;
font-family: sans-serif; }
.casino-card.red {
color: red; }
.casino-card.black {
color: black; }
#milestones-container {
position: fixed;
padding: 6px;
width: 60%; }
/*# sourceMappingURL=engineStyle.css.map*/

84
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

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

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

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

@@ -184,7 +184,7 @@ See :ref:`netscript_tixapi` for more details.
Under the Hood
--------------
Stock prices are updated very ~6 seconds.
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

View File

@@ -148,6 +148,14 @@ has root access, what ports are opened/closed, and also hacking-related informat
such as an estimated chance to successfully hack, an estimate of how much money is
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
^^^
@@ -588,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,6 +3,511 @@
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
-------------------
@@ -30,7 +535,7 @@ v0.47.2 - 7/15/2019
* 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: 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

View File

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

View File

@@ -634,7 +634,7 @@ This tells me that I can reach :code:`CSEC` by going through :code:`iron-gym`::
Make sure you notice the required hacking skill for the :code:`CSEC` server.
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 hack their server.
until your hacking is high enough to install a backdoor on their server.
After you are connected to the :code:`CSEC` server, you can hack it. Note that this
server requires one open port in order to gain root access. We can open the SSH port
@@ -642,10 +642,10 @@ using the :code:`BruteSSH.exe` program we created earlier. In |Terminal|::
$ run BruteSSH.exe
$ run NUKE.exe
$ hack
$ backdoor
Keep hacking the server until you are successful. After you successfully hack it, you should
receive a faction invitation from |CyberSec| shortly afterwards. Accept it. If you accidentally
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.
@@ -860,7 +860,7 @@ Random Tips
.. Substitution definitions
.. |Alpha Enterprises| replace:: :code:`Alpha Enterprises`
.. |Augmentations tab| replace:: :code:`Augmentations` tab
.. |AutoLink| replace:: :code:`NUKE.exe`
.. |AutoLink| replace:: :code:`AutoLink.exe`
.. |BruteSSH| replace:: :code:`BruteSSH.exe`
.. |City tab| replace:: :code:`City` tab
.. |CyberSec| replace:: :code:`CyberSec`

View File

@@ -278,6 +278,7 @@ Description
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
@@ -292,7 +293,7 @@ Source-File
* 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 Augmentation
when installing Augmentations.)
Difficulty
Hard
@@ -312,6 +313,7 @@ Description
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
@@ -321,7 +323,7 @@ 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
Each level of this Source-File also grants you a Duplicate Sleeve.
Difficulty
Hard
@@ -371,9 +373,10 @@ Description
Source-File
:Max Level: Infinity
Each level of Source-File 12 will increase all of your multipliers by 1%. This effect
is multiplicative with itself. In other words, level N of this Source-File will result
in a multiplier of 1.01^N (or 0.99^N for multipliers that decrease)
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.
@@ -394,27 +397,22 @@ For fast progression
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. Repeat **BitNode-12: The Recursion** several times. This BitNode will be extremely easy the
first few times you tackle it, and its Source-File raises all multipliers. Furthermore,
its effect stacks multiplicatively with itself and other Source-Files/Augmentations,
which gets better as time goes on
3. Do **BitNode-5: Artificial Intelligence** once or twice. The intelligence stat it unlocks
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.
4. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
3. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
more powerful in any way, but it does unlock :ref:`netscript_singularityfunctions` which
let you automate significantly more aspects of the game.
5. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
4. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
has high profit potential.
6. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
5. Do **BitNode-6: Bladeburners** once to unlock the Bladeburners mechanic. The Bladeburner
mechanic is useful for some of the future BitNodes (such as 9 and 10).
7. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
6. Do **BitNode-9: Hacktocracy** to unlock the Hacknet Server mechanic. You can
consider repeating it as well, as its Level 2 and 3 effects are pretty helpful as well.
.. todo:: To be continued as more BitNodes get added

View File

@@ -30,4 +30,5 @@ to reach out to the developer!
Gang API <netscript/netscriptgangapi>
Coding Contract API <netscript/netscriptcodingcontractapi>
Sleeve API <netscript/netscriptsleeveapi>
Formulas API <netscript/netscriptformulasapi>
Miscellaneous <netscript/netscriptmisc>

View File

@@ -3,14 +3,19 @@ getBitNodeMultipliers() Netscript Function
.. js:function:: getBitNodeMultipliers()
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.
:RAM cost: 4 GB
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>`_
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::

View File

@@ -1,15 +0,0 @@
getHackTime(), getGrowTime(), & getWeakenTime()
===============================================
The :js:func:`getHackTime`, :js:func:`getGrowTime`, and :js:func:`getWeakenTime`
all take an additional third optional parameter for specifying a specific intelligence
level to see how that would affect the hack/grow/weaken times. This parameter
defaults to your current intelligence level.
(Intelligence is unlocked after obtaining Source-File 5).
The function signatures are then::
getHackTime(hostname/ip[, hackLvl=current level, intLvl=current level])
getGrowTime(hostname/ip[, hackLvl=current level, intLvl=current level])
getWeakenTime(hostname/ip[, hackLvl=current level, intLvl=current level])

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

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

View File

@@ -1,13 +1,16 @@
clear() Netscript Function
==========================
.. js:function:: clear(port/fn)
.. js:function:: clear(portOrFilename)
:param string/number port/fn: Port or text file to clear
:RAM cost: 1 GB
: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 *port/fn* argument is a number between 1 and 20, then it specifies a port and will clear it (deleting all data from the underlying queue).
If the ``portOrFilename`` argument is a number between 1 and 20, then it
specifies a port and will clear it (deleting all data from the underlying queue).
If the *port/fn* argument is a string, then it specifies the name of a text file (.txt) and will delete all data from that text file.
If the ``portOrFilename`` argument is a string, then it specifies the name
of a text file (.txt) and will delete all data from that text file.

View File

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

View File

@@ -3,12 +3,12 @@ deleteServer() Netscript Function
.. js:function:: deleteServer(hostname)
:param string hostname: Hostname of the server to delete
:RAM cost: 2.25 GB
:param string hostname: Hostname of the server to delete.
:returns: ``true`` if successful, ``false`` otherwise.
Deletes one of your purchased servers, which is specified by its hostname.
Deletes the specified purchased server.
The *hostname* argument can be any data type, but it will be converted to a string. Whitespace is automatically removed from
the string. This function will not delete a server that still has scripts running on it.
Returns true if successful, and false otherwise.
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

@@ -1,16 +1,17 @@
disableLog() Netscript Function
===============================
.. js:function:: disableLog(fn)
.. js:function:: disableLog(functionName)
:param string fn: Name of function for which to disable logging
:RAM cost: 0 GB
: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.
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

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

@@ -1,39 +1,41 @@
exec() Netscript Function
=========================
.. js:function:: exec(script, hostname/ip, [numThreads=1], [args...])
.. js:function:: exec(script, hostname[, numThreads=1[, args...]])
:param string script: Filename of script to execute
:param string hostname/ip: IP or hostname of the 'target server' on which to execute the script
:param number numThreads: Optional thread count for new script. Set to 1 by default. Will be rounded to nearest integer
:param args...:
Additional arguments to pass into the new script that is being run. Note that if any arguments are being
passed into the new script, then the third argument *numThreads* must be filled in with a value.
:RAM cost: 1.3 GB
Run a script as a separate process on a specified server. This is similar to the *run* function except
that it can be used to run a script on any server, instead of just the current server.
: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.
If the script was successfully started, then this functions returns the PID
of that script. Otherwise, it returns 0.
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.
.. note:: PID stands for Process ID. The PID is a unique identifier for each script.
The PID will always be a positive integer.
.. warning:: Running this function with a *numThreads* argument of 0 will return 0 without
.. 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 *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::
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::
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::
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

@@ -5,4 +5,4 @@ exit() Netscript Function
:RAM cost: 0 GB
Terminates the current script immediately
Terminates the current script immediately.

View File

@@ -1,25 +1,29 @@
fileExists() Netscript Function
===============================
.. js:function:: fileExists(filename, [hostname/ip])
.. js:function:: fileExists(filename[, hostname])
:param string filename: Filename of file to check
:param string hostname/ip:
Hostname or IP of target server. This is optional. If it is not specified then the
function will use the current server as the target server
:RAM cost: 0.1 GB
Returns a boolean indicating whether the specified file exists on the target server. 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".
: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.
If the *hostname/ip* argument is omitted, then the function will search through the current server (the server
running the script that calls this function) for the file.
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``.
Examples::
If the ``hostname`` argument is omitted, then the function will search
through the server running the script that calls this function for the file.
fileExists("foo.script", "foodnstuff");
fileExists("ftpcrack.exe");
Examples:
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.
.. 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

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

View File

@@ -4,5 +4,10 @@ getFavorToDonate() Netscript Function
.. js:function:: getFavorToDonate()
:RAM cost: 0.1 GB
:returns: Amount of faction favor required to unlock donation.
Returns the amount of Faction favor required to be able to donate to a faction.
Example:
.. code-block:: javascript
getFavorToDonate() // returns: 150

View File

@@ -1,16 +1,24 @@
getGrowTime() Netscript Function
================================
.. js:function:: getGrowTime(hostname/ip[, hackLvl=current level])
.. js:function:: getGrowTime(hostname[, hackLvl=current level])
:param string hostname/ip: Hostname or IP of target server
:param number hackLvl: Optional hacking level for the calculation. Defaults to player's current hacking level
:RAM cost: 0.05 GB
Returns the amount of time in seconds it takes to execute the *grow()* Netscript function on the target server.
:param string hostname: Hostname of target server.
: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.
The function takes in an optional ``hackLvl`` parameter that can be
specified to see what the grow time would be at different hacking levels.
.. note:: For Hacknet Servers (the upgraded version of a Hacknet Node), this function will
return :code:`Infinity`.
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

@@ -1,16 +1,22 @@
getHackTime() Netscript Function
================================
.. js:function:: getHackTime(hostname/ip[, hackLvl=current level])
.. js:function:: getHackTime(hostname[, hackLvl=current level])
:param string hostname/ip: Hostname or IP of target server
:param number hackLvl: Optional hacking level for the calculation. Defaults to player's current hacking level
:RAM cost: 0.05 GB
: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.
Returns the amount of time in seconds it takes to execute the *hack()* Netscript function on the target server.
The function takes in an optional ``hackLvl`` parameter that can be
specified to see what the hack time would be at different hacking levels.
The function takes in an optional *hackLvl* parameter that can be specified
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

@@ -4,5 +4,10 @@ getHackingLevel() Netscript Function
.. js:function:: getHackingLevel()
:RAM cost: 0.05 GB
:returns: The player's current hacking level.
Returns the player's current hacking level
Example:
.. code-block:: javascript
getHackingLevel(); // returns: 124

View File

@@ -4,9 +4,11 @@ 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%).
Returns an object containing the Player's hacking related multipliers. These multipliers are
returned in decimal forms, not percentages (e.g. 1.5 instead of 150%). The object has the following structure::
Structure::
{
chance: Player's hacking chance multiplier,
@@ -15,7 +17,9 @@ getHackingMultipliers() Netscript Function
growth: Player's hacking growth multiplier
}
Example of how this can be used::
Example:
.. code-block:: javascript
mults = getHackingMultipliers();
print(mults.chance);

View File

@@ -4,9 +4,11 @@ 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%).
Returns an object containing the Player's hacknet related multipliers. These multipliers are
returned in decimal forms, not percentages (e.g. 1.5 instead of 150%). The object has the following structure::
Structure::
{
production: Player's hacknet production multiplier,
@@ -16,7 +18,9 @@ getHacknetMultipliers() Netscript Function
levelCost: Player's hacknet level cost multiplier
}
Example of how this can be used::
Example:
.. code-block:: javascript
mults = getHacknetMultipliers();
print(mults.production);

View File

@@ -4,5 +4,11 @@ getHostname() Netscript Function
.. js:function:: getHostname()
:RAM cost: 0.05 GB
:returns: Hostname of the server this script is running on.
Returns a string with the hostname of the server that the script is running on
Example:
.. code-block:: javascript
getHostname(); // returns: "foodnstuff"

View File

@@ -3,9 +3,9 @@ getPortHandle() Netscript Function
.. js:function:: getPortHandle(port)
:param number port: Port number
:RAM cost: 10 GB
Get a handle to a Netscript Port. See more details here: :ref:`netscript_ports`
:param number port: Port number
:returns: portHandle object. See :ref:`netscript_ports`
**WARNING:** Port Handles only work in :ref:`netscriptjs`. They will not work in :ref:`netscript1`.

View File

@@ -6,11 +6,10 @@ getPurchasedServerCost() Netscript Function
: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``.
Returns the cost to purchase a server with the specified amount of *ram*.
Example:
Examples::
.. code-block:: javascript
for (i = 1; i <= 20; i++) {
tprint(i + " -- " + getPurchasedServerCost(Math.pow(2, i)));
}
getPurchasedServerCost(8192); // returns: 450560000

View File

@@ -4,5 +4,10 @@ getPurchasedServerLimit() Netscript Function
.. js:function:: getPurchasedServerLimit()
:RAM cost: 0.05 GB
:returns: The maximum number of servers you can purchase.
Returns the maximum number of servers you can purchase
Example:
.. code-block:: javascript
getPurchasedServerLimit() // returns: 25

View File

@@ -4,5 +4,10 @@ getPurchasedServerMaxRam() Netscript Function
.. js:function:: getPurchasedServerMaxRam()
:RAM cost: 0.05 GB
:returns: The maximum RAM that a purchased server can have.
Returns the maximum RAM that a purchased server can have
Example:
.. code-block:: javascript
getPurchasedServerMaxRam(); // returns: 1048576

View File

@@ -1,11 +1,13 @@
getPurchasedServers() Netscript Function
========================================
.. js:function:: getPurchasedServers([hostname=true])
.. js:function:: getPurchasedServers()
:param boolean hostname:
Specifies whether hostnames or IP addresses should be returned. If it's true then hostnames will be returned, and if false
then IPs will be returned. If this argument is omitted then it is true by default
:RAM cost: 2.25 GB
:returns: String array of hostnames of all of the servers you have purchased.
Returns an array with either the hostnames or IPs of all of the servers you have purchased.
Example:
.. code-block:: javascript
getPurchasedServers(); // returns: ['grow-server-0', 'grow-server-1', 'weaken-server-0']

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

@@ -1,14 +1,18 @@
getScriptExpGain() Netscript Function
=====================================
.. js:function:: getScriptExpGain([scriptname], [hostname/ip], [args...])
.. js:function:: getScriptExpGain([scriptname[, hostname[, args...]]])
:param string scriptname: Filename of script
:param string hostname/ip: Server on which script is running
:param args...: Arguments that the script is running with
:RAM cost: 0.1 GB
:param string scriptname: Filename of script.
:param string hostname: Server on which script is running.
:param args...: Arguments that the script is running with.
:returns: The amount of hacking experience the specified script generates
while online.
Returns the amount of hacking experience the specified script generates while online (when the game is open, does not apply for offline experience gains).
Remember that a script is uniquely identified by both its name and its arguments.
This function can also return the total experience gain rate of all of your
active scripts by running the function with no arguments.
.. note:: A script is uniquely identified by both its name and its
arguments.
This function can also return the total experience gain rate of all of your active scripts by running the function with no arguments.

View File

@@ -1,18 +1,19 @@
getScriptIncome() Netscript Function
====================================
.. js:function:: getScriptIncome([scriptname], [hostname/ip], [args...])
.. 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
:RAM cost: 0.1 GB
:returns: Amount of income the specified script generates while online.
Returns the amount of income the specified script generates while online (when the game is open, does not apply for offline income).
Remember that a script is uniquely identified by both its name and its arguments. So for example if you ran a script with the arguments
"foodnstuff" and "5" then in order to use this function to get that script's income you must specify those same arguments in the same order
in this function call.
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.
This function can also be called with no arguments. If called with no arguments, then 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

@@ -1,27 +1,27 @@
getScriptLogs() Netscript Function
==================================
.. js:function:: getScriptLogs([fn], [hostname/ip=current ip], [args...])
.. js:function:: getScriptLogs([filename[, hostname=current hostname[, args...]]])
:param string fn: Optional. Filename of script to get logs from.
:param string ip: Optional. IP or hostname of the server that the script is on
:param args...: Arguments to identify which scripts to get logs for
: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.
Returns a script's logs. The logs are returned as an array, where each
line is an element in the array. The most recently logged line is at the
end of the array.
Note that there is a maximum number of lines that a script stores in its logs.
.. 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.
If the function is called with no arguments, it will return the current
script's logs.
Otherwise, the `fn`, `hostname/ip,` 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.
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.
Examples::
Example:
.. code-block:: javascript
// Get logs from foo.script on the current server that was run with no args
getScriptLogs("foo.script");

View File

@@ -4,5 +4,10 @@ getScriptName() Netscript Function
.. js:function:: getScriptName()
:RAM cost: 0 GB
:returns: Current script name.
Returns the current script name
Example:
.. code-block:: javascript
getScriptName(); // returns: "example.script"

View File

@@ -1,11 +1,16 @@
getScriptRam() Netscript Function
=================================
.. js:function:: getScriptRam(scriptname[, hostname/ip])
.. js:function:: getScriptRam(filename[, hostname])
:param string scriptname: Filename of script. This is case-sensitive.
:param string hostname/ip: Hostname or IP of target server the script is located on. This is optional, If it is not specified then the function will set the current server as the target server.
: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.
Returns the amount of RAM required to run the specified script on the target server. Returns
0 if the script does not exist.
Example:
.. code-block:: javascript
getScriptRam("grow.script"); // returns: 1.75

View File

@@ -1,12 +1,28 @@
getServerBaseSecurityLevel() Netscript Function
===============================================
.. js:function:: getServerBaseSecurityLevel(hostname/ip)
.. js:function:: getServerBaseSecurityLevel(hostname)
:param string hostname/ip: Hostname or IP of target server
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Base security level of target server.
Returns the base security level of the target server. This is the security level that the server starts out with.
This is different than *getServerSecurityLevel()* because *getServerSecurityLevel()* returns the current
security level of a server, which can constantly change due to *hack()*, *grow()*, and *weaken()*, calls on that
server. The base security level will stay the same until you reset by installing an Augmentation(s).
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

@@ -1,12 +1,19 @@
getServerGrowth() Netscript Function
====================================
.. js:function:: getServerGrowth(hostname/ip)
.. js:function:: getServerGrowth(hostname)
:param string hostname/ip: Hostname or IP of target server
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Server growth parameter.
Returns the server's instrinsic "growth parameter". This growth parameter is a number
between 1 and 100 that represents how quickly the server's money grows. This parameter affects the
percentage by which the server's money is increased when using the *grow()* function. A higher
growth parameter will result in a higher percentage increase from *grow()*.
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

@@ -1,9 +1,14 @@
getServerMaxMoney() Netscript Function
======================================
.. js:function:: getServerMaxMoney(hostname/ip)
.. js:function:: getServerMaxMoney(hostname)
:param string hostname/ip: Hostname or IP of target server
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: Maximum amount of money that can be available on a server.
Returns the 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

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

View File

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

View File

@@ -1,9 +1,15 @@
getServerNumPortsRequired() Netscript Function
==============================================
.. js:function:: getServerNumPortsRequired(hostname/ip)
.. js:function:: getServerNumPortsRequired(hostname)
:param string hostname/ip: Hostname or IP of target server
: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.
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

@@ -1,17 +1,23 @@
getServerRam() Netscript Function
=================================
.. js:function:: getServerRam(hostname/ip)
.. js:function:: getServerRam(hostname)
.. warning:: This function is deprecated.
:param string hostname/ip: Hostname or IP of target server
: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::
Example:
res = getServerRam("helios");
.. code-block:: javascript
res = getServerRam("helios"); // returns: [5, 10]
totalRam = res[0];
ramUsed = res[1];

View File

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

View File

@@ -1,10 +1,14 @@
getServerSecurityLevel() Netscript Function
===========================================
.. js:function:: getServerSecurityLevel(hostname/ip)
.. js:function:: getServerSecurityLevel(hostname)
:param string hostname/ip: Hostname or IP of target server
:RAM cost: 0.1 GB
:param string hostname: Hostname of target server.
:returns: The security level of the target server.
Returns the security level of the target server. A server's security level is denoted by a number, typically
between 1 and 100 (but it can go above 100).
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

@@ -4,5 +4,10 @@ getTimeSinceLastAug() Netscript Function
.. js:function:: getTimeSinceLastAug()
:RAM cost: 0.05 GB
:returns: Milliseconds since you last installed augmentations.
Returns the amount of time in milliseconds that have passed since you last installed Augmentations
Example:
.. code-block:: javascript
getTimeSinceLastAug(); // returns: 13912400

View File

@@ -1,16 +1,23 @@
getWeakenTime() Netscript Function
==================================
.. js:function:: getWeakenTime(hostname/ip[, hackLvl=current level])
.. js:function:: getWeakenTime(hostname[, hackLvl=current level])
:param string hostname/ip: Hostname or IP of target server
:param number hackLvl: Optional hacking level for the calculation. Defaults to player's current hacking level
:RAM cost: 0.05 GB
Returns the amount of time in seconds it takes to execute the *weaken()* Netscript function on the target server.
: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

@@ -1,9 +1,10 @@
grow() Netscript Function
=========================
.. js:function:: grow(hostname/ip[, opts={}])
.. js:function:: grow(hostname[, opts={}])
:param string hostname/ip: IP or hostname of the target server to grow
: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.
@@ -12,18 +13,25 @@ grow() Netscript Function
:ref:`gameplay_stock_market_player_actions_influencing_stock`
:returns: The number by which the money on the server was multiplied for the growth
:RAM cost: 0.15 GB
Use your hacking skills to increase the amount of money available on a server. The runtime for this command depends on your hacking
level and the target server's security level. When 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 getServerGrowth() function can be used to obtain a server's growth rate.
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 hack(), grow() can be called on any server, regardless of where the script is running. The 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.
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::
Example:
grow("foodnstuff");
grow("foodnstuff", { threads: 5 }); // Only use 5 threads to grow
.. code-block:: javascript
while(true) {
grow("foodnstuff");
}

View File

@@ -1,24 +1,23 @@
growthAnalyze() Netscript Function
==================================
.. js:function:: growthAnalyze(hostname/ip, growthAmount)
.. js:function:: growthAnalyze(hostname, growthAmount)
:param string hostname/ip: IP or 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 grow() calls needed to grow the specified server by the specified amount
: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.
This function returns the number of "growths" needed in order to increase the amount
of money available on the specified server by the specified amount.
Example:
The specified amount is multiplicative and is in decimal form, not percentage.
.. code-block:: javascript
For example, if you want to determine how many `grow()` calls you need
to double the amount of money on `foodnstuff`, you would use::
// How many grow threads are needed to double the current money on 'foodnstuff'
growthAnalyze("foodnstuff", 2); // returns: 5124
growthAnalyze("foodnstuff", 2);
If this returns 100, then this means you need to call `grow()` 100 times
in order to double the money (or once with 100 threads).
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

@@ -1,29 +1,35 @@
hack() Netscript Function
=========================
.. js:function:: hack(hostname/ip[, opts={}])
.. js:function:: hack(hostname[, opts={}])
:param string hostname/ip: IP or hostname of the target server to hack
: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
:RAM cost: 0.1 GB
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.
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 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 hack() on a server will raise that server's security level by 0.002.
A successful :doc:`hack<hack>` on a server will raise that server's security
level by 0.002.
Example::
Example:
.. code-block:: javascript
hack("foodnstuff");
hack("10.1.2.3");

View File

@@ -1,20 +1,22 @@
hackAnalyzePercent() Netscript Function
=======================================
.. js:function:: hackAnalyzePercent(hostname/ip)
.. js:function:: hackAnalyzePercent(hostname)
:param string hostname/ip: IP or hostname of target server
:returns: The percentage of money you will steal from the target server with a single hack
: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 (Netscript
functions typically return in decimal form, but not this one).**
single hack. This value is returned in percentage form, not decimal.
For example, assume the following returns 1::
For example, assume the following returns 1:
hackAnalyzePercent("foodnstuff");
.. code-block:: javascript
This means that if hack the `foodnstuff` server, then you will steal 1% of its
total money. If you `hack()` using N threads, then you will steal N% of its total
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

@@ -1,24 +1,28 @@
hackAnalyzeThreads() Netscript Function
=======================================
.. js:function:: hackAnalyzeThreads(hostname/ip, hackAmount)
.. js:function:: hackAnalyzeThreads(hostname, hackAmount)
:param string hostname/ip: IP or 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 hack() the server for *hackAmount* money
: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 `hack()` command to steal the specified amount of money from the target server.
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.
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::
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 `hack()` call
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.

View File

@@ -1,11 +1,16 @@
hackChance() Netscript Function
===============================
.. js:function:: hackChance(hostname/ip)
.. js:function:: hackChance(hostname)
:param string hostname/ip: IP or hostname of target server
:returns: The chance you have of successfully hacking the target server
: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.
Returns the chance you have of successfully hacking the specified server. This
returned value is in decimal form, not percentage.
Example:
.. code-block:: javascript
hackChance("foodnstuff"); // returns: .5
// So 50% chance to hack "foodnstuff"

View File

@@ -1,14 +1,15 @@
hasRootAccess() Netscript Function
==================================
.. js:function:: hasRootAccess(hostname/ip)
.. js:function:: hasRootAccess(hostname)
:param string hostname/ip: Hostname or IP of the target server
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
:returns: ``true`` if you have root access on the target server.
Returns a boolean indicating whether or not the player has root access to the specified target server.
Example:
Example::
.. code-block:: javascript
if (hasRootAccess("foodnstuff") == false) {
nuke("foodnstuff");

View File

@@ -1,13 +1,16 @@
httpworm() Netscript Function
=============================
.. js:function:: httpworm(hostname/ip)
.. js:function:: httpworm(hostname)
:param string hostname/ip: IP or hostname of the target server
:RAM cost: 0 GB
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist on your home computer.
Runs the HTTPWorm.exe program on the target server. HTTPWorm.exe must exist
on your home computer.
Example::
Example:
.. code-block:: javascript
httpworm("foodnstuff");

View File

@@ -1,10 +1,14 @@
isLogEnabled() Netscript Function
=================================
.. js:function:: isLogEnabled(fn)
.. js:function:: isLogEnabled(functionName)
:param string fn: Name of function to check
:RAM cost: 0 GB
:param string functionName: Name of function to check.
:returns: ``true`` is logs are enabled for this function or for 'ALL'
Returns a boolean indicating whether or not logging is enabled for that
function (or 'ALL')
Example:
.. code-block:: javascript
isLogEnabled('hack'); // returns: true

View File

@@ -1,29 +1,54 @@
isRunning() Netscript Function
==============================
.. js:function:: isRunning(filename, hostname/ip, [args...])
.. js:function:: isRunning(filename[, hostname=current hostname[, args...]])
:param string filename: Filename of script to check. This is case-sensitive.
:param string hostname/ip: Hostname or IP of target server
:param args...: Arguments to specify/identify which scripts to search for
:RAM cost: 0.1 GB
:param string filename: Filename of script to check. case-sensitive.
:param string hostname: Hostname of target server. Defaults to current server
:param args...: Arguments to specify/identify which scripts to search for
:returns: ``true`` if that script with those args is running on that server.
Returns a boolean indicating whether the specified script is running on the target server. Remember that a script is
uniquely identified by both its name and its arguments.
.. note::
Remember that a script is uniquely identified by both its name and its arguments.
**Examples:**
In this first example below, the function call will return true if there is a script named *foo.script* with no arguments
running on the *foodnstuff* server, and false otherwise::
In this first example below, the function call will return true if there is
a script named ``foo.script`` with no arguments running on the
``foodnstuff`` server, and false otherwise:
isRunning("foo.script", "foodnstuff");
.. code-block:: javascript
In this second example below, the function call will return true if there is a script named *foo.script* with no arguments
running on the current server, and false otherwise::
isRunning("foo.script", "foodnstuff");
isRunning("foo.script", getHostname());
In this second example below, the function call will return true if there is
a script named ``foo.script`` with no arguments running on the current
server, and false otherwise:
In this next example below, the function call will return true if there is a script named *foo.script* running with the arguments
1, 5, and "test" (in that order) on the *joesguns* server, and false otherwise::
.. code-block:: javascript
isRunning("foo.script", "joesguns", 1, 5, "test");
isRunning("foo.script", getHostname());
In this next example below, the function call will return true if there is a
script named ``foo.script`` running with the arguments 1, 5, and "test" (in
that order) on the ``joesguns`` server, and false otherwise:
.. code-block:: javascript
isRunning("foo.script", "joesguns", 1, 5, "test");
.. js:function:: isRunning(scriptPid)
:RAM cost: 0.1 GB
:param number scriptPid: PID of the script to check.
Same as the above version but with pid.
Example:
.. code-block:: javascript
isRunning(39);

View File

@@ -1,47 +1,57 @@
kill() Netscript Function
=========================
.. js:function:: kill(script, hostname/ip, [args...])
.. js:function:: kill(script, hostname, [args...])
:param string script: Filename of the script to kill
:param string hostname/ip: IP or hostname of the server on which to kill the script
:param args...: Arguments to identify which script to kill
:RAM cost: 0.5 GB
:param string script: Filename of the script to kill.
:param string hostname: Hostname of the server on which to kill the script.
:param args...: Arguments to identify which script to kill.
:returns: ``true`` is that script was killed.
Kills the script on the target server specified by the script's name and arguments. Remember that scripts
are uniquely identified by both their name and arguments. For example, if *foo.script* is run with the argument 1, then this
is not the same as *foo.script* run with the argument 2, even though they have the same code.
If this function successfully kills the specified script, then it will return true. Otherwise, it will return false.
Kills the script on the target server specified by the script's name and
arguments. Remember that scripts are uniquely identified by both their name
and arguments. For example, if ``foo.script`` is run with the argument 1,
then this is not the same as ``foo.script`` run with the argument 2, even
though they have the same code.
Examples:
The following example will try to kill a script named *foo.script* on the *foodnstuff* server that was ran with no arguments::
The following example will try to kill a script named ``foo.script`` on the
``foodnstuff`` server that was ran with no arguments:
.. code-block:: javascript
kill("foo.script", "foodnstuff");
The following will try to kill a script named *foo.script* on the current server that was ran with no arguments::
The following will try to kill a script named ``foo.script`` on the current
server that was ran with no arguments:
.. code-block:: javascript
kill("foo.script", getHostname());
The following will try to kill a script named *foo.script* on the current server that was ran with the arguments 1 and "foodnstuff"::
The following will try to kill a script named ``foo.script`` on the current
server that was ran with the arguments 1 and "foodnstuff":
.. code-block:: javascript
kill("foo.script", getHostname(), 1, "foodnstuff");
.. js:function:: kill(scriptPid)
:param number scriptPid: PID of the script to kill
:RAM cost: 0.5 GB
:param number scriptPid: PID of the script to kill
:returns: ``true`` that script was killed.
Kills the script with the specified PID. Killing a script by its PID will typically
have better performance, especially if you have many scripts running.
Kills the script with the specified PID. Killing a script by its PID will
typically have better performance, especially if you have many scripts
running.
If this function successfully kills the specified script, then it will return true.
Otherwise, it will return false.
*Examples:*
Example:
The following example will try to kill the script with the PID 10::
.. code-block:: javascript
if (kill(10)) {
print("Killed script with PID 10!");

View File

@@ -1,10 +1,17 @@
killall() Netscript Function
============================
.. js:function:: killall(hostname/ip)
.. js:function:: killall(hostname)
:param string hostname/ip: IP or hostname of the server on which to kill all scripts
:RAM cost: 0.5 GB
:param string hostname: Hostname of the server on which to kill all scripts.
:returns: ``true`` if scripts were killed on target server.
Kills all running scripts on the specified server. This function returns true if any scripts were killed, and
false otherwise. In other words, it will return true if there are any scripts running on the target server.
Kills all running scripts on the specified server.
Example:
.. code-block:: javascript
killall('foodnstuff'); // returns: true

View File

@@ -1,11 +1,15 @@
ls() Netscript Function
=======================
.. js:function:: ls(hostname/ip, [grep])
.. js:function:: ls(hostname[, grep])
:param string hostname/ip: Hostname or IP of the target server
:param string grep: a substring to search for in the filename
:RAM cost: 0 GB
:RAM cost: 0.2 GB
:param string hostname: Hostname of the target server.
:param string grep: a substring to search for in the filename.
:returns: String array of all files in alphabetical order.
Returns an array with the filenames of all files on the specified server (as strings). The returned array
is sorted in alphabetic order
Example:
.. code-block:: javascript
ls("home"); // returns: ["demo.script", "msg1.txt"]

View File

@@ -3,17 +3,20 @@ nFormat() Netscript Function
.. js:function:: nFormat(n, format)
:param number n: Number to format
:param string format: Formatter
:RAM cost: 0 GB
:param number n: number to format
:param string format: The format to use.
Converts a number into a string with the specified formatter. This uses the
`numeraljs <http://numeraljs.com/>`_ library, so the formatters must be compatible
with that.
Converts a number into a string with the specified format. This uses the
`numeraljs <http://numeraljs.com/>`_ library, so the formatters must be
compatible with that.
This is the same function that the game itself uses to display numbers.
The game uses the ``$0.000a`` format to display money.
Examples::
Example:
nFormat(1.23e9, "$0.000a"); // Returns "$1.230b"
nFormat(12345.678, "0,0"); // Returns "12,346"
nFormat(0.84, "0.0%"); // Returns "84.0%
.. code-block:: javascript
nFormat(1.23e9, "$0.000a"); // returns: "$1.230b"
nFormat(12345.678, "0,0"); // returns: "12,346"
nFormat(0.84, "0.0%"); // returns: "84.0%"

View File

@@ -1,13 +1,16 @@
nuke() Netscript Function
=========================
.. js:function:: nuke(hostname/ip)
.. js:function:: nuke(hostname)
:param string hostname/ip: IP or hostname of the target server
:RAM cost: 0 GB
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
Runs the NUKE.exe program on the target server. NUKE.exe must exist on your home computer.
Example::
Example:
.. code-block:: javascript
nuke("foodnstuff");

View File

@@ -3,10 +3,12 @@ peek() Netscript Function
.. js:function:: peek(port)
:param number port: Port to peek. Must be an integer between 1 and 20
:RAM cost: 1 GB
:param number port: Port to peek. Must be an integer between 1 and 20.
:returns: First element on that port.
This function is used to peek at the data from a port. It returns the first element in the specified port
without removing that element. If the port is empty, the string "NULL PORT DATA" will be returned.
This function is used to peek at the data from a port. It returns the first
element in the specified port without removing that element. If the port is
empty, the string "NULL PORT DATA" will be returned.
Read about how :ref:`netscript_ports` work here

View File

@@ -1,9 +1,16 @@
print() Netscript Function
===========================
.. js:function:: print(x)
.. js:function:: print(args...)
:param x: Value to be printed
:RAM cost: 0 GB
:param args: Values to be printed.
Prints a value or a variable to the script's logs.
Prints any number of values to the script's logs.
Example:
.. code-block:: javascript
print("Hello world!"); // Prints "Hello world!" in the logs.
print({a:5}); // Prints '{"a":5}' in the logs.

View File

@@ -3,8 +3,21 @@ prompt() Netscript Function
.. js:function:: prompt(txt)
:param string txt: Text to appear in the prompt dialog box
:RAM cost: 0 GB
:param string txt: Text to appear in the prompt dialog box.
:returns: ``true`` if the player clicks "Yes".
Prompts the player with a dialog box with two options: "Yes" and "No". This function will return true if the player click "Yes" and
false if the player clicks "No". The script's execution is halted until the player selects one of the options.
Prompts the player with a dialog box with two options: "Yes" and "No". This
function will return true if the player click "Yes" and false if the player
clicks "No". The script's execution is halted until the player selects one
of the options.
Example:
.. code-block:: javascript
cost = getPurchasedServerCost(8192);
answer = prompt("Buy a server for $"+cost);
if(answer) {
purchaseServer("my server", 8192);
}

View File

@@ -1,28 +1,31 @@
ps() Netscript Function
=======================
.. js:function:: ps(hostname/ip=current ip)
.. js:function:: ps([hostname=current hostname])
:param string ip: Hostname or IP address of the target server.
If not specified, it will be the current server's IP by default
:RAM cost: 0.2 GB
:param string hostname: Hostname address of the target server.
If not specified, it will be the current server's IP by default.
:returns: array of object
Returns an array with general information about all scripts running on the specified
target server. The information for each server is given in an object with
the following structure::
Returns an array with general information about all scripts running on the
specified target server. The information for each server is given in an
object with the following structure::
{
filename: Script name,
threads: Number of threads script is running with,
args: Script's arguments
filename: Script name,
threads: Number of threads script is running with,
args: Script's arguments,
pid: Script's pid
}
Example usage (using :ref:`netscriptjs`)::
Example:
export async function main(ns) {
const ps = ns.ps("home");
for (let i = 0; i < ps.length; ++i) {
ns.tprint(ps[i].filename + ' ' + ps[i].threads);
ns.tprint(ps[i].args);
}
.. code-block:: javascript
processes = ps("home");
for (let i = 0; i < processes.length; ++i) {
tprint(processes[i].filename + ' ' + processes[i].threads);
tprint(processes[i].args);
tprint(processes[i].pid);
}

View File

@@ -3,25 +3,29 @@ purchaseServer() Netscript Function
.. js:function:: purchaseServer(hostname, ram)
:param string hostname: Hostname of the purchased server
:param number ram: Amount of RAM of the purchased server. Must be a power of 2. Maximum value of :js:func:`getPurchasedServerMaxRam`
:RAM cost: 2.25 GB
:param string hostname: Hostname of the purchased server.
:param number ram: Amount of RAM of the purchased server. Must be a power of
2. Maximum value of :doc:`getPurchasedServerMaxRam<getPurchasedServerMaxRam>`
:returns: The hostname of the newly purchased server. Empty string on failure.
Purchased a server with the specified hostname and amount of RAM.
The *hostname* argument can be any data type, but it will be converted to a string and have whitespace removed. Anything that resolves to an empty string will
cause the function to fail. If there is already a server with the specified hostname, then the function will automatically append
a number at the end of the *hostname* argument value until it finds a unique hostname. For example, if the script calls
*purchaseServer("foo", 4)* but a server named "foo" already exists, the it will automatically change the hostname to "foo-0". If there is already
a server with the hostname "foo-0", then it will change the hostname to "foo-1", and so on.
The ``hostname`` argument can be any data type, but it will be converted to
a string and have whitespace removed. Anything that resolves to an empty
string will cause the function to fail. If there is already a server with
the specified hostname, then the function will automatically append a number
at the end of the ``hostname`` argument value until it finds a unique
hostname. For example, if the script calls ``purchaseServer("foo", 4)`` but
a server named "foo" already exists, the it will automatically change the
hostname to "foo-0". If there is already a server with the hostname "foo-0",
then it will change the hostname to "foo-1", and so on.
Note that there is a maximum limit to the amount of servers you can purchase.
Returns the hostname of the newly purchased server as a string. If the function fails to purchase a server, then it will return an
empty string. The function will fail if the arguments passed in are invalid, if the player does not have enough money to purchase
the specified server, or if the player has exceeded the maximum amount of servers.
Example:
Example::
.. code-block:: javascript
ram = 64;
hn = "pserv-";

View File

@@ -1,16 +1,21 @@
read() Netscript Function
=========================
.. js:function:: read(port/fn)
.. js:function:: read(portOrFilename)
:param string/number port/fn: Port or text file to read from
:RAM cost: 1 GB
:param string/number portOrFilename: Port or text file to read from.
This function is used to read data from a port, a text file (.txt), or a script (.script, .js, .ns)
This function is used to read data from a port, a text file (.txt), or a
script (.script, .js, .ns).
If the argument *port/fn* is a number between 1 and 20, then it specifies a port and it will read data from that port. Read
about how :ref:`netscript_ports` work here. A port is a serialized queue. This function
will remove the first element from that queue and return it. If the queue is empty, then the string "NULL PORT DATA" will be returned.
If the argument ``portOrFilename`` is a number between 1 and 20, then it
specifies a port and it will read data from that port. Read about how
:ref:`netscript_ports` work here. A port is a serialized queue. This
function will remove the first element from that queue and return it. If the
queue is empty, then the string "NULL PORT DATA" will be returned.
If the argument *port/fn* is a string, then it specifies the name of a text file or script and this function will return the data in the specified text file/script. If
the text file does not exist, an empty string will be returned.
If the argument ``portOrFilename`` is a string, then it specifies the name
of a text file or script and this function will return the data in the
specified text file/script. If the text file does not exist, an empty string
will be returned.

View File

@@ -1,13 +1,17 @@
relaysmtp() Netscript Function
==============================
.. js:function:: relaysmtp(hostname/ip)
.. js:function:: relaysmtp(hostname)
:param string hostname/ip: IP or hostname of the target server
:RAM cost: 0 GB
:RAM cost: 0.05 GB
:param string hostname: Hostname of the target server.
Runs the relaySMTP.exe program on the target server. relaySMTP.exe must exist on your home computer.
Example::
Runs the relaySMTP.exe program on the target server. relaySMTP.exe must
exist on your home computer.
Example:
.. code-block:: javascript
relaysmtp("foodnstuff");

View File

@@ -1,11 +1,13 @@
rm() Netscript Function
=======================
.. js:function:: rm(fn[, hostname/ip=current server])
.. js:function:: rm(filename[, hostname=current server])
:param string fn: Filename of file to remove. Must include the extension
:param string hostname/ip: Hostname or IP Address of the server on which to delete the file. Optional. Defaults to current server
:returns: True if it successfully deletes the file, and false otherwise
:RAM cost: 1 GB
:param string filename: Filename of file to remove. Must include the extension.
:param string hostname: Hostname address of the server on which to delete
the file. Optional. Defaults to current server
:returns: ``true`` if it successfully deletes the file.
Removes the specified file from the current server. This function works for every file type except message (.msg) files.
Removes the specified file from the current server. This function works for
every file type except ``.msg`` files.

View File

@@ -1,38 +1,44 @@
run() Netscript Function
========================
.. js:function:: run(script, [numThreads=1], [args...])
.. js:function:: run(script[, numThreads=1[, args...]])
:param string script: Filename of script to run
: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 second argument *numThreads* must be filled in with a value.
:RAM cost: 1 GB
:param string script: Filename of script to run
: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
second argument ``numThreads`` must be filled in with a value.
:returns: The process id of the new process or 0 on failure.
Run a script as a separate process. This function can only be used to run scripts located on the current server (the server
running the script that calls this function).
Run a script as a separate process. This function can only be used to run
scripts located on the current server (the server running the script that
calls this function).
If the script was successfully started, then this functions returns the PID
of that script. Otherwise, it returns 0.
.. 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.
.. note:: PID stands for Process ID. The PID is a unique identifier for each script.
The PID will always be a positive integer.
The simplest way to use the :doc:`run<run>` command is to call it with just
the script name. The following example will run ``foo.script``
single-threaded with no arguments:
.. 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 *run* command is to call it with just the script name. The following example will run
'foo.script' single-threaded with no arguments::
.. code-block:: javascript
run("foo.script");
The following example will run 'foo.script' but with 5 threads instead of single-threaded::
The following example will run 'foo.script' but with 5 threads instead of
single-threaded:
.. code-block:: javascript
run("foo.script", 5);
This next example will run 'foo.script' single-threaded, and will pass the string 'foodnstuff' into the script
as an argument::
This next example will run ``foo.script`` single-threaded, and will pass the
string ``foodnstuff`` into the script as an argument:
.. code-block:: javascript
run("foo.script", 1, 'foodnstuff');

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