more work on bn13

This commit is contained in:
Olivier Gagnon 2021-11-13 22:44:17 -05:00
commit 56ddcd9a45
990 changed files with 58453 additions and 9515 deletions

@ -1,35 +0,0 @@
FROM node:15.14.0 AS base
WORKDIR /app
# Scripts used in the npm preinstall hook
COPY scripts/engines-check.js scripts/semver.js scripts/
# Adding our dependencies and install before adding the rest of the files
# This prevents reinstallation of npm packages for every subsequent code modification
ENV npm_config_update_notifier=false
COPY package.json package-lock.json ./
RUN npm ci --loglevel=error --no-audit --no-fund && npm rebuild node-sass
# Adding all the remaining source files
COPY . .
# We need more than the default 512MB otherwise webpack will throw 'heap out of memory' exceptions
# https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes
ENV NODE_OPTIONS=--max-old-space-size=1536
FROM base AS dev
# This is the main development build using the file watcher if you mount volumes
USER node
EXPOSE 8000
CMD npm run start:container
FROM base AS prod-dist
# We'll simply build the production dist files here to later reuse in a simple webserver
RUN npm run build
FROM nginx:1.20.0-alpine AS prod
WORKDIR /usr/share/nginx/html
COPY --from=prod-dist /app/dist ./dist
COPY --from=prod-dist /app/index.html /app/favicon.ico /app/license.txt ./
EXPOSE 80

364
api-extractor.json Normal file

