Compare commits

...

148 Commits

Author SHA1 Message Date
omuretsu
6d72861304 Fix graceful load for type changes 2023-01-02 15:25:43 -05:00
omuretsu
3f850d71ba fix graceful material load? 2023-01-02 15:06:44 -05:00
omuretsu
2cb989243f Format fix... 2023-01-02 13:59:31 -05:00
Mughur
1baa615def MISC: small fixes (#270)
* infiltration gain bug fix
* fix corp division description
* avoid some issues with Infinity at super high NFG levels
Co-authored-by: Daniel Perez Alvarez <danielpza@protonmail.com>
2023-01-02 13:51:59 -05:00
omuretsu
dfa691784c Fix test for removedFunction in singularity 2023-01-02 13:47:04 -05:00
omuretsu
80d751e32b fix getActionRepGain 2023-01-02 13:28:31 -05:00
omuretsu
0ec4ef31ab 2.2 2023-01-02 13:20:25 -05:00
omuretsu
93aab87a16 Fix inaccurate HP on SF prestige 2023-01-02 10:35:52 -05:00
David Walker
fe5344f232 UI: Make tooltips for CoffeeParty better reflect reality (#269) 2023-01-02 09:49:36 -05:00
zerbosh
aa50378e18 CORPORATION: Give Full Api Access on BN3 (#276) 2023-01-02 09:48:02 -05:00
Mughur
e90224c63d CORP: Industry descriptions shows what each division uses and makes (#272) 2023-01-02 09:46:53 -05:00
zerbosh
7d98c680e5 SLEEVE: added storedCycles to getSleeve() (#279) 2023-01-02 09:45:51 -05:00
omuretsu
d00ed1f4ee sync overview updates
Using EventEmitter. Also get rid of ShownContext as it is no longer needed with this event based rerender.
2023-01-02 08:54:18 -05:00
omuretsu
90fc82b86f Fix bad memoization in blade overview 2023-01-02 08:00:45 -05:00
David Walker
71bae01fd4 BUG: Fix console error about bad ref use. (#278) 2023-01-01 04:10:06 -05:00
omuretsu
313f6ada94 Fix more overview issues
Previous changes had overview become empty when collapsing it, which broke the collapse animation. It also would have broken use of the player-visible hooks, because those would have been removed from the document on collapse.
Now a context is used to store whether the overview is being shown or not, and components that update themselves will only do so when they are being shown.
2022-12-30 15:42:58 -05:00
Snarling
62a2532d05 UI: Fix broken overview (#273)
Fixes the broken overview where improper hook use was causing React errors for certain prop changes.
Overview no longer rerenders itself on a timer. Instead individual items that need to check for state updates do so themselves on a timer.
2022-12-30 14:28:49 -05:00
Snarling
fb1f95c26e VARIOUS: Various changes prior to release 2.2 (#271)
See PR #271 description
2022-12-29 20:28:53 -05:00
zerbosh
24ad342203 getCorporation() returns division names (#266) 2022-12-29 04:30:16 -05:00
Mughur
5c80655d62 NETSCRIPT: Added ns.corporation.issueNewShares function (#261) 2022-12-25 03:35:18 -05:00
Mughur
556fe8dd33 NETSCRIPT: Added ns.corporation.getConstants, replacing many other corporation getter functions (#260) 2022-12-25 03:33:13 -05:00
David Walker
018053d79e NETSCRIPT: Reduce cost of two multipliers functions (#254) 2022-12-21 18:30:27 -05:00
David Walker
149d687fd6 UI: Memoize character overview (#247) 2022-12-21 18:27:51 -05:00
Mughur
addcee73fc Tutorial: Remove NS1 tutorial, change getting started guide to .js (#258) 2022-12-21 17:49:12 -05:00
Mughur
b004b7203d GENERAL: Reorganizing and grouping node multipliers (#259) 2022-12-21 17:39:12 -05:00
lucebac
5a86be8714 Update doc for ns.scp (#262) 2022-12-21 14:56:08 -05:00
David Walker
303c54c85c NETSCRIPT: Fix a typo in scp (#256) 2022-12-19 14:39:03 -05:00
omuretsu
5a66045e1d format fix 2022-12-13 09:13:15 -05:00
omuretsu
1dec0d00bd Add documentation for ns.pid 2022-12-13 09:09:12 -05:00
omuretsu
75d2d8b7e8 Add documentation for ns.pid 2022-12-13 09:08:23 -05:00
T.J. Eckman
52034ccedc NETSCRIPT: Add ns.pid variable for accessing the current script's PID (#255) 2022-12-13 09:07:15 -05:00
David Walker
f943e5d603 INFILTRATION: Change "slash" to "attack", less potential confusion (#251) 2022-12-13 08:28:56 -05:00
hydroflame
45221ead06 MISC: Remove google analytics (#253) 2022-12-13 08:28:08 -05:00
hydroflame
f039760690 Update blood donation counter 2022-12-09 15:46:56 -05:00
omuretsu
2489ec43fe Sidebar tweaks 2022-12-04 23:04:33 -05:00
David Walker
a46d34bd60 UI: Break SidebarRoot into smaller components, and memoize (#246) 2022-12-04 21:05:55 -05:00
David Walker
8d793ea271 Internal refactoring of Router (#241) 2022-12-04 03:14:06 -05:00
G4mingJon4s
897a1fbc8e Changed skill formatting from numeral to localeStr (#244) 2022-12-03 23:32:39 -05:00
G4mingJon4s
633296da15 Added check if factionWork is from faction of gang (#243) 2022-12-03 22:58:40 -05:00
David Walker
49f732d1ee Revert "Revert "Add keycode table and switch to event.code in select places" (#224)" (#242) 2022-12-03 22:56:42 -05:00
omuretsu
680027cd4b Fix update text for dev branch 2022-12-01 16:37:51 -05:00
Snarling
5ff2cd5357 VERSION: Update game version to 2.2 (#240)
Includes some bug fixes:
* Fix sleeve shock internal/display discrepancy (0-100 vs 0-100)
* Special error message if ns function called without a this
* Change whitespace to pre-wrap for dialog box.
* Fix bug where idle sleeves do not consume cycles but still recover shock from those cycles. Now they do not recover during idle.
* attempted to tag commit as v2.2.0
2022-12-01 16:07:46 -05:00
quacksouls
6034e1c3fa DOC: CORP: typo fixes in hire AdVert functions (#237) 2022-12-01 11:41:52 -05:00
Snarling
14e50e5533 Some corp fixes (#236) 2022-11-29 08:24:04 -05:00
David Walker
ce1879fb62 Add a test for basic Netscript functionality. (#235) 2022-11-29 07:32:08 -05:00
omuretsu
6a4d40ce2b Update docs 2022-11-28 10:44:04 -05:00
Snarling
0fb7200b4b STOCK: ns.stock.getOrganization added for getting org from stock symbol (#234)
Authored-by: SamuraiNinjaGuy <branmiller+bitburner@gmail.com>
2022-11-28 10:33:28 -05:00
Snarling
837c6bd1c2 CONTRACT: codingcontract.attempt always returns a string (#231)
* ns.codingcontract always returns a string (reward on success, empty on fail), simplifying usage and documentation of function.
* Because of the above, return value still works when used as a boolean, as long as no direct equality comparison to true/false.
* Documentation expanded and examples added.
Co-authored by @quacksouls
2022-11-28 09:15:09 -05:00
Snarling
6af36e3b29 NETSCRIPT: Faster API wrapping on script launch. (#229)
* ns API is wrapped once
* when a new workerscript is created, each layer of ns is stamped with a private workerscript field that allows the functions to work.
* Test has been refactored to account for new method of wrapping
* BREAKING: ns functions need access to `this` value of their parent ns layer (or any ns layer)
* Enums are passed directly to player (no cloning) but are frozen.
2022-11-28 09:11:55 -05:00
Burhanuddin Mustafa Lakdawala
675c2a0456 DOC: Update documentation for limitMaterialProduction and limitProductProduction (#221) 2022-11-26 21:06:47 -05:00
quacksouls
1ee71cea19 CORP: fix typos in research descriptions (#232)
Fix various typographical errors in the descriptions of research.
2022-11-26 21:05:01 -05:00
David Walker
70fadde222 Revert "Add keycode table and switch to event.code in select places" (#224)
Using code instead of key is strongly warned against at MDN and causes issues with nonstandard layouts:
https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event#keyboardevent.code

This also fixes ScriptEditorRoot.tsx, where some code snuck in that
wasn't using *any* of the constants.

This reverts commit 016a9a873f.
2022-11-26 08:51:09 -05:00
Burhanuddin Mustafa Lakdawala
f70a25d755 Fix spacing on 'Trade for reputation` button (#222) 2022-11-25 08:00:26 -05:00
Snarling
e17380549d Add ctrl-a support for logs (#228)
And prevent double line returns when copying logs
2022-11-24 13:04:06 -05:00
TheMas3212
533d8a4332 GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x
Add Tooltop to Corporation UI to explain bonus time (matching the one in
Gang UI)
Move corporation.process to the correct location
2022-11-25 00:45:30 +11:00
Snarling
e7fc0fbb03 Fix documentation for ns.sleeve (#227) 2022-11-24 08:19:51 -05:00
Snarling
6616f7ba15 DOCS: Update documentation for ns.args (#220) 2022-11-21 12:19:16 -05:00
Snarling
79fd5f6089 Fix ansi background spacing (#219) 2022-11-21 11:08:36 -05:00
omuretsu
387c0c2786 Fix save corruptions from invalid types 2022-11-20 12:39:08 -05:00
Snarling
65cd14e33b DOC: Add ns documentation for possible sleeve tasks (#217)
* Add specific types for sleeve tasks
* Moved LocationName enum to overall enums file
* Add LocationName enum to those provided to player
* remove trailing s on CompanyPosNames enum (now CompanyPosName, in line with LocationName)
* Also regenerated all ns documentation. This leads to an expected error when checking for generated files, because PRs should not normally touch markdown files. Also leads to a lint failure in generated file bitburner.d.ts
* also removed some exporting from NetscriptDefinitions.d.ts for anything that wasn't imported somewhere else.
2022-11-20 12:07:22 -05:00
Snarling
88d51e9a7e MISC: A bunch of enums stuff. (#212)
* Some game enums moved to utils/enums. Others can eventually be moved there as well.
* findEnumMember function for performing fuzzy matching of player input with enum members, without needing separate fuzzy functions for every enum.
* Also used findEnumMember for safely loading save games (allows case changes in enum values)
* Changed capitalization on some enums.
* BREAKING: removed classGains work formulas function
* Split ClassType enum into UniversityClassType and GymType.
* Added universityGains and gymGains work formulas functions
* Provided the new split enums to the player on ns.enums.
2022-11-20 08:37:11 -05:00
Snarling
629d610532 Update and rename deploy.yml to deploy-dev.yml 2022-11-20 08:16:22 -05:00
Snarling
c929806307 fix broken party math again 2022-11-20 07:56:58 -05:00
omuretsu
673c2d9f82 Fix broken partyMult default 2022-11-19 22:42:34 -05:00
Snarling
c669e473d1 SLEEVE: Fixed inconsistencies in how sleeve work rewards are handled. (#211) 2022-11-10 21:56:46 -05:00
Snarling
426ad5f296 Sleeve criming fix (#209)
Also simplify usage of findCrime
2022-11-10 11:05:42 -05:00
Snarling
82ba5f1f13 Ignore monaco cancellation errors (#208)
Also updated monaco-editor and @monaco-editor/react to latest versions since there were no conflicts.
2022-11-10 10:08:59 -05:00
Matt Garretson
3ec4f0c98c Fix HP gaining logic from defense skill levels (#205) 2022-11-09 22:06:27 -05:00
Snarling
b275f88053 NETSCRIPT: Expose more enums for player use (#198)
* Add support for enums at other ns layers
* APIWrapper: simplified wrapping algorithm and modified to just use cloneDeep to copy enums instead of recursively wrapping enums as if they were new API layers
* Improve APIWrapper typing
* Changed some typings at RamCostGenerator to allow for enums at different levels without enums needing a ram cost
* Added enums to ns.corporation, removed getter functions that were being used instead.
* Add FactionWorkType for player use
* Add ClassType and CompanyWorkPos enums
* Change netscriptDefinitions to expect members of these new enums where appropriate.
2022-11-09 13:46:21 -05:00
Snarling
8e0e0eaa88 NETSCRIPT: ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (#200)
* BREAKING CHANGE: Removed getSleeveStats and getSleeveInformation because this info is provided by getSleeve in a more usable form.
* BREAKING CHANGE: Removed tor, inBladeburner, and hasCorporation fields from ns.getPlayer. Functionality still exists via added functions ns.hasTorRouter, ns.corporation.hasCorporation, and ns.bladeburner.inBladeburner.
* Separated ns definitions for Person, Sleeve, and Player interfaces with both Player and Sleeve just extending Person.
Added getSleeve, which provides a Sleeve object similar to getPlayer.
* Renamed the sleeve ns layer's interface as sleeve lowercase because of name conflict. todo: May move all the ns layers interface names to lowercase for consistency
* Added ns.formulas.work.crimeSuccessChance and reworked to allow both sleeve and player calculations.
* Removed internal Person.getIntelligenceBonus function which was just a wrapper for calculateIntelligenceBonus. Any use of the former in formulas creates a conflict where ns-provided Person objects throw an error.
* Renamed helpers.player to helpers.person for netscript person validation. Reduced number of fields validated due to Person being a smaller interface.
* Fixed bug in bladeburner where Player multipliers and int were being used no matter which person was performing the task
* Fixed leak of Player.jobs at ns.getPlayer
* Person / Player / Sleeve classes now implement the netscript equivalent interfaces. Netscript helper for person no longer asserts that it's a real Person class member, only that it's a Person interface. Functions that use netscript persons have been changed to expect just a person interface to prevent needing this incorrect type assertion.
2022-11-09 07:26:26 -05:00
Snarling
6f08aee8f6 Fix zombie scripts (#203)
Also made installAugmentations synchronously perform reset, but added a short timeout to the callback script launch for balance.
2022-11-08 12:17:34 -05:00
Snarling
01b131526a Rework coffee/party (#201)
* Removed unused partyEmployees and coffeeEmployees members of OfficeSpace
* Reworked formula for performance loss per market cycle.
* Rework both coffee and party formulas to allow easier recovery from low values.
2022-11-07 09:09:53 -05:00
quacksouls
8367b68f46 CORPORATION: typo fixes in modals to sell materials and products (#197) 2022-11-06 21:36:38 -05:00
Rai
c17af3ad35 UI: SoftResetButton.tsx Tooltip changed to make more sense (#186) 2022-11-06 17:30:01 -05:00
quacksouls
83730d89fd UI: use newline to separate sentences in popup message (#188) 2022-11-06 17:27:40 -05:00
Snarling
9e869bc876 NETSCRIPT: Add ns.formulas.work.companyGains function (#195)
* added ns.formulas.work.companyGains.
* Removed Work/Formulas folder, added Work/Formulas.ts
* CompanyPosition.calculateJobPerformance now takes in a Person instead of taking in a full set of stats, and it takes INT into account.
* formulas.crimeGains takes in a person object.
* Renamed ns Player type to Person.
* added multWorkStats, which multiplies a WorkStats object with a multipliers object.
* Remove unused types in NetscriptDefinitons.d.ts
* reuse formulas code in other parts of game
* getSleeveInformation also returns skills

Co-authored-by: Alexey <alexey.kozhemiakin@gmail.com>
2022-11-06 17:27:04 -05:00
Snarling
5205ff2837 Remove unused error blocks (#194) 2022-11-04 08:08:06 -04:00
Snarling
7ef2675e2c Make writePort synchronous (#193) 2022-11-04 07:56:20 -04:00
quacksouls
55b2cbb549 UI: cat: proper line breaks when showing .js, .script, or .txt files (#192)
Currently, the HTML line break sequence `<br /><br />` is hardcoded into the dialog box message when showing the content of these file types: ".js", ".script", and ".txt".  By default, the function `dialogBoxCreate()` currently assumes that its first parameter is not HTML, but a text string, so whatever is in the string will appear in the dialog box.  Use the newline character instead for line break.
2022-11-04 07:23:33 -04:00
omuretsu
6ac04717fe Add missing line breaks on showMessage 2022-11-03 11:31:25 -04:00
omuretsu
e42b1c2edd lint 2022-11-03 08:46:01 -04:00
omuretsu
b057e2e5f2 Fix sleeves unable to commit crime 2022-11-03 08:39:34 -04:00
omuretsu
442a4f0198 update html-webpack-plugin version 2022-11-03 08:02:39 -04:00
LJ
9eb5f7ef23 NETSCRIPT: added portHandle.nextWrite() (#187) 2022-11-03 06:17:29 -04:00
Snarling
3ce4dcf612 DOC: Update documentation for workForFaction and workForCompany (#180)
* DOC: `ns.singularity.workForFaction()`: update doc and examples
* Additional Doc Fixes
* Remove unnecessary fluff in singularity.workForFaction examples
* Fix documentation for singularity.workForCompany similar to fixes already applied to workForFaction
* Correct some inaccuracies in workForFaction and workForCompany remarks sections
* Shorten some comment lines that are over 120 characters in NetscriptDefinitions.d.ts, for consistency.

Co-authored-by: Duck McSouls <quacksouls@gmail.com>
2022-11-01 12:24:25 -04:00
quacksouls
634611f9db DOC: Improve CCT documentation for HammingCodes (#167) 2022-10-30 04:24:09 -04:00
LJ
0519b6adf7 De-uglify ns.print examples (#164) 2022-10-28 17:20:01 -04:00
omuretsu
4bf215f241 Fix documentation build error 2022-10-27 07:04:46 -04:00
jaculler
a40aa1bab2 Fix Tutorial Ram Text (#162)
This updates the tutorial (and tests) to match the updated value of 8GB starting ram.
2022-10-27 06:25:45 -04:00
quacksouls
279d18d65f DOC: sleeve: typo fix (#161)
Some typographical fixes in the documentation of sleeves.
2022-10-26 23:30:40 -04:00
Snarling
239834dba6 Connect to owned servers from anywhere (#159)
* purchasedByPlayer allows connect-from-anywhere as if the server was backdoored.
* Also added optional backdoorInstalled variable to type for BaseServer. This has no runtime effect, but it allows accessing that variable without TS needing us to verify whether it's instanceof Server first.
2022-10-25 17:48:46 -04:00
omuretsu
8837c01d21 Tolerate & recover from null player money 2022-10-25 14:56:47 -04:00
omuretsu
d0820c81ce Recover from null moneyTracker
There shouldn't be any way to get null, but it was reported to occur and this will recover when this happens.
2022-10-25 14:37:25 -04:00
Snarling
959307aa13 CORP: Better fix for MP validation (#158)
* Prevent negative profit selling
* Update validation strings for MP
* Allow negative MP formula price
2022-10-25 12:51:03 -04:00
Snarling
5b2a96fa0c CORPORATION: Happiness/Energy/Morale trend down even for productive corps (#157) 2022-10-25 10:32:20 -04:00
Snarling
a79621612f Only allow one reference to MP in sell price (#156) 2022-10-25 08:51:37 -04:00
quacksouls
3f0a7786f8 DOC: cleanup in doc of Netscript functions (#155)
* A bunch of typographical fixes in the documentation of various Netscript functions.  A main fix is standardizing the use of "hostname".
* Cross-reference the documentation of various Netscript functions.  This makes it clear that we are referring to a particular Netscript function.
* Clarify the return values of various Netscript functions.  Clarify the documentation of other functions.
2022-10-25 07:17:53 -04:00
Snarling
5fe89d5599 CORPORATION: Reorganize Industry data (#154) 2022-10-24 21:54:54 -04:00
Snarling
d7193ca8ff fix negative time display (#153) 2022-10-24 20:09:10 -04:00
Snarling
df70458e4f CORPORATION: Give Employees some RNG (#152)
Authored-by: zerbosh <115591472+zerbosh@users.noreply.github.com>
2022-10-24 16:33:25 -04:00
G4mingJon4s
6dc5990b63 CORPORATION: Added check to buy amount (#149) 2022-10-24 16:09:53 -04:00
Snarling
d22d0a25ef DEV: Attempt new yml for deploy to gh pages (#150) 2022-10-24 09:51:22 -04:00
G4mingJon4s
3861e56ced CORPORATION: Check there is room to make a new product before opening popup. (#147) 2022-10-24 08:58:51 -04:00
quacksouls
e9e9ac1def DOC: CCT: typo fixes (#145)
Fixes #144.  Some typographical fixes in the description of a Coding Contract.
2022-10-24 08:46:26 -04:00
Snarling
0a3ff56331 WIP: Remove corp employees as objects (#143)
* Removed employees as objects from corporations
* Remove employees from office JSON after loading / convert to new parameters
* Showed down morale/etc gain; added optional position to hireEmployee
* enum support for corp employee positions

Mostly authored-by: Kelenius <kelenius@ya.ru>
2022-10-24 08:44:01 -04:00
Snarling
6095e63369 Remove bundle files (#140)
* bitburner-src is not running github pages, so a built version of the web app is not needed in git.
2022-10-24 08:05:30 -04:00
hydroflame
3d0bceb9ff round4 2022-10-22 00:48:31 -04:00
hydroflame
4a33ed87dd round3 2022-10-22 00:41:03 -04:00
hydroflame
1c9d97fe35 Trying more auto deploy 2022-10-22 00:35:12 -04:00
hydroflame
317c3c3fc4 Update NetscriptDefinitions.d.ts 2022-10-22 00:27:29 -04:00
hydroflame
7784c2f8b2 Update NetscriptDefinitions.d.ts 2022-10-22 00:23:10 -04:00
hydroflame
b4c791afe6 Delete deploy_dev.yml 2022-10-22 00:18:15 -04:00
hydroflame
7f5d887506 Trying to deploy on build 2022-10-22 00:17:58 -04:00
hydroflame
82caadfac6 Rename job 2022-10-21 23:59:07 -04:00
hydroflame
b94e3cd9d9 Update deploy_dev.yml
rm dev as onpush
2022-10-21 23:58:00 -04:00
hydroflame
353043347c Create deploy_dev.yml 2022-10-21 23:57:21 -04:00
Snarling
d74c380e42 WIP: Crimes streamlining. (#138)
* streamline crimes

* Crimes object is now indexed by CrimeType enum instead of an entirely new set of keys that aren't used for anything else. This eliminated a lot of instances of iterating to find the right crime for a given CrimeType.
* Removed unused `None` CrimeType which allowed typing Crimes as a Record<CrimeType, Crime>.
* Added slums tooltip text as a crime property, to allow streamlining slums.
* Refactor slums location - removed repetitive code, rerenders 1/sec to update chances
* Fix bugged descriptive text when sleeve is committing a crime (was "is attempting to DRUGS", now uses correct text e.g. "to deal drugs").
* Remove unused and now unneeded NewCrimeType enum. Values were identical to existing CrimeType values after removing unused None.

* Add CrimeType enum in NetscriptDefinition.d.ts

* Also update broken ToastVariant type. Better support for enums in player scripts.
* Still todo is modifying some NS functions to expect CrimeType as input (rough crime names will continue to work to avoid breaking scripts)

* Expect enum use for crime functions

Affected functions:
* ns.singularity.commitCrime
* ns.singularity.getCrimeChance
* ns.singularity.getCrimeStats
* ns.sleeve.setToCommitCrime
* formulas.work.crimeGains (param type only)

- Affected functions still will fall back to rough names, except formulas.work.crimeGains which already only accepted the enum members.
- Some documentation changes:
  * examples updated to use uppercase expected form.
  * Note on sleeve.setToCommitCrime that it only accepts exact matches removed. It already, and still does, accept any rough crime name (but the enum is expected input).
  * note about needing to use isBusy to schedule crimes remove - crimes autoloop now.
  * Since expected string inputs are documented directly on the type, removed list of crimes from sleeve.setToCommitCrimes
2022-10-21 11:57:37 -04:00
omuretsu
06a985bdf8 Revert "Remove markdown from git tracking (#139)"
This reverts commit bbb6e3f309.
2022-10-21 11:16:00 -04:00
Snarling
dab8c1a976 fix paths 2022-10-21 10:49:44 -04:00
Snarling
bbb6e3f309 Remove markdown from git tracking (#139)
* Will attempt to add as build artifacts using workflow.
2022-10-21 10:46:21 -04:00
Snarling
f5c8bec139 Create build.yml 2022-10-21 10:35:22 -04:00
Snarling
19e8946d9a fix Stock Initializer (#137)
* stock symbols initializer is called by stockmarket initializer
* remove redundant second initStockMarketFn function
2022-10-20 00:38:19 -04:00
Snarling
1d0d4f8da6 fix grow doc (#136) 2022-10-19 17:25:54 -04:00
Snarling
3af6e7db45 Remove incorrect note about disableLog (#135) 2022-10-19 17:20:31 -04:00
Snarling
2cc6e41a7e uncaught promises no longer spam console (#134) 2022-10-19 17:13:15 -04:00
Snarling
124e64379a Improve unexpected error message (#133)
* Add ws details if available
* Add likely cause of error
* Attempt to display error
2022-10-19 16:32:39 -04:00
Snarling
b6efe46d4c slashGame fix (#132)
* difficulty scales correct phase
* player loses game immediately after guard attacks
2022-10-19 15:24:29 -04:00
Snarling
ab70591a35 Merge pull request #2 from bitburner-official/fix-test
MISC: Fix alias not working in test suite
2022-10-19 13:39:39 -04:00
Olivier Gagnon
af1a1ac58d Rename lots of reference from old to new repo 2022-10-20 03:56:59 +11:00
Olivier Gagnon
887f57f460 Fix alias not working in test suite 2022-10-19 12:45:40 -04:00
hydroflame
cb45034a24 Merge pull request #4241 from quacksouls/ns-lint
NETSCRIPT: remove unused variables
2022-10-19 11:46:23 -04:00
hydroflame
0f46d72a01 Merge pull request #4245 from dbachran/4239-adjust-write-documentation
MISC: Adjust write() documentation, only accepts strings now
2022-10-19 11:46:08 -04:00
hydroflame
51f8d29e7a Merge pull request #4247 from quacksouls/doc-prompt
DOC: `ns.prompt()`: some cleanup and examples
2022-10-19 11:45:49 -04:00
hydroflame
532b32c51a Merge pull request #4248 from borisflagell/hospital
UI: #4242 Fix hospital ReactComponent
2022-10-19 11:45:20 -04:00
hydroflame
1b7b4fa466 Merge pull request #4249 from Snarling/typeAssertion
NETSCRIPT: Fix ns.prompt typechecking
2022-10-19 11:44:59 -04:00
hydroflame
b25b4b5e27 Merge pull request #4255 from quacksouls/doc-gang-canRecruitMember
DOC: `gang.canRecruitMember()`: typo fix and elaboration
2022-10-19 11:44:03 -04:00
Duck McSouls
6f1822bf4d DOC: gang.canRecruitMember(): when this returns true or false
Elaborate on the conditions under which the function would return true or false.  In particular, after a gang is successfully created the function always return true so the player can recruit a number of founding members to their gang.  When the gang is at capacity, the function always return false.  In between, the function returns true or false depending on the amount of respect the player has.
2022-10-16 18:34:34 +11:00
Duck McSouls
ac0e7c9595 DOC: gang.canRecruitMember(): typo fixes
Some typographical fixes.
2022-10-16 17:56:45 +11:00
Duck McSouls
93090691b5 DOC: ns.prompt(): some examples
Add some examples to illustrate the use of the various options.  As per suggestion by @Snarling, simplify the examples on free-form text box and drop-down list.
2022-10-15 11:27:56 +11:00
Duck McSouls
473e6a2674 DOC: ns.prompt(): explain the various options
Elaborate on the effects of `options.type` and `options.choices`.  Break the explanation into bullet points for clearer presentation.  Thanks to @Snarling for pointing out that the default is to create a boolean dialog box.
2022-10-15 11:03:36 +11:00
omuretsu
9908f4aaa5 Error message fixes 2022-10-14 11:08:24 -04:00
omuretsu
7683990d17 format and lint 2022-10-14 11:03:50 -04:00
omuretsu
ad0be471ce fix ns.prompt typechecking
Introduced some new type assertion functions, initial step in larger type safety rework.
2022-10-14 11:00:29 -04:00
borisflagell
baa149fa80 Update HospitalLocation.tsx
Add auto-refreshing to the component
2022-10-14 14:13:53 +03:00
borisflagell
1b61ec0e12 Update HospitalLocation.tsx 2022-10-14 13:59:56 +03:00
Duck McSouls
a368c6904e DOC: ns.prompt(): a typo fix
A simple typographical fix.
2022-10-14 14:50:35 +11:00
Daniel Bachran
5acd5e84a3 #4239 Adjust write() documentation
write() only accepts strings now.
2022-10-13 17:45:40 +02:00
Duck McSouls
67062bceab NETSCRIPT: remove unused variables
Running `npm run lint` shows that 2 variables are unused: `MoneySource as IMoneySource` and `MoneySources as IMoneySources`.  Remove these unused variables.
2022-10-13 20:18:42 +11:00
728 changed files with 11456 additions and 10918 deletions

85
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
name: Build
on:
workflow_dispatch:
inputs:
buildApp:
description: "Include Application Build"
type: boolean
default: "true"
required: true
buildDoc:
description: "Include Documentation Build"
type: boolean
default: "true"
required: true
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Use Node.js 16.13.1
uses: actions/setup-node@v2
with:
node-version: 16.13.1
cache: "npm"
- name: Install NPM dependencies
run: npm ci
- name: Build Production App
if: ${{ github.event.inputs.buildApp == 'true' }}
run: npm run build
- uses: actions/upload-artifact@v3
if: ${{ github.event.inputs.buildApp == 'true' }}
with:
name: app
path: |
dist/main.bundle.js
dist/main.bundle.js.map
dist/vendor.bundle.js
dist/vendor.bundle.js.map
index.html
expire-on: never
- name: Build Documentation
if: ${{ github.event.inputs.buildDoc == 'true' }}
run: npm run doc
- uses: actions/upload-artifact@v3
if: ${{ github.event.inputs.buildDoc == 'true' }}
with:
name: markdown
path: markdown/
expire-on: never
deploy:
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
with:
artifact_name: app

View File

@@ -64,7 +64,7 @@ jobs:
echo "" >> comment.txt
echo "Please do not commit files generated by webpack or generated markdown" >> comment.txt
echo "" >> comment.txt
echo "See [CONTRIBUTING.md](https://github.com/danielyxie/bitburner/blob/dev/doc/CONTRIBUTING.md) for details." >> comment.txt
echo "See [CONTRIBUTING.md](https://github.com/bitburner-official/bitburner-src/blob/dev/doc/CONTRIBUTING.md) for details." >> comment.txt
body=$(cat comment.txt)
body="${body//'%'/'%25'}"

35
.github/workflows/deploy-dev.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: "Deploy new dev build"
on:
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v1
with:
path: "."
- name: Deploy to gh pages
id: deployment
uses: actions/deploy-pages@v1

3
.gitignore vendored
View File

@@ -20,3 +20,6 @@ Netburner.txt
.vscode
.idea/
*.bundle.*
index.html
tsdoc-metadata.json

View File

@@ -13,3 +13,4 @@ markdown
package.json
package.lock.json
tsdoc-metadata.json

View File

@@ -2,7 +2,7 @@
[![Join Discord](https://img.shields.io/discord/415207508303544321)](https://discord.gg/TFc3hKD)
[![Build Status](https://github.com/danielyxie/bitburner/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/danielyxie/bitburner/actions/workflows/ci.yml)
[![Build Status](https://github.com/bitburner-official/bitburner-src/actions/workflows/ci.yml/badge.svg?branch=dev)](https://github.com/bitburner-official/bitburner-src/actions/workflows/ci.yml)
Bitburner is a programming-based [incremental game](https://en.wikipedia.org/wiki/Incremental_game)
that revolves around hacking and cyberpunk themes.

2075
dist/bitburner.d.ts vendored

File diff suppressed because it is too large Load Diff

22
dist/main.bundle.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

313
dist/vendor.bundle.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -13,25 +13,25 @@ heard:
between all members of the community. Regular players, heavy scripters,
Bitburner contributors, and everyone in between can be found on the
server.
- [Github Issues](https://github.com/danielyxie/bitburner/issues).
- [Github Issues](https://github.com/bitburner-official/bitburner-src/issues).
Although the term "issues" can have a negative connotation, they are a
means of communicating with the community. A new Issue can be an
interesting new feature that you feel would improve the game. It could be
an unexpected behavior within the game. Or because the game is about
scripting perhaps there is something that is conflicting with the
browser's JavaScript interaction. So please do not be afraid to open a
[new Issue](https://github.com/danielyxie/bitburner/issues/new).
[new Issue](https://github.com/bitburner-official/bitburner-src/issues/new).
## Reporting Bugs
The recommended method for reporting a bug is by opening a
[Github Issue](https://github.com/danielyxie/bitburner/issues).
[Github Issue](https://github.com/bitburner-official/bitburner-src/issues).
Alternatively, you can post a bug by creating a post on the
[game's subreddit](https://www.reddit.com/r/Bitburner/).
Before submitting a bug report, please check to make sure the bug has not
already been reported as an [Issue](https://github.com/danielyxie/bitburner/issues).
already been reported as an [Issue](https://github.com/bitburner-official/bitburner-src/issues).
#### How to Submit a Good Bug Report
@@ -50,8 +50,8 @@ already been reported as an [Issue](https://github.com/danielyxie/bitburner/issu
## As a Developer
Anyone is welcome to contribute to Bitburner code. However, please read
the [license](https://github.com/danielyxie/bitburner/blob/dev/license.txt)
and the [readme](https://github.com/danielyxie/bitburner/blob/dev/README.md)
the [license](https://github.com/bitburner-official/bitburner-src/blob/dev/license.txt)
and the [readme](https://github.com/bitburner-official/bitburner-src/blob/dev/README.md)
before doing so.
To contribute to Bitburner code, you will need to have
@@ -95,12 +95,12 @@ Clone and fork the game's repository by using one of these methods: web browser,
Desktop, or command line.
- Web browser. Log in to your GitHub account, navigate to the
[game's repository](https://github.com/danielyxie/bitburner), and fork the
[game's repository](https://github.com/bitburner-official/bitburner-src), and fork the
repository. Refer to
[this page](https://docs.github.com/en/get-started/quickstart/fork-a-repo) for more
detail.
- GitHub Desktop. Click on `File`, then click `Clone repository`. Click on the `URL`
tab and type `danielyxie/bitburner` into the text box for repository URL. Choose
tab and type `bitburner-official/bitburner-src` into the text box for repository URL. Choose
the path where you want to clone the repository and click the `Clone` button.
Refer to [this page](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop)
for more detail.
@@ -108,7 +108,7 @@ Desktop, or command line.
```sh
# This clones the game's code repository. The output you get might vary.
$ git clone https://github.com/danielyxie/bitburner.git
$ git clone https://github.com/bitburner-official/bitburner-src.git
Cloning into 'bitburner'...
remote: Enumerating objects: 57072, done.
remote: Counting objects: 100% (404/404), done.
@@ -119,7 +119,7 @@ Resolving deltas: 100% (43708/43708), done.
Updating files: 100% (2561/2561), done.
# Change to the directory that contains your local copy.
$ cd bitburner
$ cd bitburner-src
# The upstream is the repository that contains the game's source code. The
# upstream is also the place where proposed changes are merged into the game.
@@ -206,7 +206,7 @@ the following rules:
- Rebase your branch if necessary.
- Run the game locally to test out your changes.
- When submitting the pull request, make sure that the base fork is
_danielyxie/bitburner_ and the base is _dev_.
_bitburner-official/bitburner-src_ and the base is _dev_.
- If your changes affect the game's UI, attach some screenshots or GIFs showing
the changes to the UI.
- If your changes affect Netscript, provide some
@@ -236,7 +236,7 @@ rules:
repository](../../../tree/dev).
- Rebase your branch if necessary.
- When submitting the pull request, make sure that the base fork is
_danielyxie/bitburner_ and the base is _dev_.
_bitburner-official/bitburner-src_ and the base is _dev_.
- Do not check in any generated files under `doc\`. The documentation is built
automatically by ReadTheDocs.

View File

@@ -3,6 +3,6 @@ Hi there, hello
It looks like you found a page that doesn't exist!
If you're looking for documentation of the netscript API. It moved `here <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.ns.md>`_.
If you're looking for documentation of the netscript API. It moved `here <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md>`_.
That documentation is autogenerated and therefore is much easier to maintain.

View File

@@ -32,7 +32,7 @@ Nodes are significantly less profitable. Servers have less money on them and low
growth rates, but it is easier to lower their security level using the weaken() Netscript function.
Furthermore, some BitNodes introduce new content and mechanics. For example there is one
BitNode that grants access to the `Singularity API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.singularity.md>`_.
BitNode that grants access to the `Singularity API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md>`_.
There is another BitNode in which you can manage a gang to earn money and reputation.
.. _gameplay_bitnodes_howtodestroy:

View File

@@ -37,7 +37,7 @@ Obtaining Duplicate Sleeves
~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are two methods of obtaining Duplicate Sleeves:
1. Destroy BitNode-10. Each completion give you one additional Duplicate Sleeve
1. Destroy BitNode-10. Each completion gives you one additional Duplicate Sleeve.
2. Purchase Duplicate Sleeves from :ref:`the faction The Covenant <gameplay_factions>`.
This is only available in BitNode-10. Sleeves purchased this way are **permanent** (they persist
through BitNodes). You can purchase up to 5 Duplicate Sleeves from The Covenant.
@@ -45,7 +45,7 @@ There are two methods of obtaining Duplicate Sleeves:
Synchronization
~~~~~~~~~~~~~~~
Synchronization is a measure of how aligned your consciousness is with that of your
Duplicate Sleeves. It is a numeral value between 1 and 100, and it affects how much experience
Duplicate Sleeves. It is a numerical value between 1 and 100, and it affects how much experience
is earned when the sleeve is performing a task.
Let N be the sleeve's synchronization. When the sleeve earns experience by performing
@@ -58,7 +58,7 @@ Synchronization can be increased by assigning sleeves to the 'Synchronize' task.
Sleeve Shock
~~~~~~~~~~~~
Sleeve shock is a measure of how much trauma the sleeve has due to being placed in a new
body. It is a numeral value between 0 and 99, where 99 indicates full shock and 0 indicates
body. It is a numerical value between 0 and 99, where 99 indicates full shock and 0 indicates
no shock. Shock affects the amount of experience earned by the sleeve.
Sleeve shock slowly decreases over time. You can further increase the rate at which
@@ -67,13 +67,13 @@ it decreases by assigning sleeves to the 'Shock Recovery' task.
Augmentations
~~~~~~~~~~~~~
You can purchase :ref:`Augmentations <gameplay_augmentations>` for your Duplicate
Sleeves. In order to do this, the Sleeve's Shock must be at 0. Any Augmentation
Sleeves. In order to do this, the sleeve's shock must be at 0. Any Augmentation
that is currently available to you through a faction is also available for your
Duplicate Sleeves. There are a few Augmentations, such as NeuroFlux Governor and
Bladeburner-specific ones, that cannot be purchased for a Duplicate Sleeve.
When you purchase an Augmentation for a Duplicate Sleeve, it is instantly installed.
When this happens, the Sleeve's stats are instantly reset back to 0, similar to
When this happens, the sleeve's stats are instantly reset back to 0, similar to
when you normally install Augmentations.
The cost of purchasing an Augmentation for a Duplicate Sleeve is **not** affected
@@ -81,7 +81,7 @@ by how many Augmentations you have purchased for yourself, and vice versa.
Memory
~~~~~~
Sleeve memory dictates what a sleeve's synchronization will be when its reset by
Sleeve memory dictates what a sleeve's synchronization will be when it is reset by
switching BitNodes. For example, if a sleeve has a memory of 10, then when you
switch BitNodes its synchronization will initially be set to 10, rather than 1.

View File

@@ -38,11 +38,11 @@ List of all Source-Files
|| || * Increases all of the player's level and experience gain rate multipliers for |
|| || combat stats by 8%/12%/14%. |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| BitNode-7: Bladeburners 2079 || * Allows the player to access the `Bladeburner API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.bladeburner.md>`_ in other BitNodes. |
|| BitNode-7: Bladeburners 2079 || * Allows the player to access the `Bladeburner API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md>`_ in other BitNodes. |
|| || * Increases all of the player's Bladeburner multipliers by 8%/12%/14%. |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| BitNode-8: Ghost of Wall Street || * Increases the player's hacking growth multiplier by 12%/18%/21%. |
|| || * Level 1 grants permanent access to :ref:`WSE <gameplay_stock_market>` and the `TIX API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.tix.md>`_ |
|| || * Level 1 grants permanent access to :ref:`WSE <gameplay_stock_market>` and the `TIX API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md>`_ |
|| || * Level 2 grants permanent access to shorting stocks. |
|| || * Level 3 grants permanent access to use limit/stop orders. |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -52,7 +52,7 @@ List of all Source-Files
|| || will be lost after installing augments). |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| BitNode-10: Digital Carbon || * Each level of this grants a Duplicate Sleeve. |
|| || * Allows the player to access the `Sleeve API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.sleeve.md>`_ in other BitNodes. |
|| || * Allows the player to access the `Sleeve API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.sleeve.md>`_ in other BitNodes. |
|| || * Grants the player access to the VitaLife secret laboratory in other BitNodes. Also grants access to the Grafting API. |
+-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|| BitNode-11: The Big Crash || * Company favor increases both the player's salary and reputation gain at that |

View File

@@ -7,7 +7,7 @@ exchange for solving programming problems.
Coding Contracts are files with the ".cct" extensions. They can
be accessed through the :ref:`terminal` or through scripts using
the `Coding Contract API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.codingcontract.md>`_
the `Coding Contract API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md>`_
Each contract has a limited number of attempts. If you
provide the wrong answer too many times and exceed the
@@ -31,7 +31,7 @@ an area to provide an answer.
Interacting through Scripts
^^^^^^^^^^^^^^^^^^^^^^^^^^^
See the `Coding Contract API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.codingcontract.md>`_.
See the `Coding Contract API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.codingcontract.md>`_.
Interacting with Coding Contracts via the Terminal can be tedious the more
contracts you solve. Consider using the API to automate various aspects of
your solution. For example, some contracts have long solutions while others
@@ -272,8 +272,9 @@ The list contains the name of (i.e. the value returned by
| HammingCodes: Integer to Encoded Binary | | You are given a decimal value. |
| | | Convert it into a binary string and encode it as a 'Hamming-Code'. eg: |
| | | Value 8 will result into binary '1000', which will be encoded |
| | | with the pattern 'pppdpddd', where p is a paritybit and d a databit, |
| | | or '10101' (Value 21) will result into (pppdpdddpd) '1001101011'. |
| | | with the pattern 'pppdpddd', where p is a paritybit and d a databit. The encoding of |
| | | 8 is 11110000. As another example, '10101' (Value 21) will result into (pppdpdddpd) |
| | | '1001101011'. |
| | | NOTE: You need an parity Bit on Index 0 as an 'overall'-paritybit. |
| | | NOTE 2: You should watch the HammingCode-video from 3Blue1Brown, which |
| | | explains the 'rule' of encoding, |
@@ -286,7 +287,7 @@ The list contains the name of (i.e. the value returned by
| | | Treat it as a Hammingcode with 1 'possible' error on an random Index. |
| | | Find the 'possible' wrong bit, fix it and extract the decimal value, which is |
| | | hidden inside the string.\n\n", |
| | | Note: The length of the binary string is dynamic, but it's encoding/decoding is |
| | | Note: The length of the binary string is dynamic, but its encoding/decoding is |
| | | following Hammings 'rule'\n", |
| | | Note 2: Index 0 is an 'overall' parity bit. Watch the Hammingcode-video from |
| | | 3Blue1Brown for more information\n", |

View File

@@ -180,7 +180,7 @@ Working for a Company
Automating the Stock Market
---------------------------
You can write scripts to perform automatic and algorithmic trading on the Stock Market.
See `TIX API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.tix.md>`_ for more details.
See `TIX API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.tix.md>`_ for more details.
Under the Hood
--------------

View File

@@ -573,7 +573,7 @@ Note that will not be possible to download data from many websites because they
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
$ wget https://raw.githubusercontent.com/bitburner-official/bitburner-src/master/README.md game_readme.txt
Argument Parsing
----------------

View File

@@ -3,6 +3,179 @@
Changelog
=========
v2.2.0 - Jan 2 2023 Development Reboot
--------------------------------------
Dev notes
* The previous main developer, hydroflame, is stepping back from this project for the foreseeable future.
To facilitate this, we've moved the repo to a new location at https://github.com/bitburner-official/bitburner-src.
* Sorry for the large number of API breaks in this version. To ease the pain here, attempting to use any of the
removed functions will provide an error guiding you to the new replacement function to use instead.
BREAKING API CHANGES:
* (ns2 only) ns functions use the 'this' value from ns: if you move the function to its own variable off of ns, it
needs to be bound to ns. e.g.:
const tprint1 = ns.tprint; // This doesn't work and will error out when calling tprint1();
const tprint = ns.tprint.bind(ns); // This works because the 'this' value is preserved.
The internal changes that make this necessary led to very large performance gains for running many scripts at once.
* ns.getPlayer no longer provides properties tor, inBladeburner, or hasCorporation. This information can be looked
up using standlone functions: ns.hasTorRouter(), ns.bladeburner.inBladeburner(), ns.corporation.hasCorporation().
* Removed many functions, with replacement ways to get the same info.
getServerRam: use getServerMaxRam and getServerUsedRam instead.
corporation.assignJob: use setAutoJobAssignment instead.
corporation.getEmployee: No longer available (employees are not individual objects).
corporation.getExpandCityCost: use ns.corporation.getConstants().officeInitialCost
corporation.getExpandIndustryCost: use getIndustryData instead.
corporation.getIndustryTypes: use ns.corporation.getConstants().industryNames
corporation.getMaterialNames: use ns.corporation.getConstants().materialNames
corporation.getPurchaseWarehouseCost: use ns.corporation.getConstants().warehouseInitialCost
corporation.getResearchNames: use ns.corporation.getConstants().researchNames
corporation.getUnlockables: use ns.corporation.getConstants().unlockNames
corporation.getUpgradeNames: use ns.corporation.getConstants().upgradeNames
formulas.work.classGains: split into universityGains and gymGains
singularity.getAugmentationCost: use getAugmentationPrice and getAugmentationRepReq instead
sleeve.getSleeveStats: use getSleeve instead
sleeve.getInformation: use getSleeve instead
* An error dialog will inform the player of the above API changes if the player tries to use one of the
removed functions above.
* enums.toast was renamed ToastVariant to provide consistency with internal code.
* codingcontract.attempt always returns a string (empty string for a failed attempt). This may break player code
if a direct boolean comparison (e.g. 'attemptResult === true') was being made. The string can be used directly as
the conditional, because empty string evaluates to false as a boolean.
* corporation.getCorporation().divisions now returns an array of division names, instead of division objects. Use
corporation.getDivision(name) to get the division info object.
DEVELOPMENT
* Development repo moved to https://github.com/bitburner-official/bitburner-src
* Dev version available on web at https://bitburner-official.github.io/bitburner-src/
* Development is active again for non-bugfix.
* A bunch of fixes, setup, and assistance related to moving to a new repo (@hydroflame)
TUTORIAL
* Removed NS1/NS2 selection. Tutorial now only references .js files (NS1 is essentially deprecated) (@Mughur)
* Fix Ram Text (by @jaculler)
NETSCRIPT
* More enums and more types are exposed to the player instead of "magic strings"
* Added ns.pid property to access a script's PID without a function call. (@jeek)
* Much faster API wrapping on script launch. (@d0sboots) To support this, ns functions need to keep their "this"
value from their parent object.
* Expose more enums for player use under ns.enums (@Snarling)
* tFormat: Fix display for negative time
* ns.getPlayer: removed tor, inBladeburner, and hasCorporation properties
* Added ns.hasTorRouter() function.
* CODING CONTRACT
* ns.codingcontract.attempt always returns a string. (@Snarling)
* CORPORATION
* Removed ns.corporation.getEmployee and ns.corporation.assignJob, due to employees no longer being objects.
* Added ns.corporation.hasCorporation();
* Reworked how ram costs are applied for corporation.
* FORMULAS
* ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and
ns.formulas.work.gymGains (@Snarling)
* Add ns.formulas.work.companyGains function (@AlexeyKozhemiakin)
* PORTS
* added portHandle.nextWrite() (@LJNeon)
* Make ns.writePort synchronous (@Snarling)
* SLEEVE
* ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (@Snarling)
* getSleeve also includes storedCycles (i.e. bonusTime) (@zerbosh)
* STOCK
* ns.stock.getOrganization added for getting org from stock symbol (@SamuraiNinjaGuy)
SCRIPTS
* Fixed bug where zombie scripts could be created after a soft reset (@Snarling)
* Scripts now have a maximum ram cost of 1024GB per thread.
SCRIPT LOGS
* Add ctrl-a support for selecting all text in tail window (@Snarling)
CORPORATION
* Remove corp employees as objects (by @Kelenius)
* API access is provided automatically if the player is in BN3. (@zerbosh)
* Happiness/Energy/Morale trend down even for productive corps (by @Snarling)
* Typo fixes in modals to sell materials and products (by @quacksouls)
* Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)
* Internal reorganization of Industry data (by @Snarling)
* Added check to material buy amount (by @G4mingJon4s)
* Check there is room to make a new product before opening popup. (by @G4mingJon4s)
* Fix typos in research descriptions (by @quacksouls)
SLEEVE
* Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)
* Fix bug that prevented selecting some crimes from UI. (by @Snarling)
* Internally shock starts at 100 and lowers to 0. Previously this was backwards.
STOCKMARKET
* Fix broken initializer when manually buying WSE access (by @Snarling)
TERMINAL
* Added changelog command to re-display the changelog dialog.
* Connect command will connect to player owned servers from anywhere. (by @Snarling)
UI
* Improve UI performance of sidebar and character overview using memoization (@d0sboots)
* Other UI additions / improvements (@Mughur, @d0sboots, probably others)
* Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)
* Fix spacing on ANSI background escape codes (by @Snarling)
* Fix several instances where newlines were not being displayed properly (by @quacksouls)
* SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)
* GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)
* Change formatting for skill levels to use localeStr (@G4mingJon4s)
DOC
* Fix incorrect examples for grow (by @quacksouls)
* Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)
* Add ns documentation for possible sleeve tasks (by @Snarling)
* Update documentation for workForFaction and workForCompany (by @quacksouls)
* Improve CCT documentation for HammingCodes (by @quacksouls)
* cleanup in doc of Netscript functions (by @quacksouls)
* Various other doc fixes (by @quacksouls)
* Update documentation for ns.args (by @Snarling)
* De-uglify ns.print examples (by @LJNeon)
STATS
* Fix logic for increasing HP based on defense skill levels (by @mattgarretson)
* Fix a bug where HP could be something other than max after a bitnode reset.
INFILTRATION
* Fix SlashGame scaling. (by @Snarling)
GANG
* When starting a gang, any in progress work with that faction will end. (@G4mingJon4s)
MISC
* Lots of typesafety improvements with internal code
* Remove google analytics (@hydroflame)
* Some error handling streamlining (by @Snarling)
* fix: check both ts and js source now (by @Tanimodori)
* chore: sync version in package-lock.json (by @Tanimodori)
* Better safety when loading game for multiple save corruption issues (by @Snarling)
* Nerf Noodle bar
v2.1.0 - 2022-09-23 Remote File API
-----------------------------------

View File

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

View File

@@ -70,4 +70,4 @@ Bug
---
Otherwise, the game is probably frozen/stuck due to a bug. To report a bug, follow
the guidelines `here <https://github.com/danielyxie/bitburner/blob/master/doc/CONTRIBUTING.md#reporting-bugs>`_.
the guidelines `here <https://github.com/bitburner-official/bitburner-src/blob/master/doc/CONTRIBUTING.md#reporting-bugs>`_.

View File

@@ -28,7 +28,7 @@ entire "quest-line".
First Steps
-----------
I'm going to assume you followed the introductory tutorial when you first began the game.
In this introductory tutorial you created a script called :code:`n00dles.script` and ran it
In this introductory tutorial you created a script called :code:`n00dles.js` and ran it
on the :code:`n00dles` server. Right now, we'll kill this script. There are two ways
to do this:
@@ -37,7 +37,7 @@ to do this:
$ kill n00dles.script
2. You can go to the :code:`Active Scripts` page (|Keyboard shortcut| Alt + s) and
press the "Kill Script" button for :code:`n00dles.script`.
press the "Kill Script" button for :code:`n00dles.js`.
If you skipped the introductory tutorial, then ignore the part above. Instead, go to the
:code:`Hacknet Nodes` page (|Keyboard shortcut| Alt + h) and purchase a
@@ -67,11 +67,11 @@ the amount of money available on a server. The :js:func:`weaken` Netscript funct
used to decrease a server's security level.
Now let's move on to actually creating the script.
Go to your home computer and then create a script called :code:`early-hack-template.script` by
Go to your home computer and then create a script called :code:`early-hack-template.js` by
going to Terminal and entering the following two commands::
$ home
$ nano early-hack-template.script
$ nano early-hack-template.js
This will take you to the script editor, which you can use to code and create
:ref:`gameplay_scripts`. It will be helpful to consult the :ref:`netscript` documentation.
@@ -80,49 +80,50 @@ Specifically, you'll want to take a look at :ref:`netscriptfunctions`.
Enter the following code in the script editor:
.. code:: javascript
/** @param {NS} ns */
export async function main(ns) {
// Defines the "target server", which is the server
// that we're going to hack. In this case, it's "n00dles"
const target = "n00dles";
// Defines the "target server", which is the server
// that we're going to hack. In this case, it's "n00dles"
var target = "n00dles";
// Defines how much money a server should have before we hack it
// In this case, it is set to 75% of the server's max money
const moneyThresh = ns.getServerMaxMoney(target) * 0.75;
// Defines how much money a server should have before we hack it
// In this case, it is set to 75% of the server's max money
var moneyThresh = getServerMaxMoney(target) * 0.75;
// Defines the maximum security level the target server can
// have. If the target's security level is higher than this,
// we'll weaken it before doing anything else
const securityThresh = ns.getServerMinSecurityLevel(target) + 5;
// Defines the maximum security level the target server can
// have. If the target's security level is higher than this,
// we'll weaken it before doing anything else
var securityThresh = getServerMinSecurityLevel(target) + 5;
// If we have the BruteSSH.exe program, use it to open the SSH Port
// on the target server
if (ns.fileExists("BruteSSH.exe", "home")) {
ns.brutessh(target);
}
// If we have the BruteSSH.exe program, use it to open the SSH Port
// on the target server
if (fileExists("BruteSSH.exe", "home")) {
brutessh(target);
}
// Get root access to target server
ns.nuke(target);
// Get root access to target server
nuke(target);
// Infinite loop that continously hacks/grows/weakens the target server
while(true) {
if (getServerSecurityLevel(target) > securityThresh) {
// If the server's security level is above our threshold, weaken it
weaken(target);
} else if (getServerMoneyAvailable(target) < moneyThresh) {
// If the server's money is less than our threshold, grow it
grow(target);
} else {
// Otherwise, hack it
hack(target);
// Infinite loop that continously hacks/grows/weakens the target server
while(true) {
if (ns.getServerSecurityLevel(target) > securityThresh) {
// If the server's security level is above our threshold, weaken it
await ns.weaken(target);
} else if (ns.getServerMoneyAvailable(target) < moneyThresh) {
// If the server's money is less than our threshold, grow it
await ns.grow(target);
} else {
// Otherwise, hack it
await ns.hack(target);
}
}
}
The script above contains comments that document what it does, but let's go through it
step-by-step anyways.
.. code:: javascript
var target = "n00dles";
const target = "n00dles";
This first command defines a string which contains our target server. That's the server
that we're going to hack. For now, it's set to `n00dles` because that's the only
@@ -132,7 +133,7 @@ variable to be the hostname of another server.
.. code:: javascript
var moneyThresh = getServerMaxMoney(target) * 0.75;
const moneyThresh = ns.getServerMaxMoney(target) * 0.75;
This second command defines a numerical value representing the minimum
amount of money that must be available on the target server in order for our script
@@ -143,7 +144,7 @@ The :js:func:`getServerMaxMoney` Netscript function is used to find this value
.. code:: javascript
var securityThresh = getServerMinSecurityLevel(target) + 5;
const securityThresh = ns.getServerMinSecurityLevel(target) + 5;
This third command defines a numerical value representing the maximum security level
the target server can have. If the target server's security level is higher than
@@ -151,11 +152,11 @@ this value, then our script will :js:func:`weaken` the script before doing anyth
.. code:: javascript
if (fileExists("BruteSSH.exe", "home")) {
brutessh(target);
if (ns.fileExists("BruteSSH.exe", "home")) {
ns.brutessh(target);
}
nuke(target);
ns.nuke(target);
This section of code is used to gain root access on the target server. This is
necessary for hacking. See :ref:`here for more details <gameplay_hacking>`.
@@ -163,15 +164,15 @@ necessary for hacking. See :ref:`here for more details <gameplay_hacking>`.
.. code:: javascript
while (true) {
if (getServerSecurityLevel(target) > securityThresh) {
if (ns.getServerSecurityLevel(target) > securityThresh) {
// If the server's security level is above our threshold, weaken it
weaken(target);
} else if (getServerMoneyAvailable(target) < moneyThresh) {
await ns.weaken(target);
} else if (ns.getServerMoneyAvailable(target) < moneyThresh) {
// Otherwise, if the server's money is less than our threshold, grow it
grow(target);
await ns.grow(target);
} else {
// Otherwise, hack it
hack(target);
await ns.hack(target);
}
}
@@ -179,6 +180,12 @@ This is the main section that drives our script. It dictates the script's logic
and carries out the hacking operations. The `while (true)` creates an infinite loop
that will continuously run the hacking logic until the the script is killed.
The await keyword is needed for `hack` / `grow` / `weaken` because these commands take
time to execute, unlike the others. If you forget to await these commands, you will get
an exception saying you tried to do multiple things at once, because your code will
immediately finish the function call without waiting for the operation to be done. Also
important is that await can only be used in functions marked async (which main() is).
Running our Scripts
-------------------
Now we want to start running our hacking script so that it can start earning us
@@ -268,7 +275,7 @@ First, let's determine how many threads of our hacking script we can run.
The script we wrote
uses 2.6GB of RAM. You can check this using the following |Terminal| command::
$ mem early-hack-template.script
$ mem early-hack-template.js
This means we can run 6 threads on a 16GB server. Now, to run our scripts on all of these
servers, we have to do the following:
@@ -283,36 +290,36 @@ servers, we have to do the following:
Here's the sequence of |Terminal| commands I used in order to achieve this::
$ home
$ scp early-hack-template.script n00dles
$ scp early-hack-template.script sigma-cosmetics
$ scp early-hack-template.script joesguns
$ scp early-hack-template.script nectar-net
$ scp early-hack-template.script hong-fang-tea
$ scp early-hack-template.script harakiri-sushi
$ scp early-hack-template.js n00dles
$ scp early-hack-template.js sigma-cosmetics
$ scp early-hack-template.js joesguns
$ scp early-hack-template.js nectar-net
$ scp early-hack-template.js hong-fang-tea
$ scp early-hack-template.js harakiri-sushi
$ connect n00dles
$ run NUKE.exe
$ run early-hack-template.script -t 1
$ run early-hack-template.js -t 1
$ home
$ connect sigma-cosmetics
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ run early-hack-template.js -t 6
$ home
$ connect joesguns
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ run early-hack-template.js -t 6
$ home
$ connect hong-fang-tea
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ run early-hack-template.js -t 6
$ home
$ connect harakiri-sushi
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ run early-hack-template.js -t 6
$ home
$ connect hong-fang-tea
$ connect nectar-net
$ run NUKE.exe
$ run early-hack-template.script -t 6
$ run early-hack-template.js -t 6
.. note::
@@ -322,7 +329,7 @@ Here's the sequence of |Terminal| commands I used in order to achieve this::
This works for most commands in the game!
The :ref:`home_terminal_command` |Terminal| command is used to connect to the home
computer. When running our scripts with the :code:`run early-hack-template.script -t 6`
computer. When running our scripts with the :code:`run early-hack-template.js -t 6`
command, the :code:`-t 6` specifies that the script should be run with 6 threads.
Note that the |nectar-net| server isn't in the home computer's immediate network.
@@ -371,13 +378,13 @@ script to target :code:`joesguns` instead of :code:`n00dles`.
Go to |Terminal| and edit the hacking script by entering::
$ home
$ nano early-hack-template.script
$ nano early-hack-template.js
At the top of the script, change the `target` variable to be `joesguns`:
.. code:: javascript
var target = "joesguns";
const target = "joesguns";
Note that this will **NOT** affect any instances of the script that are already running.
This will only affect instances of the script that are ran from this point forward.
@@ -401,33 +408,38 @@ Netscript functions:
Create the script by going to |Terminal| and typing::
$ home
$ nano purchase-server-8gb.script
$ nano purchase-server-8gb.js
Paste the following code into the script editor:
.. code:: javascript
/** @param {NS} ns */
export async function main(ns) {
// How much RAM each purchased server will have. In this case, it'll
// be 8GB.
const ram = 8;
// How much RAM each purchased server will have. In this case, it'll
// be 8GB.
var ram = 8;
// Iterator we'll use for our loop
let i = 0;
// Iterator we'll use for our loop
var i = 0;
// Continuously try to purchase servers until we've reached the maximum
// amount of servers
while (i < getPurchasedServerLimit()) {
// Check if we have enough money to purchase a server
if (getServerMoneyAvailable("home") > getPurchasedServerCost(ram)) {
// If we have enough money, then:
// 1. Purchase the server
// 2. Copy our hacking script onto the newly-purchased server
// 3. Run our hacking script on the newly-purchased server with 3 threads
// 4. Increment our iterator to indicate that we've bought a new server
var hostname = purchaseServer("pserv-" + i, ram);
scp("early-hack-template.script", hostname);
exec("early-hack-template.script", hostname, 3);
++i;
// Continuously try to purchase servers until we've reached the maximum
// amount of servers
while (i < ns.getPurchasedServerLimit()) {
// Check if we have enough money to purchase a server
if (ns.getServerMoneyAvailable("home") > ns.getPurchasedServerCost(ram)) {
// If we have enough money, then:
// 1. Purchase the server
// 2. Copy our hacking script onto the newly-purchased server
// 3. Run our hacking script on the newly-purchased server with 3 threads
// 4. Increment our iterator to indicate that we've bought a new server
let hostname = ns.purchaseServer("pserv-" + i, ram);
ns.scp("early-hack-template.script", hostname);
ns.exec("early-hack-template.script", hostname, 3);
++i;
}
//Make the script wait for a second before looping again.
//Removing this line will cause an infinite loop and crash the game.
await ns.sleep(1000);
}
}
@@ -443,7 +455,7 @@ execute it on that server.
To run this script, go to |Terminal| and type::
$ run purchase-server-8gb.script
$ run purchase-server-8gb.js
This purchase will continuously run until it has purchased the maximum number of servers.
When this happens, it'll mean that you have a bunch of new servers that are all running
@@ -540,7 +552,7 @@ finish running. This will free up some RAM on your home computer. We don't want
to go to waste, so we'll make use of it. Go to |Terminal| and enter the following commands::
$ home
$ run early-hack-template.script -t 3
$ run early-hack-template.js -t 3
Reaching a Hacking Level of 50
------------------------------
@@ -680,10 +692,10 @@ All of these servers have 32GB of RAM. You can use the |Terminal| command
go to |Terminal| and run::
$ home
$ scp early-hack-template.script neo-net
$ scp early-hack-template.script zer0
$ scp early-hack-template.script max-hardware
$ scp early-hack-template.script iron-gym
$ scp early-hack-template.js neo-net
$ scp early-hack-template.js zer0
$ scp early-hack-template.js max-hardware
$ scp early-hack-template.js iron-gym
Since each of these servers has 32GB of RAM, we can run our hacking script with 12 threads
on each server. By now, you should know how to connect to servers. So find and connect to
@@ -691,7 +703,7 @@ each of the servers above using the :code:`scan-analyze 3` |Terminal| command. T
following |Terminal| command to run our hacking
script with 12 threads::
$ run early-hack-template.script -t 12
$ run early-hack-template.js -t 12
Remember that if you have the |AutoLink| program, you can simply click on the hostname of a server
after running :ref:`scan_analyze_terminal_command` to connect to it.
@@ -766,7 +778,7 @@ much more money, and then you can come back later on and get all these Augmentat
Right now, I suggest purchasing at the very least the :code:`Neurotrainer I` Augmentation from
|CyberSec|. If you have the money to spare, I would also suggest getting :code:`BitWire` and
several levels of the :code:`NeuroFlux Governor` Augmentations. Note that each time
several levels of the :code:`NeuroFlux Governor` (:code:`NFG`) Augmentations. Note that each time
you purchase an Augmentation,
:ref:`the price of purchasing another increases by 90% <gameplay_augmentations_purchasingmultiple>`,
so make sure you buy the most expensive Augmentation first. Don't worry, once you choose to
@@ -803,50 +815,51 @@ so you should write a script to automate the process. Here's a simple example fo
startup script. Feel free to adjust it to your liking.
.. code:: javascript
/** @param {NS} ns */
export async function main(ns) {
// Array of all servers that don't need any ports opened
// to gain root access. These have 16 GB of RAM
const servers0Port = ["sigma-cosmetics",
"joesguns",
"nectar-net",
"hong-fang-tea",
"harakiri-sushi"];
// Array of all servers that don't need any ports opened
// to gain root access. These have 16 GB of RAM
var servers0Port = ["sigma-cosmetics",
"joesguns",
"nectar-net",
"hong-fang-tea",
"harakiri-sushi"];
// Array of all servers that only need 1 port opened
// to gain root access. These have 32 GB of RAM
const servers1Port = ["neo-net",
"zer0",
"max-hardware",
"iron-gym"];
// Array of all servers that only need 1 port opened
// to gain root access. These have 32 GB of RAM
var servers1Port = ["neo-net",
"zer0",
"max-hardware",
"iron-gym"];
// Copy our scripts onto each server that requires 0 ports
// to gain root access. Then use nuke() to gain admin access and
// run the scripts.
for (let i = 0; i < servers0Port.length; ++i) {
const serv = servers0Port[i];
// Copy our scripts onto each server that requires 0 ports
// to gain root access. Then use nuke() to gain admin access and
// run the scripts.
for (var i = 0; i < servers0Port.length; ++i) {
var serv = servers0Port[i];
ns.scp("early-hack-template.script", serv);
ns.nuke(serv);
ns.exec("early-hack-template.script", serv, 6);
}
scp("early-hack-template.script", serv);
nuke(serv);
exec("early-hack-template.script", serv, 6);
// Wait until we acquire the "BruteSSH.exe" program
while (!ns.fileExists("BruteSSH.exe")) {
await ns.sleep(60000);
}
// Copy our scripts onto each server that requires 1 port
// to gain root access. Then use brutessh() and nuke()
// to gain admin access and run the scripts.
for (let i = 0; i < servers1Port.length; ++i) {
const serv = servers1Port[i];
ns.scp("early-hack-template.script", serv);
ns.brutessh(serv);
ns.nuke(serv);
ns.exec("early-hack-template.script", serv, 12);
}
}
// Wait until we acquire the "BruteSSH.exe" program
while (!fileExists("BruteSSH.exe")) {
sleep(60000);
}
// Copy our scripts onto each server that requires 1 port
// to gain root access. Then use brutessh() and nuke()
// to gain admin access and run the scripts.
for (var i = 0; i < servers1Port.length; ++i) {
var serv = servers1Port[i];
scp("early-hack-template.script", serv);
brutessh(serv);
nuke(serv);
exec("early-hack-template.script", serv, 12);
}
Random Tips
-----------
* Early on in the game, it's better to spend your money on upgrading RAM and purchasing
@@ -861,7 +874,7 @@ Random Tips
as useful as your hacking stat. Do not invest too much time or money into gaining combat
stat exp.
* As a rule of thumb, your hacking target should be the server with highest max money that's
required hacking level is under 1/3 of your hacking level.
required hacking level is under 1/2 of your hacking level.

View File

@@ -466,11 +466,12 @@ Path 1 (new):
is extremely powerful, as it raises all multipliers by a significant amount. This also a let's you
get used to augments and other features resetting.
2. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
has highest profit potential in the game.
2. Do **BitNode-3: Corporatocracy** at least once to unlock the Corporation mechanic, finishing all
3 levels unlocks the full API for free allowing fully scripted corp. This mechanic has highest
profit potential in the game.
3. Do **BitNode-10: Digital Carbon** once to unlock sleeves and grafting. Sleeves are useful in all nodes
and grafting can be useful in future BitNodes (especially 8). It's recommended to buy all sleeves and
and grafting can be useful in future BitNodes (especially 8). It's recommended to buy all purchasable sleeves and
their memory during the first run.
The ordering of the next three is dependant on playing style and wants/needs.
@@ -481,7 +482,7 @@ Path 1 (new):
strong because hacking is typically one of the best ways of earning money.
5. Do **BitNode-4: The Singularity**. Its Source-File does not directly make you
more powerful in any way, but it does unlock the `Singularity API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.singularity.md>`_ which
more powerful in any way, but it does unlock the `Singularity API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md>`_ which
let you automate significantly more aspects of the game. Consider repeating until Level 3,
since each level decreases the RAM cost of Singularity functions.
@@ -504,7 +505,7 @@ Path 2 (old):
strong because hacking is typically one of the best ways of earning money.
3. (Optional) Consider doing **BitNode-4: The Singularity**. Its Source-File does not directly make you
more powerful in any way, but it does unlock the `Singularity API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.singularity.md>`_ which
more powerful in any way, but it does unlock the `Singularity API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md>`_ which
let you automate significantly more aspects of the game.
4. Do **BitNode-3: Corporatocracy** once to unlock the Corporation mechanic. This mechanic
@@ -541,12 +542,12 @@ them.
For more scripting/hacking
^^^^^^^^^^^^^^^^^^^^^^^^^^
**BitNode-4: The Singularity** unlocks the `Singularity API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.singularity.md>`_, which
**BitNode-4: The Singularity** unlocks the `Singularity API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.singularity.md>`_, which
can be used to automate many different aspects of the game, including working for factions/companies,
purchasing & installing Augmentations, and creating programs
**BitNode-6** and **BitNode-7** unlock Bladeburner and its corresponding
`Netscript API <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.bladeburner.md>`_. This allows you to automate an entire
`Netscript API <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.bladeburner.md>`_. This allows you to automate an entire
new mechanic.
**BitNode-2: Rise of the Underworld** also unlocks a new mechanic and Netscript API for automating

View File

@@ -20,7 +20,7 @@ secrets that you've been searching for.
:maxdepth: 5
:caption: Contents:
Full documentation <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.ns.md>
Full documentation <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md>
Basic documentation <netscript>
Basic Gameplay <basicgameplay>
Advanced Gameplay <advancedgameplay>

View File

@@ -15,7 +15,7 @@ that JavaScript has.
:maxdepth: 5
:caption: Sections:
Full documentation <https://github.com/danielyxie/bitburner/blob/dev/markdown/bitburner.ns.md>
Full documentation <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md>
Learn to Program <netscript/netscriptlearntoprogram>
Netscript 1.0 <netscript/netscript1>
NetscriptJS (Netscript 2.0) <netscript/netscriptjs>

View File

@@ -4,7 +4,7 @@ Netscript Basic Functions
=========================
This page contains a subset of functions that are available in Bitburner.
For the complete list see https://github.com/danielyxie/bitburner/tree/dev/markdown
For the complete list see https://github.com/bitburner-official/bitburner-src/tree/dev/markdown
This includes information such as function signatures, what they do, and their return values.
.. toctree::

View File

@@ -4,33 +4,28 @@ Netscript Script Arguments
==========================
Arguments passed into a script can be accessed in Netscript using a
special array called *args*. The arguments can be
accessed using a normal array using the [] operator
(args[0], args[1], etc...).
special array called ``args``. The arguments can be accessed using a
normal array using the ``[]`` operator (``args[0]``, ``args[1]``, etc...).
These arguments can be string, number, or boolean.
For example, let's say we want to make a generic script
'generic-run.script' and we plan to pass two arguments into that script.
``generic-run.script`` and we plan to pass two arguments into that script.
The first argument will be the name of another script, and the second
argument will be a number. This generic script will run the
script specified in the first argument with the amount of threads
specified in the second element. The code would look like::
specified in the second argument. The code would look like::
run(args[0], args[1]);
It is also possible to get the number of arguments that was passed
into a script using::
And it could be ran from the terminal like:
args.length
``run generic-run.script myscript.script 7``
**WARNING: Do not try to modify the args array. This will break the game.**
In .js / ns2, the above script would look like::
export async function main(ns) {
ns.run(ns.args[0], ns.args[1]);
}
example for accessing arguments in ns2 from terminal execution:
terminal command:
run name_of_script.js -t 10 --tail argument1 argument2
ns2 script:
const args_obj = arguments[0]
const argument1 = (args_obj.server.args[0])
const argument2 = (args_obj.server.args[1])
It is also possible to get the number of arguments that were passed
into a script using ``args.length``.

View File

@@ -1,77 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Bitburner</title>
<link rel="apple-touch-icon" sizes="180x180" href="dist/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="dist/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="dist/favicon-16x16.png"/>
<link rel="manifest" href="dist/site.webmanifest"/>
<link rel="mask-icon" href="dist/safari-pinned-tab.svg" color="#000000"/>
<meta name="apple-mobile-web-app-title" content="Bitburner"/>
<meta name="application-name" content="Bitburner"/>
<meta name="msapplication-TileColor" content="#000000"/>
<meta name="msapplication-config" content="dist/browserconfig.xml"/>
<meta name="theme-color" content="#ffffff"/>
<!-- MONACO JS -->
<link rel="stylesheet" data-name="vs/editor/editor.main" href="dist/ext/monaco-editor/min/vs/editor/editor.main.css"/>
<script>
var require = { paths: { vs: "dist/ext/monaco-editor/min/vs", "monaco-vim": "dist/ext/monaco-vim" } };
</script>
<script src="dist/ext/monaco-editor/min/vs/loader.js"></script>
<script src="dist/ext/monaco-editor/min/vs/editor/editor.main.nls.js"></script>
<script src="dist/ext/monaco-editor/min/vs/editor/editor.main.js"></script>
<script src="dist/ext/monaco-vim.js"></script>
<!-- Google Analytics -->
<script>
(function (i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function () {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "https://www.google-analytics.com/analytics.js", "ga");
</script>
<script>
ga("create", "UA-100157497-1", "auto");
ga("send", "pageview");
</script>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
}
body {
background-color: black;
}
* {
-ms-overflow-style: none; /* for Internet Explorer, Edge */
scrollbar-width: none; /* for Firefox */
}
.myGlyphMarginClass {
background: red;
}
.myContentClass {
background: lightblue;
}
*::-webkit-scrollbar {
display: none; /* for Chrome, Safari, and Opera */
}
</style>
<link rel="shortcut icon" href="favicon.ico"></head>
<body>
<div id="root" style="display:flex"/>
<script type="text/javascript" src="dist/vendor.bundle.js"></script><script type="text/javascript" src="dist/main.bundle.js"></script></body>
</html>

View File

@@ -10,5 +10,7 @@ module.exports = {
"<rootDir>/test/__mocks__/fileMock.js",
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
"\\!!raw-loader!.*$": "<rootDir>/test/__mocks__/rawLoader.js",
"@player": "<rootDir>/src/Player",
"@nsdefs": "<rootDir>/src/ScriptEditor/NetscriptDefinitions",
},
};

View File

@@ -8,7 +8,7 @@
<b>Signature:</b>
```typescript
export interface ActiveFragment
interface ActiveFragment
```
## Properties

View File

@@ -9,7 +9,7 @@ Return value of [getSleevePurchasableAugs](./bitburner.sleeve.getsleevepurchasab
<b>Signature:</b>
```typescript
export interface AugmentPair
interface AugmentPair
```
## Properties

View File

@@ -9,7 +9,7 @@ Options to affect the behavior of [hack](./bitburner.ns.hack.md)<!-- -->, [grow]
<b>Signature:</b>
```typescript
export interface BasicHGWOptions
interface BasicHGWOptions
```
## Properties

View File

@@ -9,7 +9,7 @@ All multipliers affecting the difficulty of the current challenge.
<b>Signature:</b>
```typescript
export interface BitNodeMultipliers
interface BitNodeMultipliers
```
## Properties

View File

@@ -9,11 +9,11 @@ Get current city.
<b>Signature:</b>
```typescript
getCity(): string;
getCity(): CityName;
```
<b>Returns:</b>
string
[CityName](./bitburner.cityname.md)
City that the player is currently in (for Bladeburner).

View File

@@ -9,14 +9,14 @@ Get chaos of a city.
<b>Signature:</b>
```typescript
getCityChaos(name: string): number;
getCityChaos(city: CityName | `${CityName}`): number;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| name | string | |
| city | [CityName](./bitburner.cityname.md) \| \`${[CityName](./bitburner.cityname.md)<!-- -->}\` | Name of city. Case-sensitive |
<b>Returns:</b>

View File

@@ -9,14 +9,14 @@ Get number of communities in a city.
<b>Signature:</b>
```typescript
getCityCommunities(name: string): number;
getCityCommunities(city: CityName | `${CityName}`): number;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| name | string | |
| city | [CityName](./bitburner.cityname.md) \| \`${[CityName](./bitburner.cityname.md)<!-- -->}\` | Name of city. Case-sensitive |
<b>Returns:</b>

View File

@@ -9,14 +9,14 @@ Get estimated population in city.
<b>Signature:</b>
```typescript
getCityEstimatedPopulation(name: string): number;
getCityEstimatedPopulation(city: CityName | `${CityName}`): number;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| name | string | |
| city | [CityName](./bitburner.cityname.md) \| \`${[CityName](./bitburner.cityname.md)<!-- -->}\` | Name of city. Case-sensitive |
<b>Returns:</b>

View File

@@ -0,0 +1,23 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [Bladeburner](./bitburner.bladeburner.md) &gt; [inBladeburner](./bitburner.bladeburner.inbladeburner.md)
## Bladeburner.inBladeburner() method
Returns whether player is a member of bladeburner division. Does not require API access.
<b>Signature:</b>
```typescript
inBladeburner(): boolean;
```
<b>Returns:</b>
boolean
whether player is a member of bladeburner division.
## Remarks
RAM cost: 1 GB

View File

@@ -32,9 +32,9 @@ You have to be employed in the Bladeburner division and be in BitNode-7 or have
| [getBlackOpRank(name)](./bitburner.bladeburner.getblackoprank.md) | Get black op required rank. |
| [getBonusTime()](./bitburner.bladeburner.getbonustime.md) | Get bladeburner bonus time. |
| [getCity()](./bitburner.bladeburner.getcity.md) | Get current city. |
| [getCityChaos(name)](./bitburner.bladeburner.getcitychaos.md) | Get chaos of a city. |
| [getCityCommunities(name)](./bitburner.bladeburner.getcitycommunities.md) | Get number of communities in a city. |
| [getCityEstimatedPopulation(name)](./bitburner.bladeburner.getcityestimatedpopulation.md) | Get estimated population in city. |
| [getCityChaos(city)](./bitburner.bladeburner.getcitychaos.md) | Get chaos of a city. |
| [getCityCommunities(city)](./bitburner.bladeburner.getcitycommunities.md) | Get number of communities in a city. |
| [getCityEstimatedPopulation(city)](./bitburner.bladeburner.getcityestimatedpopulation.md) | Get estimated population in city. |
| [getContractNames()](./bitburner.bladeburner.getcontractnames.md) | List all contracts. |
| [getCurrentAction()](./bitburner.bladeburner.getcurrentaction.md) | Get current action. |
| [getGeneralActionNames()](./bitburner.bladeburner.getgeneralactionnames.md) | List all general actions. |
@@ -46,6 +46,7 @@ You have to be employed in the Bladeburner division and be in BitNode-7 or have
| [getSkillUpgradeCost(name, count)](./bitburner.bladeburner.getskillupgradecost.md) | Get cost to upgrade skill. |
| [getStamina()](./bitburner.bladeburner.getstamina.md) | Get bladeburner stamina. |
| [getTeamSize(type, name)](./bitburner.bladeburner.getteamsize.md) | Get team size. |
| [inBladeburner()](./bitburner.bladeburner.inbladeburner.md) | Returns whether player is a member of bladeburner division. Does not require API access. |
| [joinBladeburnerDivision()](./bitburner.bladeburner.joinbladeburnerdivision.md) | Join the bladeburner division. |
| [joinBladeburnerFaction()](./bitburner.bladeburner.joinbladeburnerfaction.md) | Join the bladeburner faction. |
| [setActionAutolevel(type, name, autoLevel)](./bitburner.bladeburner.setactionautolevel.md) | Set an action autolevel. |
@@ -53,6 +54,6 @@ You have to be employed in the Bladeburner division and be in BitNode-7 or have
| [setTeamSize(type, name, size)](./bitburner.bladeburner.setteamsize.md) | Set team size. |
| [startAction(type, name)](./bitburner.bladeburner.startaction.md) | Start an action. |
| [stopBladeburnerAction()](./bitburner.bladeburner.stopbladeburneraction.md) | Stop current action. |
| [switchCity(name)](./bitburner.bladeburner.switchcity.md) | Travel to another city in bladeburner. |
| [switchCity(city)](./bitburner.bladeburner.switchcity.md) | Travel to another city in bladeburner. |
| [upgradeSkill(name, count)](./bitburner.bladeburner.upgradeskill.md) | Upgrade skill. |

View File

@@ -9,14 +9,14 @@ Travel to another city in bladeburner.
<b>Signature:</b>
```typescript
switchCity(name: string): boolean;
switchCity(city: CityName | `${CityName}`): boolean;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| name | string | |
| city | [CityName](./bitburner.cityname.md) \| \`${[CityName](./bitburner.cityname.md)<!-- -->}\` | Name of city. Case-sensitive |
<b>Returns:</b>

View File

@@ -9,7 +9,7 @@ Bladeburner current action.
<b>Signature:</b>
```typescript
export interface BladeburnerCurAction
interface BladeburnerCurAction
```
## Properties

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [agility](./bitburner.charactermult.agility.md)
## CharacterMult.agility property
Agility stat
<b>Signature:</b>
```typescript
agility: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [agilityExp](./bitburner.charactermult.agilityexp.md)
## CharacterMult.agilityExp property
Agility exp
<b>Signature:</b>
```typescript
agilityExp: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [charisma](./bitburner.charactermult.charisma.md)
## CharacterMult.charisma property
Charisma stat
<b>Signature:</b>
```typescript
charisma: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [charismaExp](./bitburner.charactermult.charismaexp.md)
## CharacterMult.charismaExp property
Charisma exp
<b>Signature:</b>
```typescript
charismaExp: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [companyRep](./bitburner.charactermult.companyrep.md)
## CharacterMult.companyRep property
Company reputation
<b>Signature:</b>
```typescript
companyRep: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [crimeMoney](./bitburner.charactermult.crimemoney.md)
## CharacterMult.crimeMoney property
Money earned from crimes
<b>Signature:</b>
```typescript
crimeMoney: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [crimeSuccess](./bitburner.charactermult.crimesuccess.md)
## CharacterMult.crimeSuccess property
Crime success chance
<b>Signature:</b>
```typescript
crimeSuccess: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [defense](./bitburner.charactermult.defense.md)
## CharacterMult.defense property
Defense stat
<b>Signature:</b>
```typescript
defense: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [defenseExp](./bitburner.charactermult.defenseexp.md)
## CharacterMult.defenseExp property
Defense exp
<b>Signature:</b>
```typescript
defenseExp: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [dexterity](./bitburner.charactermult.dexterity.md)
## CharacterMult.dexterity property
Dexterity stat
<b>Signature:</b>
```typescript
dexterity: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [dexterityExp](./bitburner.charactermult.dexterityexp.md)
## CharacterMult.dexterityExp property
Dexterity exp
<b>Signature:</b>
```typescript
dexterityExp: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [factionRep](./bitburner.charactermult.factionrep.md)
## CharacterMult.factionRep property
Faction reputation
<b>Signature:</b>
```typescript
factionRep: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [hacking](./bitburner.charactermult.hacking.md)
## CharacterMult.hacking property
Hacking stat
<b>Signature:</b>
```typescript
hacking: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [hackingExp](./bitburner.charactermult.hackingexp.md)
## CharacterMult.hackingExp property
Hacking exp
<b>Signature:</b>
```typescript
hackingExp: number;
```

View File

@@ -1,35 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md)
## CharacterMult interface
<b>Signature:</b>
```typescript
export interface CharacterMult
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [agility](./bitburner.charactermult.agility.md) | number | Agility stat |
| [agilityExp](./bitburner.charactermult.agilityexp.md) | number | Agility exp |
| [charisma](./bitburner.charactermult.charisma.md) | number | Charisma stat |
| [charismaExp](./bitburner.charactermult.charismaexp.md) | number | Charisma exp |
| [companyRep](./bitburner.charactermult.companyrep.md) | number | Company reputation |
| [crimeMoney](./bitburner.charactermult.crimemoney.md) | number | Money earned from crimes |
| [crimeSuccess](./bitburner.charactermult.crimesuccess.md) | number | Crime success chance |
| [defense](./bitburner.charactermult.defense.md) | number | Defense stat |
| [defenseExp](./bitburner.charactermult.defenseexp.md) | number | Defense exp |
| [dexterity](./bitburner.charactermult.dexterity.md) | number | Dexterity stat |
| [dexterityExp](./bitburner.charactermult.dexterityexp.md) | number | Dexterity exp |
| [factionRep](./bitburner.charactermult.factionrep.md) | number | Faction reputation |
| [hacking](./bitburner.charactermult.hacking.md) | number | Hacking stat |
| [hackingExp](./bitburner.charactermult.hackingexp.md) | number | Hacking exp |
| [strength](./bitburner.charactermult.strength.md) | number | Strength stat |
| [strengthExp](./bitburner.charactermult.strengthexp.md) | number | Strength exp |
| [workMoney](./bitburner.charactermult.workmoney.md) | number | Money earned from jobs |

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [strength](./bitburner.charactermult.strength.md)
## CharacterMult.strength property
Strength stat
<b>Signature:</b>
```typescript
strength: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [strengthExp](./bitburner.charactermult.strengthexp.md)
## CharacterMult.strengthExp property
Strength exp
<b>Signature:</b>
```typescript
strengthExp: number;
```

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CharacterMult](./bitburner.charactermult.md) &gt; [workMoney](./bitburner.charactermult.workmoney.md)
## CharacterMult.workMoney property
Money earned from jobs
<b>Signature:</b>
```typescript
workMoney: number;
```

View File

@@ -0,0 +1,25 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CityName](./bitburner.cityname.md)
## CityName enum
Names of all cities
<b>Signature:</b>
```typescript
declare enum CityName
```
## Enumeration Members
| Member | Value | Description |
| --- | --- | --- |
| Aevum | <code>&quot;Aevum&quot;</code> | |
| Chongqing | <code>&quot;Chongqing&quot;</code> | |
| Ishima | <code>&quot;Ishima&quot;</code> | |
| NewTokyo | <code>&quot;New Tokyo&quot;</code> | |
| Sector12 | <code>&quot;Sector-12&quot;</code> | |
| Volhaven | <code>&quot;Volhaven&quot;</code> | |

View File

@@ -1,20 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CodingAttemptOptions](./bitburner.codingattemptoptions.md)
## CodingAttemptOptions interface
Options to affect the behavior of [CodingContract](./bitburner.codingcontract.md) attempt.
<b>Signature:</b>
```typescript
export interface CodingAttemptOptions
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [returnReward](./bitburner.codingattemptoptions.returnreward.md) | boolean | If truthy, then the function will return a string that states the contracts reward when it is successfully solved. |

View File

@@ -1,13 +0,0 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CodingAttemptOptions](./bitburner.codingattemptoptions.md) &gt; [returnReward](./bitburner.codingattemptoptions.returnreward.md)
## CodingAttemptOptions.returnReward property
If truthy, then the function will return a string that states the contracts reward when it is successfully solved.
<b>Signature:</b>
```typescript
returnReward: boolean;
```

View File

@@ -4,33 +4,27 @@
## CodingContract.attempt() method
Attempts a coding contract.
Attempts a coding contract, returning a reward string on success or empty string on failure.
<b>Signature:</b>
```typescript
attempt(
answer: string | number | any[],
filename: string,
host?: string,
opts?: CodingAttemptOptions,
): boolean | string;
attempt(answer: string | number | any[], filename: string, host?: string): string;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| answer | string \| number \| any\[\] | Solution for the contract. |
| answer | string \| number \| any\[\] | Attempted solution for the contract. |
| filename | string | Filename of the contract. |
| host | string | Hostname of the server containing the contract. Optional. Defaults to current server if not provided. |
| opts | [CodingAttemptOptions](./bitburner.codingattemptoptions.md) | Optional parameters for configuring function behavior. |
<b>Returns:</b>
boolean \| string
string
True if the solution was correct, false otherwise. If the returnReward option is configured, then the function will instead return a string. If the contract is successfully solved, the string will contain a description of the contracts reward. Otherwise, it will be an empty string.
A reward description string on success, or an empty string on failure.
## Remarks
@@ -38,3 +32,25 @@ RAM cost: 10 GB
Attempts to solve the Coding Contract with the provided solution.
## Example 1
```js
// NS1
var reward = codingcontract.attempt(yourSolution, filename, hostname);
if (reward) {
tprint("Contract solved successfully! Reward: " + reward)
} else tprint("Failed to solve contract.")
```
## Example 2
```js
// NS2
const reward = codingcontract.attempt(yourSolution, filename, hostname);
if (reward) {
ns.tprint(`Contract solved successfully! Reward: ${reward}`)
} else ns.tprint("Failed to solve contract.")
```

View File

@@ -16,7 +16,7 @@ export interface CodingContract
| Method | Description |
| --- | --- |
| [attempt(answer, filename, host, opts)](./bitburner.codingcontract.attempt.md) | Attempts a coding contract. |
| [attempt(answer, filename, host)](./bitburner.codingcontract.attempt.md) | Attempts a coding contract, returning a reward string on success or empty string on failure. |
| [createDummyContract(type)](./bitburner.codingcontract.createdummycontract.md) | Generate a dummy contract. |
| [getContractType(filename, host)](./bitburner.codingcontract.getcontracttype.md) | Get the type of a coding contract. |
| [getContractTypes()](./bitburner.codingcontract.getcontracttypes.md) | List all contract types. |

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [baseProductProfitMult](./bitburner.corpconstants.baseproductprofitmult.md)
## CorpConstants.baseProductProfitMult property
<b>Signature:</b>
```typescript
baseProductProfitMult: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [bribeAmountPerReputation](./bitburner.corpconstants.bribeamountperreputation.md)
## CorpConstants.bribeAmountPerReputation property
<b>Signature:</b>
```typescript
bribeAmountPerReputation: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [bribeThreshold](./bitburner.corpconstants.bribethreshold.md)
## CorpConstants.bribeThreshold property
<b>Signature:</b>
```typescript
bribeThreshold: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [coffeeCostPerEmployee](./bitburner.corpconstants.coffeecostperemployee.md)
## CorpConstants.coffeeCostPerEmployee property
<b>Signature:</b>
```typescript
coffeeCostPerEmployee: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [dividendMaxRate](./bitburner.corpconstants.dividendmaxrate.md)
## CorpConstants.dividendMaxRate property
<b>Signature:</b>
```typescript
dividendMaxRate: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [employeeRaiseAmount](./bitburner.corpconstants.employeeraiseamount.md)
## CorpConstants.employeeRaiseAmount property
<b>Signature:</b>
```typescript
employeeRaiseAmount: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [employeeSalaryMultiplier](./bitburner.corpconstants.employeesalarymultiplier.md)
## CorpConstants.employeeSalaryMultiplier property
Conversion factor for employee stats to initial salary
<b>Signature:</b>
```typescript
employeeSalaryMultiplier: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [gameCyclesPerCorpStateCycle](./bitburner.corpconstants.gamecyclespercorpstatecycle.md)
## CorpConstants.gameCyclesPerCorpStateCycle property
<b>Signature:</b>
```typescript
gameCyclesPerCorpStateCycle: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [gameCyclesPerMarketCycle](./bitburner.corpconstants.gamecyclespermarketcycle.md)
## CorpConstants.gameCyclesPerMarketCycle property
<b>Signature:</b>
```typescript
gameCyclesPerMarketCycle: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [industryNames](./bitburner.corpconstants.industrynames.md)
## CorpConstants.industryNames property
Names of all industries
<b>Signature:</b>
```typescript
industryNames: CorpIndustryName[];
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [initialShares](./bitburner.corpconstants.initialshares.md)
## CorpConstants.initialShares property
<b>Signature:</b>
```typescript
initialShares: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [issueNewSharesCooldown](./bitburner.corpconstants.issuenewsharescooldown.md)
## CorpConstants.issueNewSharesCooldown property
Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms)
<b>Signature:</b>
```typescript
issueNewSharesCooldown: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [marketCyclesPerEmployeeRaise](./bitburner.corpconstants.marketcyclesperemployeeraise.md)
## CorpConstants.marketCyclesPerEmployeeRaise property
<b>Signature:</b>
```typescript
marketCyclesPerEmployeeRaise: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [materialNames](./bitburner.corpconstants.materialnames.md)
## CorpConstants.materialNames property
Names of all materials
<b>Signature:</b>
```typescript
materialNames: CorpMaterialName[];
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [maxProductsBase](./bitburner.corpconstants.maxproductsbase.md)
## CorpConstants.maxProductsBase property
Max products for a division without upgrades
<b>Signature:</b>
```typescript
maxProductsBase: number;
```

View File

@@ -0,0 +1,49 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md)
## CorpConstants interface
Corporation related constants
<b>Signature:</b>
```typescript
interface CorpConstants
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [baseProductProfitMult](./bitburner.corpconstants.baseproductprofitmult.md) | number | |
| [bribeAmountPerReputation](./bitburner.corpconstants.bribeamountperreputation.md) | number | |
| [bribeThreshold](./bitburner.corpconstants.bribethreshold.md) | number | |
| [coffeeCostPerEmployee](./bitburner.corpconstants.coffeecostperemployee.md) | number | |
| [dividendMaxRate](./bitburner.corpconstants.dividendmaxrate.md) | number | |
| [employeeRaiseAmount](./bitburner.corpconstants.employeeraiseamount.md) | number | |
| [employeeSalaryMultiplier](./bitburner.corpconstants.employeesalarymultiplier.md) | number | Conversion factor for employee stats to initial salary |
| [gameCyclesPerCorpStateCycle](./bitburner.corpconstants.gamecyclespercorpstatecycle.md) | number | |
| [gameCyclesPerMarketCycle](./bitburner.corpconstants.gamecyclespermarketcycle.md) | number | |
| [industryNames](./bitburner.corpconstants.industrynames.md) | [CorpIndustryName](./bitburner.corpindustryname.md)<!-- -->\[\] | Names of all industries |
| [initialShares](./bitburner.corpconstants.initialshares.md) | number | |
| [issueNewSharesCooldown](./bitburner.corpconstants.issuenewsharescooldown.md) | number | Cooldown for issue new shares cooldown in game cycles (1 game cycle = 200ms) |
| [marketCyclesPerEmployeeRaise](./bitburner.corpconstants.marketcyclesperemployeeraise.md) | number | |
| [materialNames](./bitburner.corpconstants.materialnames.md) | [CorpMaterialName](./bitburner.corpmaterialname.md)<!-- -->\[\] | Names of all materials |
| [maxProductsBase](./bitburner.corpconstants.maxproductsbase.md) | number | Max products for a division without upgrades |
| [officeInitialCost](./bitburner.corpconstants.officeinitialcost.md) | number | |
| [officeInitialSize](./bitburner.corpconstants.officeinitialsize.md) | number | |
| [officeSizeUpgradeCostBase](./bitburner.corpconstants.officesizeupgradecostbase.md) | number | |
| [researchNames](./bitburner.corpconstants.researchnames.md) | [CorpResearchName](./bitburner.corpresearchname.md)<!-- -->\[\] | Names of all researches |
| [researchNamesBase](./bitburner.corpconstants.researchnamesbase.md) | [CorpResearchName](./bitburner.corpresearchname.md)<!-- -->\[\] | Names of all researches common to all industries |
| [researchNamesProductOnly](./bitburner.corpconstants.researchnamesproductonly.md) | [CorpResearchName](./bitburner.corpresearchname.md)<!-- -->\[\] | Names of all researches only available to product industries |
| [secondsPerMarketCycle](./bitburner.corpconstants.secondspermarketcycle.md) | number | |
| [sellSharesCooldown](./bitburner.corpconstants.sellsharescooldown.md) | number | Cooldown for selling shares in game cycles (1 game cycle = 200ms) |
| [sharesPerPriceUpdate](./bitburner.corpconstants.sharesperpriceupdate.md) | number | When selling large number of shares, price is dynamically updated for every batch of this amount |
| [stateNames](./bitburner.corpconstants.statenames.md) | [CorpStateName](./bitburner.corpstatename.md)<!-- -->\[\] | Names of all corporation game states |
| [unlockNames](./bitburner.corpconstants.unlocknames.md) | [CorpUnlockName](./bitburner.corpunlockname.md)<!-- -->\[\] | Names of all one-time corporation-wide unlocks |
| [upgradeNames](./bitburner.corpconstants.upgradenames.md) | [CorpUpgradeName](./bitburner.corpupgradename.md)<!-- -->\[\] | Names of all corporation-wide upgrades |
| [warehouseInitialCost](./bitburner.corpconstants.warehouseinitialcost.md) | number | |
| [warehouseInitialSize](./bitburner.corpconstants.warehouseinitialsize.md) | number | |
| [warehouseSizeUpgradeCostBase](./bitburner.corpconstants.warehousesizeupgradecostbase.md) | number | |

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [officeInitialCost](./bitburner.corpconstants.officeinitialcost.md)
## CorpConstants.officeInitialCost property
<b>Signature:</b>
```typescript
officeInitialCost: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [officeInitialSize](./bitburner.corpconstants.officeinitialsize.md)
## CorpConstants.officeInitialSize property
<b>Signature:</b>
```typescript
officeInitialSize: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [officeSizeUpgradeCostBase](./bitburner.corpconstants.officesizeupgradecostbase.md)
## CorpConstants.officeSizeUpgradeCostBase property
<b>Signature:</b>
```typescript
officeSizeUpgradeCostBase: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [researchNames](./bitburner.corpconstants.researchnames.md)
## CorpConstants.researchNames property
Names of all researches
<b>Signature:</b>
```typescript
researchNames: CorpResearchName[];
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [researchNamesBase](./bitburner.corpconstants.researchnamesbase.md)
## CorpConstants.researchNamesBase property
Names of all researches common to all industries
<b>Signature:</b>
```typescript
researchNamesBase: CorpResearchName[];
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [researchNamesProductOnly](./bitburner.corpconstants.researchnamesproductonly.md)
## CorpConstants.researchNamesProductOnly property
Names of all researches only available to product industries
<b>Signature:</b>
```typescript
researchNamesProductOnly: CorpResearchName[];
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [secondsPerMarketCycle](./bitburner.corpconstants.secondspermarketcycle.md)
## CorpConstants.secondsPerMarketCycle property
<b>Signature:</b>
```typescript
secondsPerMarketCycle: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [sellSharesCooldown](./bitburner.corpconstants.sellsharescooldown.md)
## CorpConstants.sellSharesCooldown property
Cooldown for selling shares in game cycles (1 game cycle = 200ms)
<b>Signature:</b>
```typescript
sellSharesCooldown: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [sharesPerPriceUpdate](./bitburner.corpconstants.sharesperpriceupdate.md)
## CorpConstants.sharesPerPriceUpdate property
When selling large number of shares, price is dynamically updated for every batch of this amount
<b>Signature:</b>
```typescript
sharesPerPriceUpdate: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [stateNames](./bitburner.corpconstants.statenames.md)
## CorpConstants.stateNames property
Names of all corporation game states
<b>Signature:</b>
```typescript
stateNames: CorpStateName[];
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [unlockNames](./bitburner.corpconstants.unlocknames.md)
## CorpConstants.unlockNames property
Names of all one-time corporation-wide unlocks
<b>Signature:</b>
```typescript
unlockNames: CorpUnlockName[];
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [upgradeNames](./bitburner.corpconstants.upgradenames.md)
## CorpConstants.upgradeNames property
Names of all corporation-wide upgrades
<b>Signature:</b>
```typescript
upgradeNames: CorpUpgradeName[];
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [warehouseInitialCost](./bitburner.corpconstants.warehouseinitialcost.md)
## CorpConstants.warehouseInitialCost property
<b>Signature:</b>
```typescript
warehouseInitialCost: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [warehouseInitialSize](./bitburner.corpconstants.warehouseinitialsize.md)
## CorpConstants.warehouseInitialSize property
<b>Signature:</b>
```typescript
warehouseInitialSize: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpConstants](./bitburner.corpconstants.md) &gt; [warehouseSizeUpgradeCostBase](./bitburner.corpconstants.warehousesizeupgradecostbase.md)
## CorpConstants.warehouseSizeUpgradeCostBase property
<b>Signature:</b>
```typescript
warehouseSizeUpgradeCostBase: number;
```

View File

@@ -0,0 +1,19 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpEmployeePosition](./bitburner.corpemployeeposition.md)
## CorpEmployeePosition type
<b>Signature:</b>
```typescript
type CorpEmployeePosition =
| "Operations"
| "Engineer"
| "Business"
| "Management"
| "Research & Development"
| "Training"
| "Unassigned";
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpIndustryData](./bitburner.corpindustrydata.md) &gt; [advertisingFactor](./bitburner.corpindustrydata.advertisingfactor.md)
## CorpIndustryData.advertisingFactor property
Advertising factor (affects sales)
<b>Signature:</b>
```typescript
advertisingFactor?: number;
```

View File

@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpIndustryData](./bitburner.corpindustrydata.md) &gt; [aiCoreFactor](./bitburner.corpindustrydata.aicorefactor.md)
## CorpIndustryData.aiCoreFactor property
AI Cores factor
<b>Signature:</b>
```typescript
aiCoreFactor?: number;
```

View File

@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [CorpIndustryData](./bitburner.corpindustrydata.md) &gt; [description](./bitburner.corpindustrydata.description.md)
## CorpIndustryData.description property
<b>Signature:</b>
```typescript
description: string;
```

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