@ -0,0 +1,364 @@
/**
* Config file for API Extractor. For more info, please visit: https://api-extractor.com
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
/**
* Optionally specifies another JSON config file that this file extends from. This provides a way for
* standard settings to be shared across multiple projects.
*
* If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains
* the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be
* resolved using NodeJS require().
*
* SUPPORTED TOKENS: none
* DEFAULT VALUE: ""
*/
// "extends": "./shared/api-extractor-base.json"
// "extends": "my-package/include/api-extractor-base.json"
/**
* Determines the "<projectFolder>" token that can be used with other config file settings. The project folder
* typically contains the tsconfig.json and package.json config files, but the path is user-defined.
*
* The path is resolved relative to the folder of the config file that contains the setting.
*
* The default value for "projectFolder" is the token "<lookup>", which means the folder is determined by traversing
* parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder
* that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error
* will be reported.
*
* SUPPORTED TOKENS: <lookup>
* DEFAULT VALUE: "<lookup>"
*/
// "projectFolder": "..",
/**
* (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor
* analyzes the symbols exported by this module.
*
* The file extension must be ".d.ts" and not ".ts".
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
*/
"mainEntryPointFilePath": "src/ScriptEditor/NetscriptDefinitions.d.ts",
/**
* A list of NPM package names whose exports should be treated as part of this package.
*
* For example, suppose that Webpack is used to generate a distributed bundle for the project "library1",
* and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part
* of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly
* imports library2. To avoid this, we can specify:
*
* "bundledPackages": [ "library2" ],
*
* This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been
* local files for library1.
*/
"bundledPackages": [],
/**
* Determines how the TypeScript compiler engine will be invoked by API Extractor.
*/
"compiler": {
/**
* Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* Note: This setting will be ignored if "overrideTsconfig" is used.
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/tsconfig.json"
*/
// "tsconfigFilePath": "<projectFolder>/tsconfig.json",
/**
* Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk.
* The object must conform to the TypeScript tsconfig schema:
*
* http://json.schemastore.org/tsconfig
*
* If omitted, then the tsconfig.json file will be read from the "projectFolder".
*
* DEFAULT VALUE: no overrideTsconfig section
*/
// "overrideTsconfig": {
// . . .
// }
/**
* This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended
* and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when
* dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses
* for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck.
*
* DEFAULT VALUE: false
*/
// "skipLibCheck": true,
},
/**
* Configures how the API report file (*.api.md) will be generated.
*/
"apiReport": {
/**
* (REQUIRED) Whether to generate an API report.
*/
"enabled": true,
/**
* The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce
* a full file path.
*
* The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/".
*
* SUPPORTED TOKENS: <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<unscopedPackageName>.api.md"
*/
// "reportFileName": "markdown/bitburner.api.md"
/**
* Specifies the folder where the API report file is written. The file name portion is determined by
* the "reportFileName" setting.
*
* The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy,
* e.g. for an API review.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/etc/"
*/
"reportFolder": "markdown/",
/**
* Specifies the folder where the temporary report file is written. The file name portion is determined by
* the "reportFileName" setting.
*
* After the temporary file is written to disk, it is compared with the file in the "reportFolder".
* If they are different, a production build will fail.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/temp/"
*/
"reportTempFolder": "markdown/"
},
/**
* Configures how the doc model file (*.api.json) will be generated.
*/
"docModel": {
/**
* (REQUIRED) Whether to generate a doc model file.
*/
"enabled": true,
/**
* The output path for the doc model file. The file extension should be ".api.json".
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/temp/<unscopedPackageName>.api.json"
*/
"apiJsonFilePath": "input/bitburner.api.json"
},
/**
* Configures how the .d.ts rollup file will be generated.
*/
"dtsRollup": {
/**
* (REQUIRED) Whether to generate the .d.ts rollup file.
*/
"enabled": true
/**
* Specifies the output path for a .d.ts rollup file to be generated without any trimming.
* This file will include all declarations that are exported by the main entry point.
*
* If the path is an empty string, then this file will not be written.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<projectFolder>/dist/<unscopedPackageName>.d.ts"
*/
// "untrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>.d.ts",
/**
* Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release.
* This file will include only declarations that are marked as "@public" or "@beta".
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: ""
*/
// "betaTrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>-beta.d.ts",
/**
* Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release.
* This file will include only declarations that are marked as "@public".
*
* If the path is an empty string, then this file will not be written.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: ""
*/
// "publicTrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>-public.d.ts",
/**
* When a declaration is trimmed, by default it will be replaced by a code comment such as
* "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the
* declaration completely.
*
* DEFAULT VALUE: false
*/
// "omitTrimmingComments": true
},
/**
* Configures how the tsdoc-metadata.json file will be generated.
*/
"tsdocMetadata": {
/**
* Whether to generate the tsdoc-metadata.json file.
*
* DEFAULT VALUE: true
*/
// "enabled": true,
/**
* Specifies where the TSDoc metadata file should be written.
*
* The path is resolved relative to the folder of the config file that contains the setting; to change this,
* prepend a folder token such as "<projectFolder>".
*
* The default value is "<lookup>", which causes the path to be automatically inferred from the "tsdocMetadata",
* "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup
* falls back to "tsdoc-metadata.json" in the package folder.
*
* SUPPORTED TOKENS: <projectFolder>, <packageName>, <unscopedPackageName>
* DEFAULT VALUE: "<lookup>"
*/
// "tsdocMetadataFilePath": "<projectFolder>/dist/tsdoc-metadata.json"
},
/**
* Specifies what type of newlines API Extractor should use when writing output files. By default, the output files
* will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead.
* To use the OS's default newline kind, specify "os".
*
* DEFAULT VALUE: "crlf"
*/
// "newlineKind": "crlf",
/**
* Configures how API Extractor reports error and warning messages produced during analysis.
*
* There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages.
*/
"messages": {
/**
* Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing
* the input .d.ts files.
*
* TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551"
*
* DEFAULT VALUE: A single "default" entry with logLevel=warning.
*/
"compilerMessageReporting": {
/**
* Configures the default routing for messages that don't match an explicit rule in this table.
*/
"default": {
/**
* Specifies whether the message should be written to the the tool's output log. Note that
* the "addToApiReportFile" property may supersede this option.
*
* Possible values: "error", "warning", "none"
*
* Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail
* and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes
* the "--local" option), the warning is displayed but the build will not fail.
*
* DEFAULT VALUE: "warning"
*/
"logLevel": "warning"
/**
* When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md),
* then the message will be written inside that file; otherwise, the message is instead logged according to
* the "logLevel" option.
*
* DEFAULT VALUE: false
*/
// "addToApiReportFile": false
}
// "TS2551": {
// "logLevel": "warning",
// "addToApiReportFile": true
// },
//
// . . .
},
/**
* Configures handling of messages reported by API Extractor during its analysis.
*
* API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag"
*
* DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings
*/
"extractorMessageReporting": {
"default": {
"logLevel": "warning"
// "addToApiReportFile": false
}
// "ae-extra-release-tag": {
// "logLevel": "warning",
// "addToApiReportFile": true
// },
//
// . . .
},
/**
* Configures handling of messages reported by the TSDoc parser when analyzing code comments.
*
* TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text"
*
* DEFAULT VALUE: A single "default" entry with logLevel=warning.
*/
"tsdocMessageReporting": {
"default": {
"logLevel": "warning"
// "addToApiReportFile": false
}
// "tsdoc-link-tag-unescaped-text": {
// "logLevel": "warning",
// "addToApiReportFile": true
// },
//
// . . .
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@ -0,0 +1,215 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="600"
height="900"
viewBox="0 0 158.75 238.12501"
version="1.1"
id="svg2976"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="Library_Capsule.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2978"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
inkscape:zoom="0.79118979"
inkscape:cx="254.67973"
inkscape:cy="454.37897"
inkscape:window-width="2088"
inkscape:window-height="1267"
inkscape:window-x="360"
inkscape:window-y="102"
inkscape:window-maximized="0"
inkscape:current-layer="layer5">
<inkscape:grid
type="xygrid"
id="grid3037" />
</sodipodi:namedview>
<defs
id="defs2973">
<rect
x="180"
y="70"
width="250"
height="90"
id="rect4063" />
</defs>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="background">
<rect
style="fill:#000000;stroke-width:0.141;fill-opacity:1"
id="rect4362"
width="158.75"
height="238.125"
x="0"
y="0" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:18.9804px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#002000;fill-opacity:1;stroke-width:0.254201"
x="9.5800972"
y="138.17438"
id="text7802"><tspan
sodipodi:role="line"
id="tspan7800"
style="fill:#002000;fill-opacity:1;stroke-width:0.254201"
x="9.5800972"
y="138.17438">while(true) {</tspan><tspan
sodipodi:role="line"
style="fill:#002000;fill-opacity:1;stroke-width:0.254201"
x="9.5800972"
y="161.89987"
id="tspan8504"> hack();</tspan><tspan
sodipodi:role="line"
style="fill:#002000;fill-opacity:1;stroke-width:0.254201"
x="9.5800972"
y="185.62538"
id="tspan8506">}</tspan></text>
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3107"
transform="matrix(2.0753566,0,0,2.0753566,20.050652,10.368115)">
<g
id="layer4"
inkscape:label="background" />
<g
inkscape:label="Layer 1"
id="layer1-5"
style="display:inline">
<g
id="g898"
transform="matrix(1.3592638,0,0,1.3592638,-3.4563747,-7.7397592)">
<g
id="layer2"
inkscape:label="background"
style="display:inline">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4061"
style="font-weight:bold;font-size:74.6667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect4063);fill:#003d00;fill-opacity:1"><tspan
x="180"
y="228.1207"
id="tspan8996"><tspan
dx="0 52.208359 25.520844 33.979187 52.208359 53.229187 37.187515 53.229202 49.583344"
id="tspan8994">bitburner</tspan></tspan></text>
</g>
<g
id="layer3"
inkscape:label="bin" />
<g
inkscape:label="Layer 1"
id="layer1-3">
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,11.666445 v 18.489861 l -2.465312,3.697972 v 3.697972 l 2.465312,2.465316 v 1.232656"
id="path1456"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,30.156306 2.465316,3.697972 v 3.697972 l -2.465316,2.465316"
id="path1524"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.40941,41.250222 v -8.6286 l 2.465311,-3.697972 v -4.930628 l 3.697973,-6.163289"
id="path3458"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.735982,41.250222 v -8.6286 L 27.270666,28.92365 v -4.930628 l -3.697972,-6.163289"
id="path3460"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 12.478778,37.55225 v -8.6286 l 1.232661,-1.232656 1.232654,-1.232661 2.465317,-2.465311 h 2.465311"
id="path3619"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 34.66661,37.55225 v -8.6286 l -1.232655,-1.232656 -1.232656,-1.232661 -2.465317,-2.465311 h -2.465316"
id="path3621"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 17.40941,32.621622 H 12.478778"
id="path3623"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.119652,32.005292 h 4.930633"
id="path3625" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 26.03801,21.527705 1.232656,-1.232656 v -7.395944"
id="path3670"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 21.107382,21.527705 19.874721,20.295049 V 12.899105"
id="path3672"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 32.201299,41.250222 2.465311,-2.465311 v -2.465317 l 3.697973,-3.697972 V 16.597077"
id="path4789"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 14.944093,41.250222 12.478778,38.784911 V 36.319594 L 8.7808056,32.621622 V 16.597077"
id="path5224"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 16.176749,25.225677 V 14.131761"
id="path20342"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 30.968638,25.225677 V 14.131761"
id="path20410"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.7808056,26.458333 12.478778,22.760361 V 15.364417"
id="path20544"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 38.364583,26.458333 34.66661,22.760361 v -7.395944"
id="path20546"
sodipodi:nodetypes="ccc" />
</g>
</g>
</g>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:24.8803px;line-height:1.25;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#00ff00;fill-opacity:1;stroke-width:0.333217"
x="13.494555"
y="227.75381"
id="text5034"><tspan
sodipodi:role="line"
id="tspan5032"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#00ff00;fill-opacity:1;stroke-width:0.333217"
x="13.494555"
y="227.75381">bitburner</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 KiB

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3840"
height="1240"
viewBox="0 0 1016 328.08334"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="Library_Hero.svg"
inkscape:export-filename="/Users/hydroflame/bitburner/assets/Steam/Library/Library_Hero.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
width="3840px"
height="1240px"
inkscape:zoom="0.27972783"
inkscape:cx="1497.8845"
inkscape:cy="227.00637"
inkscape:window-width="2581"
inkscape:window-height="1257"
inkscape:window-x="0"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer2">
<inkscape:grid
type="xygrid"
id="grid1511" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:0.141"
id="rect1535"
width="1016"
height="328.08334"
x="0"
y="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2">
<text
xml:space="preserve"
style="font-weight:bold;font-size:16.5183px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-515.34589"
id="text2640"><tspan
sodipodi:role="line"
id="tspan2638"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-515.34589">getSymbols(); getPrice(); getAskPrice(); getBidPrice(); getPosition(); getMaxShares(); getPurchaseCost(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-494.69803"
id="tspan2642">getSaleGain(); buy(); sell(); short(); sellShort(); placeOrder(); cancelOrder(); getOrders(); getVolatility(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-474.05017"
id="tspan2644">getForecast(); purchase(); SMarketData(); purchase(); SMarketDataTixApi(); universityCourse(); gymWorkout(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-453.40228"
id="tspan2646">travelToCity(); purchaseTor(); purchaseProgram(); isBusy(); stopAction(); upgradeHomeRam(); upgradeHomeCores(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-432.75443"
id="tspan2648">getUpgradeHomeRamCost(); getUpgradeHomeCoresCost(); workForCompany(); applyToCompany(); getCompanyRep(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-412.10654"
id="tspan2650">getCompanyFavor(); getCompanyFavorGain(); checkFactionInvitations(); joinFaction(); workForFaction(); getFactionRep(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-391.45868"
id="tspan2652">getFactionFavor(); getFactionFavorGain(); donateToFaction(); createProgram(); commitCrime(); getCrimeChance(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-370.81079"
id="tspan2654">getCrimeStats(); getOwnedAugmentations(); getOwnedSourceFiles(); getAugmentationsFromFaction(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-350.16293"
id="tspan2656">getAugmentationPrereq(); getAugmentationCost(); getAugmentationPrice(); getAugmentationRepReq(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-329.51505"
id="tspan2658">purchaseAugmentation(); getAugmentationStats(); installAugmentations(); getStats(); getCharacterInformation(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-308.86716"
id="tspan2660">hospitalize(); softReset(); goToLocation(); getCurrentServer(); connect(); manualHack(); installBackdoor(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-288.2193"
id="tspan2662">numNodes(); maxNumNodes(); purchaseNode(); getPurchaseNodeCost(); getNodeStats(); upgradeLevel(); upgradeRam(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-267.57141"
id="tspan2664">upgradeCore(); upgradeCache(); getLevelUpgradeCost(); getRamUpgradeCost(); getCoreUpgradeCost(); getCacheUpgradeCost(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-246.92355"
id="tspan2666">numHashes(); hashCapacity(); hashCost(); spendHashes(); getHashUpgradeLevel(); getStudyMult(); getTrainingMult(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-226.27568"
id="tspan2668">getContractNames(); getOperationNames(); getBlackOpNames(); getGeneralActionNames(); getSkillNames(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-205.62781"
id="tspan2670">startAction(); stopBladeburnerAction(); getCurrentAction(); getActionTime(); getActionEstimatedSuccessChance(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-184.97993"
id="tspan2672">getActionRepGain(); getActionCountRemaining(); getActionMaxLevel(); getActionCurrentLevel(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-164.33206"
id="tspan2674">getActionAutolevel(); setActionAutolevel(); setActionLevel(); getRank(); getBlackOpRank(); getSkillPoints(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-143.68419"
id="tspan2676">getSkillLevel(); getSkillUpgradeCost(); upgradeSkill(); getTeamSize(); setTeamSize(); getCityEstimatedPopulation(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-123.03631"
id="tspan2678">getCityCommunities(); getCityChaos(); getCity(); switchCity(); getStamina(); joinBladeburnerFaction(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-102.38844"
id="tspan2680">joinBladeburnerDivision(); getBonusTime(); attempt(); getContractType(); getDescription(); getData(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-81.740562"
id="tspan2682">getNumTriesRemaining(); createGang(); inGang(); getMemberNames(); getGangInformation(); getOtherGangInformation(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-61.092686"
id="tspan2684">getMemberInformation(); canRecruitMember(); recruitMember(); getTaskNames(); setMemberTask(); getTaskStats(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-40.444809"
id="tspan2686">getEquipmentNames(); getEquipmentCost(); getEquipmentType(); getEquipmentStats(); purchaseEquipment(); ascendMember(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="-19.796938"
id="tspan2688">setTerritoryWarfare(); getChanceToWinClash(); getBonusTime(); getNumSleeves(); getSleeveStats(); getInformation(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="0.85093534"
id="tspan2690">getTask(); setToShockRecovery(); setToSynchronize(); setToCommitCrime(); setToFactionWork(); setToCompanyWork(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="21.498816"
id="tspan2692">setToUniversityCourse(); setToGymWorkout(); travel(); getSleeveAugmentations(); getSleevePurchasableAugs(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="42.14669"
id="tspan2694">purchaseSleeveAug(); calculateSkill(); calculateExp(); hackChance(); hackExp(); hackPercent(); growPercent(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="62.794563"
id="tspan2696">hackTime(); growTime(); weakenTime(); moneyGainRate(); levelUpgradeCost(); ramUpgradeCost(); coreUpgradeCost(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="83.442436"
id="tspan2698">hacknetNodeCost(); constants(); hashGainRate(); levelUpgradeCost(); ramUpgradeCost(); coreUpgradeCost(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="104.09031"
id="tspan2700">cacheUpgradeCost(); hashUpgradeCost(); hacknetServerCost(); constants(); readonly(); hack(); grow(); weaken(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="124.73818"
id="tspan2702">weakenAnalyze(); hackAnalyzeThreads(); hackAnalyze(); hackAnalyzeSecurity(); hackAnalyzeChance(); growthAnalyze(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="145.38605"
id="tspan2704">growthAnalyzeSecurity(); sleep(); asleep(); print(); tprint(); tprintf(); clearLog(); disableLog(); enableLog(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="166.03394"
id="tspan2706">isLogEnabled(); getScriptLogs(); tail(); scan(); nuke(); brutessh(); ftpcrack(); relaysmtp(); httpworm(); sqlinject(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="186.68179"
id="tspan2708">run(); exec(); spawn(); kill(); killall(); exit(); scp(); ls(); ps(); hasRootAccess(); getHostname(); getHackingLevel(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="207.32968"
id="tspan2710">getHackingMultipliers(); getHacknetMultipliers(); getServer(); getServerMoneyAvailable(); getServerMaxMoney(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="227.97754"
id="tspan2712">getServerGrowth(); getServerSecurityLevel(); getServerMinSecurityLevel(); getServerBaseSecurityLevel(); getServerRam(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="248.62543"
id="tspan2714">getServerMaxRam(); getServerUsedRam(); getServerRequiredHackingLevel(); getServerNumPortsRequired(); serverExists(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="269.27328"
id="tspan2716">fileExists(); isRunning(); getRunningScript(); getPurchasedServerCost(); purchaseServer(); deleteServer(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="289.92117"
id="tspan2718">getPurchasedServers(); getPurchasedServerLimit(); getPurchasedServerMaxRam(); write(); tryWrite(); read(); peek(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="310.56903"
id="tspan2720">clear(); clearPort(); writePort(); readPort(); getPortHandle(); rm(); scriptRunning(); scriptKill(); getScriptName(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="331.21692"
id="tspan2722">getScriptRam(); getHackTime(); getGrowTime(); getWeakenTime(); getScriptIncome(); getScriptExpGain(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="351.86478"
id="tspan2724">getTimeSinceLastAug(); sprintf(); vsprintf(); nFormat(); tFormat(); prompt(); alert(); toast(); wget(); </tspan><tspan
sodipodi:role="line"
style="fill:#008000;fill-opacity:1;stroke-width:0.221227"
x="-6.3549523"
y="372.51266"
id="tspan2726">getFavorToDonate(); getBitNodeMultipliers(); getPlayer(); atExit(); flags(); </tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="460"
height="215"
viewBox="0 0 121.70833 56.885418"
version="1.1"
id="svg845"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="Header_Capsule.svg"
inkscape:export-filename="/Users/hydroflame/bitburner/assets/Steam/Store/Header_Capsule.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview847"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
inkscape:zoom="2"
inkscape:cx="74.5"
inkscape:cy="147"
inkscape:window-width="2713"
inkscape:window-height="1264"
inkscape:window-x="411"
inkscape:window-y="75"
inkscape:window-maximized="0"
inkscape:current-layer="layer3">
<inkscape:grid
type="xygrid"
id="grid1265" />
</sodipodi:namedview>
<defs
id="defs842">
<rect
x="180"
y="70"
width="250"
height="90"
id="rect4063" />
</defs>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="background"
style="display:inline">
<rect
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="rect1128"
width="121.70833"
height="56.885414"
x="0"
y="0" />
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4061"
style="font-weight:bold;font-size:74.6667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect4063);fill:#003d00;fill-opacity:1"><tspan
x="180"
y="228.1207"
id="tspan10130"><tspan
dx="0 52.208359 25.520844 33.979187 52.208359 53.229187 37.187515 53.229202 49.583344"
id="tspan10128">bitburner</tspan></tspan></text>
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="bin">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.85919px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="2.4310479"
id="text17320"
transform="scale(0.80030898,1.2495174)"><tspan
sodipodi:role="line"
id="tspan17318"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="2.4310479">01001000 01100001 01110010 01110110 01100101</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="9.8454628"
id="tspan26146">01110011 01110100 00100000 01110100 01101000</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="17.259878"
id="tspan26532">01100101 00100000 01110000 01101111 01110111</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="24.674294"
id="tspan26870">01100101 01110010 00100000 01101111 01100110</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="32.088707"
id="tspan27256">00100000 01110100 01101000 01100101 00100000</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="39.503124"
id="tspan27606">01101110 01101111 01101111 01100100 01101100</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console Bold';fill:#202020;fill-opacity:1;stroke-width:0.078471"
x="-1.7902181"
y="46.917538"
id="tspan28160">01100101 01110011 00101110 00101110 00101110</tspan></text>
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,11.666445 v 18.489861 l -2.465312,3.697972 v 3.697972 l 2.465312,2.465316 v 1.232656"
id="path1456"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,30.156306 2.465316,3.697972 v 3.697972 l -2.465316,2.465316"
id="path1524"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.40941,41.250222 v -8.6286 l 2.465311,-3.697972 v -4.930628 l 3.697973,-6.163289"
id="path3458"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.735982,41.250222 v -8.6286 L 27.270666,28.92365 v -4.930628 l -3.697972,-6.163289"
id="path3460"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 12.478778,37.55225 v -8.6286 l 1.232661,-1.232656 1.232654,-1.232661 2.465317,-2.465311 h 2.465311"
id="path3619"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 34.66661,37.55225 v -8.6286 l -1.232655,-1.232656 -1.232656,-1.232661 -2.465317,-2.465311 h -2.465316"
id="path3621"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 17.40941,32.621622 H 12.478778"
id="path3623"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.119652,32.005292 h 4.930633"
id="path3625" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 26.03801,21.527705 1.232656,-1.232656 v -7.395944"
id="path3670"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 21.107382,21.527705 19.874721,20.295049 V 12.899105"
id="path3672"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 32.201299,41.250222 2.465311,-2.465311 v -2.465317 l 3.697973,-3.697972 V 16.597077"
id="path4789"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 14.944093,41.250222 12.478778,38.784911 V 36.319594 L 8.7808056,32.621622 V 16.597077"
id="path5224"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 16.176749,25.225677 V 14.131761"
id="path20342"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 30.968638,25.225677 V 14.131761"
id="path20410"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.7808056,26.458333 12.478778,22.760361 V 15.364417"
id="path20544"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 38.364583,26.458333 34.66661,22.760361 v -7.395944"
id="path20546"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.47px;line-height:1.25;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377"
id="text12822"><tspan
sodipodi:role="line"
id="tspan12820"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377">bitburner</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="374"
height="448"
viewBox="0 0 98.954164 118.53334"
version="1.1"
id="svg8188"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="Hero_Capsule.svg"
inkscape:export-filename="/Users/hydroflame/bitburner/assets/Steam/Store/Hero_Capsule.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8190"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
width="374px"
inkscape:zoom="1.1189113"
inkscape:cx="150.14595"
inkscape:cy="145.67732"
inkscape:window-width="2803"
inkscape:window-height="1258"
inkscape:window-x="0"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="layer5">
<inkscape:grid
type="xygrid"
id="grid8249" />
</sodipodi:namedview>
<defs
id="defs8185">
<rect
x="180"
y="70"
width="250"
height="90"
id="rect4063" />
</defs>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="background">
<rect
style="fill:#000000;stroke:none;stroke-width:0.141;fill-opacity:1"
id="rect9260"
width="98.95417"
height="118.53333"
x="0"
y="0" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:4.91179px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="8.2027788"
id="text11139"><tspan
sodipodi:role="line"
id="tspan11137"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="8.2027788">export async function main(ns) {</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="14.342516"
id="tspan11141"> while(sec &gt; minSec) {</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="20.482254"
id="tspan12886"> weaken('n00dles');</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="26.62199"
id="tspan12888"> }</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="32.761726"
id="tspan12890" /><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="38.901466"
id="tspan12892"> while(money &lt; maxMoney) {</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="45.041203"
id="tspan12894"> grow('n00dles');</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="51.180939"
id="tspan12896"> }</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="57.320679"
id="tspan13852" /><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="63.460415"
id="tspan11143"> hack('n00dles');</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="69.600151"
id="tspan13864"></tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="75.739891"
id="tspan13866"
dx="0 0 0 0 0.11823248"> tprint(&quot;I'm in&quot;);</tspan><tspan
sodipodi:role="line"
style="fill:#004000;fill-opacity:1;stroke-width:0.0657826"
x="3.401886"
y="81.879623"
id="tspan13862">}</tspan></text>
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g8594"
transform="matrix(0.83214383,0,0,0.83214383,-2.3892723,78.955939)">
<g
id="layer2"
inkscape:label="background"
style="display:inline">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4061"
style="font-weight:bold;font-size:74.6667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect4063);fill:#003d00;fill-opacity:1"><tspan
x="180"
y="228.1207"
id="tspan14798"><tspan
dx="0 52.208359 25.520844 33.979187 52.208359 53.229187 37.187515 53.229202 49.583344"
id="tspan14796">bitburner</tspan></tspan></text>
</g>
<g
id="layer3"
inkscape:label="bin" />
<g
inkscape:label="Layer 1"
id="layer1-1">
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,11.666445 v 18.489861 l -2.465312,3.697972 v 3.697972 l 2.465312,2.465316 v 1.232656"
id="path1456"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,30.156306 2.465316,3.697972 v 3.697972 l -2.465316,2.465316"
id="path1524"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.40941,41.250222 v -8.6286 l 2.465311,-3.697972 v -4.930628 l 3.697973,-6.163289"
id="path3458"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.735982,41.250222 v -8.6286 L 27.270666,28.92365 v -4.930628 l -3.697972,-6.163289"
id="path3460"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 12.478778,37.55225 v -8.6286 l 1.232661,-1.232656 1.232654,-1.232661 2.465317,-2.465311 h 2.465311"
id="path3619"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 34.66661,37.55225 v -8.6286 l -1.232655,-1.232656 -1.232656,-1.232661 -2.465317,-2.465311 h -2.465316"
id="path3621"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 17.40941,32.621622 H 12.478778"
id="path3623"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.119652,32.005292 h 4.930633"
id="path3625" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 26.03801,21.527705 1.232656,-1.232656 v -7.395944"
id="path3670"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 21.107382,21.527705 19.874721,20.295049 V 12.899105"
id="path3672"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 32.201299,41.250222 2.465311,-2.465311 v -2.465317 l 3.697973,-3.697972 V 16.597077"
id="path4789"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 14.944093,41.250222 12.478778,38.784911 V 36.319594 L 8.7808056,32.621622 V 16.597077"
id="path5224"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 16.176749,25.225677 V 14.131761"
id="path20342"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 30.968638,25.225677 V 14.131761"
id="path20410"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.7808056,26.458333 12.478778,22.760361 V 15.364417"
id="path20544"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 38.364583,26.458333 34.66661,22.760361 v -7.395944"
id="path20546"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.47px;line-height:1.25;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377"
id="text12822"><tspan
sodipodi:role="line"
id="tspan12820"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377">bitburner</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,202 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="616"
height="353"
viewBox="0 0 162.98333 93.397919"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="Main_Capsule.svg"
inkscape:export-filename="/Users/hydroflame/bitburner/assets/Steam/Store/Main_Capsule.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
width="616px"
inkscape:zoom="2.2378227"
inkscape:cx="304.98395"
inkscape:cy="106.57681"
inkscape:window-width="2368"
inkscape:window-height="1281"
inkscape:window-x="608"
inkscape:window-y="29"
inkscape:window-maximized="0"
inkscape:current-layer="layer4">
<inkscape:grid
type="xygrid"
id="grid824" />
</sodipodi:namedview>
<defs
id="defs2">
<rect
x="180"
y="70"
width="250"
height="90"
id="rect4063" />
</defs>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="background">
<rect
style="fill:#000000;stroke:none;stroke-width:0.264583;fill-opacity:1"
id="rect1361"
width="162.98334"
height="93.397919"
x="0"
y="0" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:10.5573px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#004000;fill-opacity:1;stroke-width:0.141;stroke-miterlimit:4;stroke-dasharray:none"
x="4.023602"
y="87.453094"
id="text2184"><tspan
sodipodi:role="line"
id="tspan2182"
style="fill:#004000;fill-opacity:1;stroke-width:0.141;stroke-miterlimit:4;stroke-dasharray:none"
x="4.023602"
y="87.453094">[home ~/]&gt; run main.js</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#004000;stroke-width:0.265;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 5.2916666,89.958332 H 160.07291"
id="path4659" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<g
id="g898"
transform="matrix(1.3592638,0,0,1.3592638,-3.4563747,-7.7397592)">
<g
id="layer2"
inkscape:label="background"
style="display:inline">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4061"
style="font-weight:bold;font-size:74.6667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';white-space:pre;shape-inside:url(#rect4063);fill:#003d00;fill-opacity:1"><tspan
x="180"
y="228.1207"
id="tspan8183"><tspan
dx="0 52.208359 25.520844 33.979187 52.208359 53.229187 37.187515 53.229202 49.583344"
id="tspan8181">bitburner</tspan></tspan></text>
</g>
<g
id="layer3"
inkscape:label="bin" />
<g
inkscape:label="Layer 1"
id="layer1-3">
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,11.666445 v 18.489861 l -2.465312,3.697972 v 3.697972 l 2.465312,2.465316 v 1.232656"
id="path1456"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 23.572694,30.156306 2.465316,3.697972 v 3.697972 l -2.465316,2.465316"
id="path1524"
sodipodi:nodetypes="cccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 17.40941,41.250222 v -8.6286 l 2.465311,-3.697972 v -4.930628 l 3.697973,-6.163289"
id="path3458"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.735982,41.250222 v -8.6286 L 27.270666,28.92365 v -4.930628 l -3.697972,-6.163289"
id="path3460"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 12.478778,37.55225 v -8.6286 l 1.232661,-1.232656 1.232654,-1.232661 2.465317,-2.465311 h 2.465311"
id="path3619"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 34.66661,37.55225 v -8.6286 l -1.232655,-1.232656 -1.232656,-1.232661 -2.465317,-2.465311 h -2.465316"
id="path3621"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 17.40941,32.621622 H 12.478778"
id="path3623"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.00646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 29.119652,32.005292 h 4.930633"
id="path3625" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 26.03801,21.527705 1.232656,-1.232656 v -7.395944"
id="path3670"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 21.107382,21.527705 19.874721,20.295049 V 12.899105"
id="path3672"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 32.201299,41.250222 2.465311,-2.465311 v -2.465317 l 3.697973,-3.697972 V 16.597077"
id="path4789"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 14.944093,41.250222 12.478778,38.784911 V 36.319594 L 8.7808056,32.621622 V 16.597077"
id="path5224"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 16.176749,25.225677 V 14.131761"
id="path20342"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.30743;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 30.968638,25.225677 V 14.131761"
id="path20410"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.7808056,26.458333 12.478778,22.760361 V 15.364417"
id="path20544"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:1.23266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 38.364583,26.458333 34.66661,22.760361 v -7.395944"
id="path20546"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.47px;line-height:1.25;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377"
id="text12822"><tspan
sodipodi:role="line"
id="tspan12820"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Lucida Console';-inkscape-font-specification:'Lucida Console';fill:#00ff00;fill-opacity:1;stroke-width:0.180402"
x="44.335251"
y="33.835377">bitburner</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 54 KiB

777
assets/Steam/logo.svg Normal file

@ -0,0 +1,777 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="32"
height="32"
viewBox="0 0 8.4666665 8.4666669"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="bb.svg"
inkscape:export-filename="/Users/hydroflame/Desktop/bb128x128.png"
inkscape:export-xdpi="384.00003"
inkscape:export-ydpi="384.00003"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="true"
units="px"
inkscape:zoom="11.313709"
inkscape:cx="-15.291184"
inkscape:cy="12.904699"
inkscape:window-width="2533"
inkscape:window-height="1176"
inkscape:window-x="316"
inkscape:window-y="81"
inkscape:window-maximized="0"
inkscape:current-layer="layer3">
<inkscape:grid
type="xygrid"
id="grid34424" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="background"
style="display:none">
<image
width="9.315053"
height="7.1195869"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlIAAAHGCAYAAAC/wGW7AAABQmlDQ1BJQ0MgUHJvZmlsZQAAKJFj
YGASSCwoyGFhYGDIzSspCnJ3UoiIjFJgf8rAxSDOwMmgxmCZmFxc4BgQ4ANUwgCjUcG3awyMIPqy
LsisoJzUgH1tRbJrYj9zhM61NsNUjwK4UlKLk4H0HyBOTi4oKmFgYEwAspXLSwpA7BYgW6QI6Cgg
ewaInQ5hrwGxkyDsA2A1IUHOQPYVIFsgOSMxBch+AmTrJCGJpyOxofaCAKdjcmqRQoSxCQG3kgxK
UitKQLRzfkFlUWZ6RomCIzCEUhU885L1dBSMDIwMGRhA4Q1R/VkMHI6MYqcQYvlWDAwWJxgYmKci
xJJeMDBsv8nAIMmNEFPZwsDAH8/AsK23ILEoEe4Axm8sxWnGRhA2TxEDA+uP//8/yzIwsO9iYPhb
9P//77n///9dAjQfaN6BQgA4TF4ddYy9vAAAAZ1pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4
OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4w
Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
Zi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAg
ICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAg
ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTk0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQ1NDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAg
IDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgooJ8wJAABAAElE
QVR4Aex9C4AdRZluzzBJSCDhFfKCGHlENivcwIAEs6CL8ohoQFkuIC6IWVDCey8oKruCrpIV8AFG
ooA3GkUIEkBAQlAMXBUBGVhQCSwvo7DJQIIg0UBec7+vz+lMz5nz6D5dXV3d/f3JN91dXfX/f33V
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
gg==
"
id="image1256"
x="0"
y="0.52916664"
style="display:inline" />
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="black"
style="display:inline">
<rect
style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect17167"
width="8.4666662"
height="8.4666662"
x="0"
y="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="icon"
style="display:inline">
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 4.2333333,1.0583333 v 3.96875 l -0.5291666,0.79375 v 0.79375 L 4.2333333,7.14375 v 0.2645834"
id="path1456"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.2333333,5.0270833 4.7625,5.8208333 v 0.79375 L 4.2333333,7.14375"
id="path1524"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 2.9104166,7.4083332 V 5.5562499 l 0.5291667,-0.79375 V 3.7041666 l 0.79375,-1.3229167"
id="path3458"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.5562499,7.4083332 V 5.5562499 L 5.0270833,4.7624999 V 3.7041666 L 4.2333334,2.3812499"
id="path3460"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 1.8520833,6.6145833 V 4.7625 L 2.1166666,4.4979166 2.38125,4.2333333 2.9104167,3.7041667 l 0.5291666,-10e-8"
id="path3619"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 6.6145835,6.6145832 -1e-7,-1.8520833 L 6.35,4.4979166 6.0854167,4.2333332 5.5562501,3.7041666 H 5.0270833"
id="path3621"
sodipodi:nodetypes="cccccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.216031;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 2.9104166,5.55625 H 1.8520832"
id="path3623"
sodipodi:nodetypes="cc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.216031;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.4239583,5.4239583 H 6.4822916"
id="path3625" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.7625,3.175 5.0270834,2.9104167 v -1.5875"
id="path3670"
sodipodi:nodetypes="ccc" />
<path
style="display:inline;fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 3.7041666,3.175 3.4395832,2.9104167 v -1.5875"
id="path3672"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 6.0854167,7.4083333 6.6145833,6.8791667 V 6.35 l 0.79375,-0.79375 V 2.1166667"
id="path4789"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 2.38125,7.4083333 1.8520833,6.8791666 V 6.35 L 1.0583333,5.55625 V 2.1166666"
id="path5224"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:0.280633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 2.6458333,3.96875 V 1.5875"
id="path20342"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:0.280633;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5.8208333,3.96875 V 1.5875"
id="path20410"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 1.0583333,4.2333333 0.79375,-0.79375 v -1.5875"
id="path20544"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 7.4083332,4.2333333 -0.7937499,-0.79375 -10e-8,-1.5875"
id="path20546"
sodipodi:nodetypes="ccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 54 KiB

1
assets/Steam/notes.txt Normal file

@ -0,0 +1 @@
https://partner.steamgames.com/doc/store/assets

@ -16,7 +16,7 @@
* @type {Cypress.PluginConfig}
*/
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
module.exports = (/*on, config*/) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
};

5016
dist/bitburner.d.ts vendored Normal file

File diff suppressed because it is too large Load Diff

77
dist/vendor.bundle.js vendored

File diff suppressed because one or more lines are too long

@ -3,7 +3,7 @@
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = python -msphinx
SPHINXBUILD = python2.7 -msphinx
SOURCEDIR = source
BUILDDIR = build

8
doc/source/404.rst Normal file

@ -0,0 +1,8 @@
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>`_.
That documentation is autogenerated and therefore is much easier to maintain.

@ -31,7 +31,7 @@ List of all Source-Files
| | * Each level of this Source-File opens up more of the Singularity Functions to use. |
+------------------------------------+-------------------------------------------------------------------------------------+
| BitNode-5: Artificial Intelligence | * Unlocks :ref:`gameplay_intelligence`. |
| | * Unlocks :js:func:`getBitNodeMultipliers` and :js:func:`getServer` |
| | * Unlocks :js:func:`getBitNodeMultipliers` and start with Formulas.exe |
| | Netscript functions, as well as :ref:`netscriptformulas`. |
| | * Increases all of the player's hacking-related multipliers by 8%/12%/14%. |
+------------------------------------+-------------------------------------------------------------------------------------+

@ -82,7 +82,7 @@ List of Factions and their Requirements
| | | server | |
| | | | |
+ +----------------+-----------------------------------------+-------------------------------+
| | Bitrunners | * Install a backdoor on the run4theh111z| |
| | BitRunners | * Install a backdoor on the run4theh111z| |
| | | server | |
| | | | |
+---------------------+----------------+-----------------------------------------+-------------------------------+

@ -3,8 +3,127 @@
Changelog
=========
v1.0.0 - 2021-11-10 Breaking the API :( (blame hydroflame)
-----------------------------------------------------------
** Announcement **
* Several API breaks have been implemented.
* See the v1.0.0 migration guide https://bitburner.readthedocs.io/en/latest/v1.0.0_migration.html
* Everyone gets 10 free neuroflux level.
** Netscript **
* Fix a bug that would cause RAM to not get recalculated.
* New function: hackAnalyzeSecurity
* New function: growthAnalyzeSecurity
* New function: weakenAnalyze
** Script Editor **
* Sometimes warn you about unawaited infinite loops.
* ns1 functions are now correctly colors in Monokai.
** Programs **
* Formulas.exe is a new program that lets you use the formulas API.
** Corporations **
* Real Estate takes up a tiny bit of room.
* Dividends are now taxes exponentially in certain bitnodes.
* UI displays how many level of each corporation upgrade.
* Fix exploit with going public.
* Employee salary no longer increase.
** Documentation **
* The documentation is now autogenerated into .md files.
It is usable but not yet linked to readthedocs. It's on github.
** Misc. **
* Favor is not internall floating point. Meaning I don't have to save an extra variable.
* Manually starting a Bladeburner action cancels unfocused action.
* Updated description of gang territory to be clearer.
* Hacknet expenses and profit are in different categories.
* Fixed favor equation.
* Toast messages aren't hidden behind work in progress screen.
* Fix bug that made infiltration checkmark look off by one.
* Fix some inconsistency with running files that start or don't start with /
* Can't tail the same window twice.
* Added recovery mode. Hopefully no one will ever have to use it.
* Fix readthedocs
* Programs now give int exp based on time not program.
* Many sing. functions now give int exp.
* Active Scripts page now displays some arguments next to script name.
* Fixed some invisible black text.
* Button colors can be edited.
* Added 2 new colors in the theme editor: background primary and background secondary.
* infiltration uses key instead of keycode so it should work better on non-american keyboards.
* buff noodle bar.
v0.58.0 - 2021-10-27 Road to Steam (hydroflame & community)
-----------------------------------------------------------
** Announcement **
* To prepare for Steam we will fix some inconsistencies in the Netscript API. Ideally we can also write a
save file migration that will automatically convert all breaking changes in your scripts without any
player input.
** BREAKING (kindof) **
* All stock market functions are now under the 'stock' namespace, like 'hacknet'
However when you load your game with v0.58.0 for the first time it should automatically convert everything.
** SF -1 **
* new SF -1: Reality Alteration
** Gang **
* Ascension formula now better
* Karma requirement now much lower in most nodes
* Territory heavily penalizes gains
* T.R.P. not available outside BN2.
** Netscript **
* It is no longer possible to send anything but strings or numbers to other scripts. (prevents exploits)
* Improve code for some netscript functions (@omuretsu)
** Script Editor **
* Added Solarized light/dark as theme (@CalvinTrops)
* Fixed sleeve namespace smart autocomplete.
** Hacknet Servers **
* Cores affect grow/weaken like they do on home computer
** Infiltration **
* Slash game modified to be easier.
** Misc. **
* Fix typo in corp (@Saynt_Garmo)
* Fixed a bug where corp wouldn't let you buyback shares. (@Saynt_Garmo)
* Fixed a bug where sleeves couldn't perform some crimes. (@Saynt_Garmo)
* Hospitalization and Eating noodles are now toasts (@Saynt_Garmo)
* Fixed some repeated code (@omuretsu)
* Fixed Character Overview preventing clicks underneath it even when hidden. (@omuretsu)
* Fixed typo in tutorial. (@omuretsu)
* Create Programs and Factions invitation badges now dissapear when you open their respective pages.
* Add killall script in character overview.
* Fixed bug in corp that made last city production be the production for all cities for newly created product.
* Fix bug that allowed reputation to transfer to new jobs.
* Fixed memory leak with ns2.
* nerf noodle bar
v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)
-------------------------------------------
---------------------------------------------------------------
** BREAKING (kindof) **
@ -55,7 +174,7 @@ v0.57.0 - 2021-10-16 It was too cheap! (hydroflame & community)
* nerf noodle bar
v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)
-------------------------------------------
------------------------------------------------------------------
** BREAKING **
@ -158,7 +277,7 @@ v0.56.0 - 2021-10-11 Trimming the backlog (hydroflame & community)
* nerf noodle bar
v0.55.0 - 2021-09-20 Material UI (hydroflame & community)
-------------------------------------------
---------------------------------------------------------
** Global **
@ -180,7 +299,7 @@ v0.55.0 - 2021-09-20 Material UI (hydroflame & community)
* nerf noodle bar
v0.54.0 - 2021-09-20 One big react node (hydroflame & community)
-------------------------------------------
----------------------------------------------------------------
** UI **
@ -224,7 +343,7 @@ v0.54.0 - 2021-09-20 One big react node (hydroflame & community)
* nerf noodle bar
v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)
-------------------------------------------
------------------------------------------------------------------
** Dev? **
@ -303,7 +422,7 @@ v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)
* nerf noodle bar
v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)
-------------------------------------------
-------------------------------------------------------
** Active Scripts page **
@ -334,7 +453,7 @@ v0.52.9 - 2021-08-27 Less lag! (hydroflame & community)
* nerf noodle bar
v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)
-------------------------------------------
-----------------------------------------------------------------------
** Script editor **
@ -354,7 +473,7 @@ v0.52.8 - 2021-08-23 Fixing the previous patch tbh ROUND 2 (hydroflame)
* nerf noodle bar
v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)
-------------------------------------------
---------------------------------------------------------------
** Netscript **
@ -382,7 +501,7 @@ v0.52.7 - 2021-08-21 Fixing the previous patch tbh (hydroflame)
* nerf noodle bar
v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)
-------------------------------------------
------------------------------------------------------
** Text Editor **
@ -404,7 +523,7 @@ v0.52.6 - 2021-08-21 Logboxes and VS-code (hydroflame)
* nerf noodle bar
v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)
-------------------------------------------
--------------------------------------------------------
** Terminal **
@ -430,7 +549,7 @@ v0.52.5 - 2021-08-19 CPU cores are useful!? (hydroflame)
* nerf noodle bar
v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)
-------------------------------------------
------------------------------------------------------
** Bladeburner **
@ -452,7 +571,7 @@ v0.52.4 - 2021-08-19 Bladeburner in React (hydroflame)
* nerf noodle bar
v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)
-------------------------------------------
-----------------------------------------------
** Gang **
@ -475,7 +594,7 @@ v0.52.3 - 2021-08-15 Gangs were OP (hydroflame)
* nerf noodle bar
v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
-------------------------------------------
--------------------------------------------------------------------
** Source-Files **
@ -493,7 +612,7 @@ v0.52.2 - 2021-08-15 Oh yeah, BN11 is a thing (drunk hydroflame tbh)
* nerf noodle bar
v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)
-------------------------------------------
-------------------------------------------------------
** Misc. **
@ -501,11 +620,9 @@ v0.52.1 - 2021-08-10 bugfixing (hydroflame & community)
* Fix typo in corporation Market Data.
* Fix typo in docs for hackPercent.
* The tutorial encourages the players to connect to home before creating `n00dles.script`
* The dark web `buy` command now accepts `-1` (one) and `--list` instead of just
`-l`. Helps some confused players.
* The dark web `buy` command now accepts `-1` (one) and `--list` instead of just `-l`. Helps some confused players.
* Character overview screen no longer hidden on the corporation screen.
* Infiltration difficulty display is now more explicit (It's a big arrow instead
of just one word.)
* Infiltration difficulty display is now more explicit (It's a big arrow instead of just one word.)
* Fix wrong ram value in tutorial. (@MageKing17)
* Plenty of augmentation description cleanup (@Kwazygloo)
* Plenty of typo/description fixed (@MageKing17)
@ -608,7 +725,7 @@ v0.51.10 - 2021-05-31 Focus Mark, Focus! (hydroflame)
* nerf noodle bar
v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)
---------------------------------------------------------------
---------------------------------------------------------------------------
**Alias**
@ -663,7 +780,7 @@ v0.51.9 - 2021-05-17 offline progress and exports! (hydroflame & community)
v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)
--------------------------------------------------------
--------------------------------------------------------------------
**Servers**
@ -720,7 +837,7 @@ v0.51.8 - 2021-05-07 It was there all along (hydroflame & community)
* nerf noodle bar
v0.51.7 - 2021-04-28 n00dles (hydroflame & community)
-----------------------------------------
-----------------------------------------------------
**Tutorial servers**
@ -779,7 +896,7 @@ v0.51.7 - 2021-04-28 n00dles (hydroflame & community)
v0.51.6 - 2021-04-28 Backdoor! (hydroflame & community)
------------------------------------------
-------------------------------------------------------
**Backdoor**

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

@ -24,11 +24,11 @@ secrets that you've been searching for.
Basic Gameplay <basicgameplay>
Advanced Gameplay <advancedgameplay>
Keyboard Shortcuts <shortcuts>
Script Editors <scripteditors>
Game Frozen or Stuck? <gamefrozen>
Guides & Tips <guidesandtips>
Tools & Resources <toolsandresources>
Changelog <changelog>
v1.0.0 script migration guide <v1.0.0_migration.rst>
Donate <https://paypal.me/danielyxie>
Indices and tables

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

@ -10,7 +10,7 @@ getPlayer() Netscript Function
Returns an object with the Player's stats. The object has the following properties::
{
hacking_skill: Current Hacking skill level
hacking: Current Hacking skill level
hp: Current health points
max_hp: Maximum health points
strength: Current Strength skill level

@ -54,7 +54,7 @@ In :ref:`netscriptjs`::
getTeamSize() <bladeburnerapi/getTeamSize>
setTeamSize() <bladeburnerapi/setTeamSize>
getCityEstimatedPopulation() <bladeburnerapi/getCityEstimatedPopulation>
getCityEstimatedCommunities() <bladeburnerapi/getCityEstimatedCommunities>
getCityCommunities() <bladeburnerapi/getCityCommunities>
getCityChaos() <bladeburnerapi/getCityChaos>
getCity() <bladeburnerapi/getCity>
switchCity() <bladeburnerapi/switchCity>

@ -93,6 +93,9 @@ This includes information such as function signatures, what they do, and their r
wget() <basicfunctions/wget>
getFavorToDonate() <basicfunctions/getFavorToDonate>
flags() <basicfunctions/flags>
alert() <basicfunctions/alert>
toast() <basicfunctions/toast>
tprintf() <basicfunctions/tprintf>
.. toctree::
:caption: Deprecated:

@ -13,25 +13,27 @@ TIX API can be purchased by visiting the World Stock Exchange in-game.
Access to the TIX API currently costs $5 billion. After you purchase it, you will retain this
access even after you 'reset' by installing Augmentations
**TIX API functions must be accessed through the stock namespace**
.. toctree::
:caption: API Functions:
getStockSymbols() <tixapi/getStockSymbols>
getStockPrice() <tixapi/getStockPrice>
getStockAskPrice() <tixapi/getStockAskPrice>
getStockBidPrice() <tixapi/getStockBidPrice>
getStockPosition() <tixapi/getStockPosition>
getStockMaxShares() <tixapi/getStockMaxShares>
getStockPurchaseCost() <tixapi/getStockPurchaseCost>
getStockSaleGain() <tixapi/getStockSaleGain>
buyStock() <tixapi/buyStock>
sellStock() <tixapi/sellStock>
shortStock() <tixapi/shortStock>
getSymbols() <tixapi/getSymbols>
getPrice() <tixapi/getPrice>
getAskPrice() <tixapi/getAskPrice>
getBidPrice() <tixapi/getBidPrice>
getPosition() <tixapi/getPosition>
getMaxShares() <tixapi/getMaxShares>
getPurchaseCost() <tixapi/getPurchaseCost>
getSaleGain() <tixapi/getSaleGain>
buy() <tixapi/buy>
sell() <tixapi/sell>
short() <tixapi/short>
sellShort() <tixapi/sellShort>
placeOrder() <tixapi/placeOrder>
cancelOrder() <tixapi/cancelOrder>
getOrders() <tixapi/getOrders>
getStockVolatility() <tixapi/getStockVolatility>
getStockForecast() <tixapi/getStockForecast>
getVolatility() <tixapi/getVolatility>
getForecast() <tixapi/getForecast>
purchase4SMarketData() <tixapi/purchase4SMarketData>
purchase4SMarketDataTixApi() <tixapi/purchase4SMarketDataTixApi>

@ -1,37 +1,37 @@
.. _netscriptjs:
NetscriptJS (Netscript 2.0)
===========================
Netscript 2.0, or Netscript JS, is the new and improved version of Netscript that
allows users to write (almost) full-fledged Javascript code in their scripts, while
NS2
===
The improved version of Netscript that
allows users to write full-fledged Javascript code in their scripts, while
still being able to access the Netscript functions.
NetscriptJS was developed primarily by `Github user jaguilar <https://github.com/jaguilar>`_
ns2 was developed primarily by `Github user jaguilar <https://github.com/jaguilar>`_
On top of having almost all of the features and capabilities of JavaScript, NetscriptJS is also
significantly faster than Netscript 1.0.
On top of having almost all of the features and capabilities of JavaScript, ns2 is also
significantly faster than ns1.
This documentation will not go over any of the additional features of NetscriptJS, since
This documentation will not go over any of the additional features of ns2, since
there is plenty of documentation on Javascript available on the web.
Browser compatibility
---------------------
As of the time of writing this, a few browsers do not support `dynamic import <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import>`_ functionality and therefore cannot run NetscriptJS scripts. These browsers will thus only be capable of using Netscript 1.0.
As of the time of writing this, a few browsers do not support `dynamic import <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import>`_ functionality and therefore cannot run ns2 scripts. These browsers will thus only be capable of using ns1.
How to use NetscriptJS
How to use ns2
----------------------
Working with NetscriptJS scripts is the same as Netscript 1.0 scripts. The only difference
is that NetscriptJS scripts use the ".ns" or ".js" extension rather than ".script". E.g.::
Working with ns2 scripts is the same as ns1 scripts. The only difference
is that ns2 scripts use the ".ns" or ".js" extension rather than ".script". E.g.::
$ nano foo.ns
$ run foo.ns -t 100 arg1 arg2 arg3
exec("foo.ns", "purchasedServer1", "100", "randomArg");
The caveat when using NetscriptJS to write scripts is that your code must be
The caveat when using ns2 to write scripts is that your code must be
asynchronous. Furthermore, instead of using the global scope and executing your code
sequentially, NetscriptJS uses a :code:`main()` function as an entry point.
sequentially, ns2 uses a :code:`main()` function as an entry point.
Furthermore, the "Netscript environment" must be passed into a NetscriptJS script through
Furthermore, the "Netscript environment" must be passed into a ns2 script through
the main function. This environment includes all of the pre-defined Netscript functions
(:code:`hack()`, :code:`exec`, etc.) as well as the arguments you pass to the script.
@ -53,6 +53,9 @@ Here is a summary of all rules you need to follow when writing Netscript JS code
* sleep
* prompt
* wget
* scp
* write
* writePort
* Any function that contains :code:`await` must be declared as :code:`async`
@ -60,9 +63,9 @@ Here is a summary of all rules you need to follow when writing Netscript JS code
* Any functions that you want to be visible from other scripts must be marked with :code:`export`.
* **Do not write any infinite loops without using a** :code:`sleep` **or one of the timed Netscript functions like** :code:`hack`. Doing so will crash your game.
* **Do not write any infinite loops without using a** :code:`sleep` **or one of the timed Netscript functions like** :code:`hack`. Doing so will freeze your game.
* Any global variable declared in a NetscriptJS script is shared between all instances of that
* Any global variable declared in a ns2 script is shared between all instances of that
script. For example, assume you write a script *foo.ns* and declared a global variable like so::
//foo.ns
@ -88,93 +91,68 @@ Here is a summary of all rules you need to follow when writing Netscript JS code
the script will repeatedly print the value 5).
These global variables can be thought of as `C++ static class members <https://www.tutorialspoint.com/cplusplus/cpp_static_members.htm>`_,
where a NetscriptJS script is a class and a global variable is a static member within that class.
where a ns2 script is a class and a global variable is a static member within that class.
Warnings
--------
The NetscriptJS evaluation engine works by converting your code into a blob URL and then
using a dynamic import to load your code as a module. Every unique NetscriptJS script
is loaded as its own module. This means that
making a small edit to a NetscriptJS script results in a new module being generated.
Example
-------
At this point, we have been unable to find a method for deleting modules from browsers so that
they get garbage collected.
early-hack-template.script
The result is that these modules from NetscriptJS scripts accumulate in your browser,
using memory that never gets released. Over time, this results in a memory-leak type
situation that can slow down your computer.
.. code-block:: javascript
Therefore, there are two recommendations for those who decide to use NetscriptJS:
1. Every now and then, close and re-open the game. This will clear all of the modules.
To be safe, I recommend **completely** closing the game's tab and then re-opening it.
Depending on your browser, a refresh or page reload does not always clear the modules.
2. Only use NetscriptJS scripts when needed. It is very unlikely that NetscriptJS
is needed for very simple scripts. By doing this, you will reduce the number of modules
that are loaded.
Examples
--------
**Script Scheduler (scriptScheduler.ns)**
This script shows some of the new functionality that is available in NetscriptJS,
including objects and object constructors, changing an object's prototype, and
importing other NetscriptJS scripts::
import {tprintColored} from "tprintColored.ns"; //Importing from other NetscriptJS scripts works!
function ScriptJob(params) {
if (params.fn == null) {
throw new Error("No Filename (fn) passed into ScriptJob ctor");
var target = args[0];
var moneyThresh = getServerMaxMoney(target) * 0.75;
var securityThresh = getServerMinSecurityLevel(target) + 5;
if (fileExists("BruteSSH.exe", "home")) {
brutessh(target);
}
nuke(target);
while(true) {
if (getServerSecurityLevel(target) > securityThresh) {
weaken(target);
} else if (getServerMoneyAvailable(target) < moneyThresh) {
grow(target);
} else {
hack(target);
}
}
this.fn = params.fn;
this.threads = params.threads ? params.threads : 1;
this.args = params.args ? params.args : [];
}
early-hack-template.ns
ScriptJob.prototype.run = function(ns) {
let runArgs = [this.fn, this.threads].concat(this.args);
if (!ns.run.apply(this, runArgs)) {
throw new Error("Unable to run " + this.fn + " on " +ns.getHostname());
}
tprintColored("Running " + this.fn + " on " + ns.getHostname(), "blue");
}
ScriptJob.prototype.exec = function(ns, target) {
ns.scp(this.fn, target);
let execArgs = [this.fn, target, this.threads].concat(this.args);
if (!ns.exec.apply(this, execArgs)) {
throw new Error("Unable to execute " + this.fn + " on " + target);
}
tprintColored("Executing " + this.fn + " on " + target, "blue");
}
.. code-block:: javascript
export async function main(ns) {
tprintColored("Starting scriptScheduler.ns", "red");
try {
let job = new ScriptJob({
fn: "test.js",
threads: 1,
args: ["foodnstuff"]
});
job.run(ns);
job.exec(ns, "foodnstuff");
} catch (e) {
ns.tprint("Exception thrown in scriptScheduler.ns: " + e);
var target = ns.args[0];
var moneyThresh = ns.getServerMaxMoney(target) * 0.75;
var securityThresh = ns.getServerMinSecurityLevel(target) + 5;
if (ns.fileExists("BruteSSH.exe", "home")) {
ns.brutessh(target);
}
ns.nuke(target);
while(true) {
if (ns.getServerSecurityLevel(target) > securityThresh) {
await ns.weaken(target);
} else if (ns.getServerMoneyAvailable(target) < moneyThresh) {
await ns.grow(target);
} else {
await ns.hack(target);
}
}
}
Final Note
----------
NetscriptJS opens up a lot of possibilities when scripting. I look forward to seeing
the scripts that people come up with. Just remember that the power and capabilities of
NetscriptJS come with risks. Please backup your save if you're going to experiment with
NetscriptJS and report any serious exploits.
What's with the weird comment
-----------------------------
With great power comes great responsibility
You may have noticed that every new ns2 file will contains the following comment.
Happy hacking
.. code-block:: javascript
/**
* @param {NS} ns
**/
This command is used to help the text editor autocomplete functions in the Netscript API. You can enabling it by pressing ctrl+space after `ns.`
.. image:: autocomplete.png
The comment can be safely removed but it is recommended to keep it as it will help you.

@ -22,5 +22,4 @@ into a script using::
args.length
**WARNING: Do not try to modify the args array. This will break the game.
I will do my best to prevent players from doing this.**
**WARNING: Do not try to modify the args array. This will break the game.**

@ -1,7 +1,7 @@
buyStock() Netscript Function
buy() Netscript Function
=============================
.. js:function:: buyStock(sym, shares)
.. js:function:: buy(sym, shares)
:RAM cost: 2.5 GB
:param string sym: Symbol of stock to purchase

@ -1,7 +1,7 @@
getStockAskPrice() Netscript Function
getAskPrice() Netscript Function
=====================================
.. js:function:: getStockAskPrice(sym)
.. js:function:: getAskPrice(sym)
:RAM cost: 2 GB
:param string sym: Stock symbol

@ -1,7 +1,7 @@
getStockBidPrice() Netscript Function
getBidPrice() Netscript Function
=====================================
.. js:function:: getStockBidPrice(sym)
.. js:function:: getBidPrice(sym)
:RAM cost: 2 GB
:param string sym: Stock symbol

@ -1,7 +1,7 @@
getStockForecast() Netscript Function
getForecast() Netscript Function
=====================================
.. js:function:: getStockForecast(sym)
.. js:function:: getForecast(sym)
:RAM cost: 2.5 GB
:param string sym: Symbol of stock

@ -1,7 +1,7 @@
getStockMaxShares() Netscript Function
getMaxShares() Netscript Function
======================================
.. js:function:: getStockMaxShares(sym)
.. js:function:: getMaxShares(sym)
:RAM cost: 2 GB
:param string sym: Stock symbol

@ -1,7 +1,7 @@
getStockPosition() Netscript Function
getPosition() Netscript Function
=====================================
.. js:function:: getStockPosition(sym)
.. js:function:: getPosition(sym)
:RAM cost: 2 GB
:param string sym: Stock symbol
@ -21,7 +21,7 @@ getStockPosition() Netscript Function
Example::
pos = getStockPosition("ECP");
pos = getPosition("ECP");
shares = pos[0];
avgPx = pos[1];
sharesShort = pos[2];

@ -1,7 +1,7 @@
getStockPrice() Netscript Function
getPrice() Netscript Function
==================================
.. js:function:: getStockPrice(sym)
.. js:function:: getPrice(sym)
:RAM cost: 2 GB
:param string sym: Stock symbol
@ -15,4 +15,4 @@ getStockPrice() Netscript Function
Example::
getStockPrice("FSIG");
getPrice("FSIG");

@ -1,7 +1,7 @@
getStockPurchaseCost() Netscript Function
getPurchaseCost() Netscript Function
=========================================
.. js:function:: getStockPurchaseCost(sym, shares, posType)
.. js:function:: getPurchaseCost(sym, shares, posType)
:RAM cost: 2 GB
:param string sym: Stock symbol

@ -1,7 +1,7 @@
getStockSaleGain() Netscript Function
getSaleGain() Netscript Function
=====================================
.. js:function:: getStockSaleGain(sym, shares, posType)
.. js:function:: getSaleGain(sym, shares, posType)
:RAM cost: 2 GB
:param string sym: Stock symbol

@ -1,7 +1,7 @@
getStockSymbols() Netscript Function()
getSymbols() Netscript Function()
======================================
.. js:function:: getStockSymbols()
.. js:function:: getSymbols()
:RAM cost: 2 GB

@ -1,7 +1,7 @@
sellStock() Netscript Function
sell() Netscript Function
==============================
.. js:function:: sellStock(sym, shares)
.. js:function:: sell(sym, shares)
:RAM cost: 2.5 GB
:param string sym: Symbol of stock to sell

@ -1,7 +1,7 @@
shortStock() Netscript Function
short() Netscript Function
===============================
.. js:function:: shortStock(sym, shares)
.. js:function:: short(sym, shares)
:RAM cost: 2.5 GB
:param string sym: Symbol of stock to short

@ -1,140 +0,0 @@
.. _scripteditors:
Script Editors
==============
Third-party libraries are used to implement the game's Script Editor(s). There are
currently two options for the Script Editor:
* `Ace <https://ace.c9.io/>`_
* `CodeMirror <https://codemirror.net/>`_
You can select which of the two editors you want to use on the Script Editor page
('Create Script' on the main menu).
Ace was the game's original Script Editor, while CodeMirror was added later in
v0.43.0. The two editors share many of the same features, so there is not a significant
difference between the two. Currently, CodeMirror is slightly more modern,
more customizable, and has a few quality-of-life improvements compared to Ace.
Universal Key Bindings
----------------------
These keyboard shortcuts are available in both the Ace and CodeMirror editors, regardless
of what key binding option you are using:
============= ===========================================================================
Shortcut Action
============= ===========================================================================
Ctrl + b Save script and return to :ref:`terminal`
Ctrl + space Show Autocomplete Hints
============= ===========================================================================
.. _scripteditor_linter:
Linter
------
Both script editors contain a linter, which is a tool that analyzes your
code and flags anything it thinks might be an error. You can see
warnings and errors from the linter on the left-hand side of the script editor. There
will be an icon on whatever lines the linter thinks might be problematic. Hovering
over the icon will display information on what the issue is.
Note that **just because the linter shows an error/warning, this does NOT automatically mean that**
**your script is broken and will fail to run.** This is especially true if you are using
:ref:`netscriptjs`. The linter used by the script editors isn't necessarily perfect or
up-to-date. Furthermore, the linter does not affect anything when you actually run scripts.
Ace
---
The following documents what the different settings/options do for the Ace editor,
as well as the different key binding settings. Note that the
information for the key bindings may not be completely comprehensive. You'll
have to dig into the editor source code if you want to learn more.
Settings
~~~~~~~~
===================== ===========================================================================================================
Setting Effect
===================== ===========================================================================================================
Theme Switch between different color schemes
Key Binding Switch between different key binding options. This changes what keyboard shortcuts are available
Highlight Active Line When enabled, the line on which the cursor currently resides will be highlighted.
Show Invisibles When enabled, you will be able to view hidden whitespace characters such as spaces, tabs, and newlines.
Use Soft Tab When enabled, tabs will be replaced with spaces
Max Error Count Specifies the (approximate) number of lines that will be linted
===================== ===========================================================================================================
Ace Key Bindings
~~~~~~~~~~~~~~~~
For Ace, the "Ace" Key Binding setting uses the default configuration. A list of these
`can be found here <https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcuts>`_.
Vim Key Bindings
~~~~~~~~~~~~~~~~
For Ace, the "Vim" Key Binding setting configures the editor to use
`Vim <https://en.wikipedia.org/wiki/Vim_(text_editor)>`_ key mappings. Note that while this tries
to emulate Vim features as faithfully as possible, it is not a complete Vim implementation.
Since I'm not familiar with Vim, I'll leave
`Ace's Vim Mode implementation here <https://github.com/ajaxorg/ace/blob/96088d0fc292daf0706b2d029cc03c3799be5974/lib/ace/keyboard/vim.js#L860>`_,
which I believe shows most of the implemented features.
Note that the following Vim Ex commands will properly save the script and/or quit the editor in game:
======= ==============================================
Command Effect
======= ==============================================
:w Save the script and return to :ref:`terminal`
:q Return to :ref:`terminal` **WITHOUT** saving
:x Save the script and return to :ref:`terminal`
:wq Save the script and return to :ref:`terminal`
======= ==============================================
Emacs Key Bindings
~~~~~~~~~~~~~~~~~~
For Ace, the "Emacs" Key Binding setting configures the editor to use
`Emacs <https://en.wikipedia.org/wiki/Emacs>`_ key mappings. Note that while this tries
to emulate the Emacs key mappings as faithfully as possible, it won't necessarily be a
complete implementation.
Since I'm not familiar with Emacs, I'll leave
`Ace's Emacs Mode implementation here <https://github.com/ajaxorg/ace/blob/96088d0fc292daf0706b2d029cc03c3799be5974/lib/ace/keyboard/emacs.js#L343>`_,
which I believe shows most of the implemented features.
CodeMirror
----------
The following documents what the different settings/options do for the CodeMirror editor,
as well as the shortcuts for the different key binding settings. Note that the
information for the key bindings may not be completely comprehensive. You'll
have to dig into the editor source code if you want to learn everything.
Settings
~~~~~~~~
========================== ===========================================================================================================
Setting Effect
========================== ===========================================================================================================
Theme Switch between different color schemes
Key Binding Switch between different key binding options. This changes what keyboard shortcuts are available
Highlight Active Line When enabled, the line on which the cursor currently resides will be highlighted.
Show Invisibles When enabled, you will be able to view hidden whitespace characters such as spaces, tabs, and newlines.
Use Soft Tab When enabled, tabs will be replaced with spaces
Auto-Close Brackets/Quotes When enabled, any opening brackets or quotes that are typed will be closed
Enable Linting Enable/Disable the :ref:`scripteditor_linter`
Continue Comments When enabled, pressing 'Enter' inside a comment block will continue the comment on the next line
========================== ===========================================================================================================
Default Key Bindings
~~~~~~~~~~~~~~~~~~~~
.. todo:: Fill out
Sublime Key Bindings
~~~~~~~~~~~~~~~~~~~~
.. todo:: Fill out
Vim Key Bindings
~~~~~~~~~~~~~~~~
.. todo:: Fill out
Emacs Key Bindings
~~~~~~~~~~~~~~~~~~
.. todo:: Fill out

@ -0,0 +1,37 @@
v1.0.0 Migration Guide
======================
In v1.0.0 a few API have been broken.
migrated (only for ns2):
* bladeburner.getActionTime will return milliseconds instead of seconds.
* getHackTime will return milliseconds instead of seconds.
* getGrowTime will return milliseconds instead of seconds.
* getWeakenTime will return milliseconds instead of seconds.
* hackAnalyzePercent renamed to hackAnalyze
* hackAnalyzePercent will return decimal instead of percentage
* hackChance (not formulas.basic.hackChance) renamed to hackAnalyzeChance
* formulas.basic is split into formulas.skills and formulas.hacking
not migrated (require manual changes sometimes):
* getPlayer().hacking_skill renamed `hacking`
* same thing in sleeves
* getPurchasedServers won't let you query for ips instead of hostnames.
* getStats is deprecated in favor getPlayer
* getCharacterInformation is deprecated in favor getPlayer
* getServerRam deprecated in favor of getServerMaxRam and getServerUsedRam
* getServerBaseSecurityLevel will be deprecated in favor of nothing, it's not really used.
* sleep can no longer be called simultenaously, a new function called asleep will let you.
* write returns promise (needs to be await ed).
* scp returns a promise (needs to be await ed).
* free port, write, read
* write, read does not support port anymore, writePort and readPort does.
Upon loading v1.0.0 the game will apply some rules to change everything.
The game never changes a file before making a backup called `BACKUP_filename.ext`, then,
in the script it will change whatever it thinks it should change.
But will prefix the modified line with the original line.
A file called `v1_DETECTED_CHANGES.txt` will point out every file with some possible problem.

@ -1,15 +0,0 @@
version: "3.4"
services:
web:
image: bitburner:dev
build:
context: .
dockerfile: Dockerfile
target: dev
ports:
- "8000:8000"
volumes:
- ./src:/app/src
- ./css:/app/css
- ./utils:/app/utils
- ./test:/app/test

BIN
electron/icon.icns Normal file

Binary file not shown.

BIN
electron/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -1,11 +1,13 @@
const { app, BrowserWindow, Menu, globalShortcut, shell } = require("electron");
const debug = false;
Menu.setApplicationMenu(false);
function createWindow() {
const win = new BrowserWindow({
show: false,
webPreferences: {
devTools: true,
devTools: debug,
},
});
@ -13,7 +15,7 @@ function createWindow() {
win.maximize();
win.loadFile("index.html");
win.show();
win.webContents.openDevTools();
if (debug) win.webContents.openDevTools();
globalShortcut.register("f5", function () {
win.loadFile("index.html");
});

@ -3,5 +3,22 @@
"version": "1.0.0",
"description": "A cyberpunk-themed programming incremental game",
"main": "main.js",
"author": "Daniel Xie"
"author": "Daniel Xie & Olivier Gagnon",
"mac": {
"icon": "./public/icons/mac/icon.icns",
"category": "public.app-category.games"
},
"win": {
"icon": "./public/icons/png/256x256.png"
},
"files": [
"./build/**/*",
"./dist/**/*",
"./node_modules/**/*",
"./public/**/*",
"*.js"
],
"directories": {
"buildResources": "public"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@ -44,7 +44,12 @@
-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 */
}

24960
input/bitburner.api.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [agility\_exp\_mult](./bitburner.augmentationstats.agility_exp_mult.md)
## AugmentationStats.agility\_exp\_mult property
Multipler to agility experience gain rate
<b>Signature:</b>
```typescript
agility_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [agility\_mult](./bitburner.augmentationstats.agility_mult.md)
## AugmentationStats.agility\_mult property
Multipler to agility skill
<b>Signature:</b>
```typescript
agility_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [bladeburner\_analysis\_mult](./bitburner.augmentationstats.bladeburner_analysis_mult.md)
## AugmentationStats.bladeburner\_analysis\_mult property
Multipler to effectiveness in Bladeburner Field Analysis
<b>Signature:</b>
```typescript
bladeburner_analysis_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [bladeburner\_max\_stamina\_mult](./bitburner.augmentationstats.bladeburner_max_stamina_mult.md)
## AugmentationStats.bladeburner\_max\_stamina\_mult property
Multipler to Bladeburner max stamina
<b>Signature:</b>
```typescript
bladeburner_max_stamina_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [bladeburner\_stamina\_gain\_mult](./bitburner.augmentationstats.bladeburner_stamina_gain_mult.md)
## AugmentationStats.bladeburner\_stamina\_gain\_mult property
Multipler to Bladeburner stamina gain rate
<b>Signature:</b>
```typescript
bladeburner_stamina_gain_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [bladeburner\_success\_chance\_mult](./bitburner.augmentationstats.bladeburner_success_chance_mult.md)
## AugmentationStats.bladeburner\_success\_chance\_mult property
Multipler to success chance in Bladeburner contracts/operations
<b>Signature:</b>
```typescript
bladeburner_success_chance_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [charisma\_exp\_mult](./bitburner.augmentationstats.charisma_exp_mult.md)
## AugmentationStats.charisma\_exp\_mult property
Multipler to charisma experience gain rate
<b>Signature:</b>
```typescript
charisma_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [charisma\_mult](./bitburner.augmentationstats.charisma_mult.md)
## AugmentationStats.charisma\_mult property
Multipler to charisma skill
<b>Signature:</b>
```typescript
charisma_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [company\_rep\_mult](./bitburner.augmentationstats.company_rep_mult.md)
## AugmentationStats.company\_rep\_mult property
Multipler to amount of reputation gained when working
<b>Signature:</b>
```typescript
company_rep_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [crime\_money\_mult](./bitburner.augmentationstats.crime_money_mult.md)
## AugmentationStats.crime\_money\_mult property
Multipler to amount of money gained from crimes
<b>Signature:</b>
```typescript
crime_money_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [crime\_success\_mult](./bitburner.augmentationstats.crime_success_mult.md)
## AugmentationStats.crime\_success\_mult property
Multipler to crime success rate
<b>Signature:</b>
```typescript
crime_success_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [defense\_exp\_mult](./bitburner.augmentationstats.defense_exp_mult.md)
## AugmentationStats.defense\_exp\_mult property
Multipler to defense experience gain rate
<b>Signature:</b>
```typescript
defense_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [defense\_mult](./bitburner.augmentationstats.defense_mult.md)
## AugmentationStats.defense\_mult property
Multipler to defense skill
<b>Signature:</b>
```typescript
defense_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [dexterity\_exp\_mult](./bitburner.augmentationstats.dexterity_exp_mult.md)
## AugmentationStats.dexterity\_exp\_mult property
Multipler to dexterity experience gain rate
<b>Signature:</b>
```typescript
dexterity_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [dexterity\_mult](./bitburner.augmentationstats.dexterity_mult.md)
## AugmentationStats.dexterity\_mult property
Multipler to dexterity skill
<b>Signature:</b>
```typescript
dexterity_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [faction\_rep\_mult](./bitburner.augmentationstats.faction_rep_mult.md)
## AugmentationStats.faction\_rep\_mult property
Multipler to amount of reputation gained when working
<b>Signature:</b>
```typescript
faction_rep_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_chance\_mult](./bitburner.augmentationstats.hacking_chance_mult.md)
## AugmentationStats.hacking\_chance\_mult property
Multipler to chance of successfully performing a hack
<b>Signature:</b>
```typescript
hacking_chance_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_exp\_mult](./bitburner.augmentationstats.hacking_exp_mult.md)
## AugmentationStats.hacking\_exp\_mult property
Multipler to hacking experience gain rate
<b>Signature:</b>
```typescript
hacking_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_grow\_mult](./bitburner.augmentationstats.hacking_grow_mult.md)
## AugmentationStats.hacking\_grow\_mult property
Multipler to amount of money injected into servers using grow
<b>Signature:</b>
```typescript
hacking_grow_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_money\_mult](./bitburner.augmentationstats.hacking_money_mult.md)
## AugmentationStats.hacking\_money\_mult property
Multipler to amount of money the player gains from hacking
<b>Signature:</b>
```typescript
hacking_money_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_mult](./bitburner.augmentationstats.hacking_mult.md)
## AugmentationStats.hacking\_mult property
Multipler to hacking skill
<b>Signature:</b>
```typescript
hacking_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacking\_speed\_mult](./bitburner.augmentationstats.hacking_speed_mult.md)
## AugmentationStats.hacking\_speed\_mult property
Multipler to hacking speed
<b>Signature:</b>
```typescript
hacking_speed_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacknet\_node\_core\_cost\_mult](./bitburner.augmentationstats.hacknet_node_core_cost_mult.md)
## AugmentationStats.hacknet\_node\_core\_cost\_mult property
Multipler to cost of core for a Hacknet Node
<b>Signature:</b>
```typescript
hacknet_node_core_cost_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacknet\_node\_level\_cost\_mult](./bitburner.augmentationstats.hacknet_node_level_cost_mult.md)
## AugmentationStats.hacknet\_node\_level\_cost\_mult property
Multipler to cost of leveling up a Hacknet Node
<b>Signature:</b>
```typescript
hacknet_node_level_cost_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacknet\_node\_money\_mult](./bitburner.augmentationstats.hacknet_node_money_mult.md)
## AugmentationStats.hacknet\_node\_money\_mult property
Multipler to amount of money produced by Hacknet Nodes
<b>Signature:</b>
```typescript
hacknet_node_money_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacknet\_node\_purchase\_cost\_mult](./bitburner.augmentationstats.hacknet_node_purchase_cost_mult.md)
## AugmentationStats.hacknet\_node\_purchase\_cost\_mult property
Multipler to cost of purchasing a Hacknet Node
<b>Signature:</b>
```typescript
hacknet_node_purchase_cost_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [hacknet\_node\_ram\_cost\_mult](./bitburner.augmentationstats.hacknet_node_ram_cost_mult.md)
## AugmentationStats.hacknet\_node\_ram\_cost\_mult property
Multipler to cost of ram for a Hacknet Node
<b>Signature:</b>
```typescript
hacknet_node_ram_cost_mult?: number;
```

@ -0,0 +1,49 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md)
## AugmentationStats interface
Data representing the internal values of an Augmentation.
<b>Signature:</b>
```typescript
export interface AugmentationStats
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [agility\_exp\_mult?](./bitburner.augmentationstats.agility_exp_mult.md) | number | <i>(Optional)</i> Multipler to agility experience gain rate |
| [agility\_mult?](./bitburner.augmentationstats.agility_mult.md) | number | <i>(Optional)</i> Multipler to agility skill |
| [bladeburner\_analysis\_mult?](./bitburner.augmentationstats.bladeburner_analysis_mult.md) | number | <i>(Optional)</i> Multipler to effectiveness in Bladeburner Field Analysis |
| [bladeburner\_max\_stamina\_mult?](./bitburner.augmentationstats.bladeburner_max_stamina_mult.md) | number | <i>(Optional)</i> Multipler to Bladeburner max stamina |
| [bladeburner\_stamina\_gain\_mult?](./bitburner.augmentationstats.bladeburner_stamina_gain_mult.md) | number | <i>(Optional)</i> Multipler to Bladeburner stamina gain rate |
| [bladeburner\_success\_chance\_mult?](./bitburner.augmentationstats.bladeburner_success_chance_mult.md) | number | <i>(Optional)</i> Multipler to success chance in Bladeburner contracts/operations |
| [charisma\_exp\_mult?](./bitburner.augmentationstats.charisma_exp_mult.md) | number | <i>(Optional)</i> Multipler to charisma experience gain rate |
| [charisma\_mult?](./bitburner.augmentationstats.charisma_mult.md) | number | <i>(Optional)</i> Multipler to charisma skill |
| [company\_rep\_mult?](./bitburner.augmentationstats.company_rep_mult.md) | number | <i>(Optional)</i> Multipler to amount of reputation gained when working |
| [crime\_money\_mult?](./bitburner.augmentationstats.crime_money_mult.md) | number | <i>(Optional)</i> Multipler to amount of money gained from crimes |
| [crime\_success\_mult?](./bitburner.augmentationstats.crime_success_mult.md) | number | <i>(Optional)</i> Multipler to crime success rate |
| [defense\_exp\_mult?](./bitburner.augmentationstats.defense_exp_mult.md) | number | <i>(Optional)</i> Multipler to defense experience gain rate |
| [defense\_mult?](./bitburner.augmentationstats.defense_mult.md) | number | <i>(Optional)</i> Multipler to defense skill |
| [dexterity\_exp\_mult?](./bitburner.augmentationstats.dexterity_exp_mult.md) | number | <i>(Optional)</i> Multipler to dexterity experience gain rate |
| [dexterity\_mult?](./bitburner.augmentationstats.dexterity_mult.md) | number | <i>(Optional)</i> Multipler to dexterity skill |
| [faction\_rep\_mult?](./bitburner.augmentationstats.faction_rep_mult.md) | number | <i>(Optional)</i> Multipler to amount of reputation gained when working |
| [hacking\_chance\_mult?](./bitburner.augmentationstats.hacking_chance_mult.md) | number | <i>(Optional)</i> Multipler to chance of successfully performing a hack |
| [hacking\_exp\_mult?](./bitburner.augmentationstats.hacking_exp_mult.md) | number | <i>(Optional)</i> Multipler to hacking experience gain rate |
| [hacking\_grow\_mult?](./bitburner.augmentationstats.hacking_grow_mult.md) | number | <i>(Optional)</i> Multipler to amount of money injected into servers using grow |
| [hacking\_money\_mult?](./bitburner.augmentationstats.hacking_money_mult.md) | number | <i>(Optional)</i> Multipler to amount of money the player gains from hacking |
| [hacking\_mult?](./bitburner.augmentationstats.hacking_mult.md) | number | <i>(Optional)</i> Multipler to hacking skill |
| [hacking\_speed\_mult?](./bitburner.augmentationstats.hacking_speed_mult.md) | number | <i>(Optional)</i> Multipler to hacking speed |
| [hacknet\_node\_core\_cost\_mult?](./bitburner.augmentationstats.hacknet_node_core_cost_mult.md) | number | <i>(Optional)</i> Multipler to cost of core for a Hacknet Node |
| [hacknet\_node\_level\_cost\_mult?](./bitburner.augmentationstats.hacknet_node_level_cost_mult.md) | number | <i>(Optional)</i> Multipler to cost of leveling up a Hacknet Node |
| [hacknet\_node\_money\_mult?](./bitburner.augmentationstats.hacknet_node_money_mult.md) | number | <i>(Optional)</i> Multipler to amount of money produced by Hacknet Nodes |
| [hacknet\_node\_purchase\_cost\_mult?](./bitburner.augmentationstats.hacknet_node_purchase_cost_mult.md) | number | <i>(Optional)</i> Multipler to cost of purchasing a Hacknet Node |
| [hacknet\_node\_ram\_cost\_mult?](./bitburner.augmentationstats.hacknet_node_ram_cost_mult.md) | number | <i>(Optional)</i> Multipler to cost of ram for a Hacknet Node |
| [strength\_exp\_mult?](./bitburner.augmentationstats.strength_exp_mult.md) | number | <i>(Optional)</i> Multipler to strength experience gain rate |
| [strength\_mult?](./bitburner.augmentationstats.strength_mult.md) | number | <i>(Optional)</i> Multipler to strength skill |
| [work\_money\_mult?](./bitburner.augmentationstats.work_money_mult.md) | number | <i>(Optional)</i> Multipler to amount of money gained from working |

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [strength\_exp\_mult](./bitburner.augmentationstats.strength_exp_mult.md)
## AugmentationStats.strength\_exp\_mult property
Multipler to strength experience gain rate
<b>Signature:</b>
```typescript
strength_exp_mult?: number;
```

@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) &gt; [bitburner](./bitburner.md) &gt; [AugmentationStats](./bitburner.augmentationstats.md) &gt; [strength\_mult](./bitburner.augmentationstats.strength_mult.md)
## AugmentationStats.strength\_mult property
Multipler to strength skill
<b>Signature:</b>
```typescript
strength_mult?: number;
```

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