mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 14:28:36 +02:00
Compare commits
199 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f55551c0cd | ||
|
|
cc5247ac89 | ||
|
|
c67f32cdc1 | ||
|
|
cbff2a420b | ||
|
|
4c4c4a0335 | ||
|
|
40b89baca1 | ||
|
|
ed93fea141 | ||
|
|
027db7e867 | ||
|
|
abbf99f2cb | ||
|
|
7050c90378 | ||
|
|
bda1daf49f | ||
|
|
d8fee8e25a | ||
|
|
3c6b5a1a83 | ||
|
|
403beef69e | ||
|
|
ec9e7ffa3a | ||
|
|
dd9849f53d | ||
|
|
99954ebd1e | ||
|
|
886f402a43 | ||
|
|
68405b2873 | ||
|
|
10215a924c | ||
|
|
0d6015104e | ||
|
|
4d1cdaad32 | ||
|
|
7240bbe8b7 | ||
|
|
8bc67f542a | ||
|
|
b65bd62345 | ||
|
|
1aa53739cc | ||
|
|
469c70ed4b | ||
|
|
606b4bee95 | ||
|
|
becca87224 | ||
|
|
ea8f5cede7 | ||
|
|
e51527aa86 | ||
|
|
5f2a1c3f27 | ||
|
|
7f852373d8 | ||
|
|
ae8f26f03b | ||
|
|
8e4492685d | ||
|
|
72a631d4ed | ||
|
|
8bf13b6fd3 | ||
|
|
ad3b217b8f | ||
|
|
e03a366f12 | ||
|
|
db26d054fc | ||
|
|
ab207ce36c | ||
|
|
40babcb2ee | ||
|
|
912fc98d3a | ||
|
|
4503da6226 | ||
|
|
113af6e711 | ||
|
|
294603fff8 | ||
|
|
396e71955e | ||
|
|
573a714fc6 | ||
|
|
4f83d6a58a | ||
|
|
7f6b96fda0 | ||
|
|
f75c185d39 | ||
|
|
97ea35bd5b | ||
|
|
b72eb125f2 | ||
|
|
f3c32d70f2 | ||
|
|
708950350a | ||
|
|
87f2ae459d | ||
|
|
0d55b957f1 | ||
|
|
8dad2e746f | ||
|
|
7cbde69da8 | ||
|
|
9d9f6b4dcd | ||
|
|
2e9dc32deb | ||
|
|
75706d273a | ||
|
|
c1f842e5c7 | ||
|
|
27a6b619eb | ||
|
|
00522fb8f3 | ||
|
|
b44050cfec | ||
|
|
f4655b8e1b | ||
|
|
6c730d46f4 | ||
|
|
df237b0842 | ||
|
|
21162c8cdd | ||
|
|
ce9ceb05a3 | ||
|
|
48396bf8cb | ||
|
|
2ae3ac52f1 | ||
|
|
e2e9b084bc | ||
|
|
4e07900c5a | ||
|
|
ebae35b1fb | ||
|
|
d25254caf1 | ||
|
|
003be33886 | ||
|
|
3c996a47ea | ||
|
|
ad5a1c4bac | ||
|
|
6e028a0744 | ||
|
|
8b7166e4ed | ||
|
|
2f46831ad1 | ||
|
|
802f2f1c66 | ||
|
|
8f684fa74c | ||
|
|
e1aff1a315 | ||
|
|
350679bc83 | ||
|
|
8fd4eee8e9 | ||
|
|
aa7facd4ba | ||
|
|
f81297dcd6 | ||
|
|
d9ef53e2e8 | ||
|
|
ae2b8cf87e | ||
|
|
6024c81113 | ||
|
|
62adaf3006 | ||
|
|
9004b12256 | ||
|
|
c4776753f1 | ||
|
|
3106c03b5b | ||
|
|
be4b0267a6 | ||
|
|
b3c0027b66 | ||
|
|
e7fcda19c1 | ||
|
|
e0272ad4af | ||
|
|
6f56f35943 | ||
|
|
72037b5dab | ||
|
|
0df984eea0 | ||
|
|
c44bdc1018 | ||
|
|
d01ba91654 | ||
|
|
f761eed377 | ||
|
|
561b5cbf75 | ||
|
|
751fe82f92 | ||
|
|
ed9e6d5ea3 | ||
|
|
f74002cce0 | ||
|
|
4ade263ae8 | ||
|
|
482a04d757 | ||
|
|
a6dfdff3ba | ||
|
|
04d49e3a6d | ||
|
|
f5cddb6984 | ||
|
|
677686fa20 | ||
|
|
8d52e1b510 | ||
|
|
df334ea6de | ||
|
|
8b83791515 | ||
|
|
8c4b992d59 | ||
|
|
c730d6ed82 | ||
|
|
b9e227509e | ||
|
|
8445af5f2b | ||
|
|
798da75d83 | ||
|
|
eb8bcd00e3 | ||
|
|
a1441b31f2 | ||
|
|
dadf42bfe8 | ||
|
|
3c18fd7a51 | ||
|
|
9353129e84 | ||
|
|
6290ce562a | ||
|
|
07b18edb5c | ||
|
|
2b54c6c9b9 | ||
|
|
a03a441906 | ||
|
|
4934801073 | ||
|
|
a774592e64 | ||
|
|
39d26673c4 | ||
|
|
98f7f473b4 | ||
|
|
042a476f78 | ||
|
|
7ee36cf22c | ||
|
|
1ef99f0c35 | ||
|
|
c77b89d4d9 | ||
|
|
be5bba8ad6 | ||
|
|
1f98eecb57 | ||
|
|
5ffefcca80 | ||
|
|
4723984bf8 | ||
|
|
b92e0f1468 | ||
|
|
028d9f9462 | ||
|
|
02a436dc79 | ||
|
|
f2e1a67ec1 | ||
|
|
e84e734171 | ||
|
|
057aeaea83 | ||
|
|
d7380a9243 | ||
|
|
b9ffb9e42e | ||
|
|
401bfe9f31 | ||
|
|
51bf0d1904 | ||
|
|
701f063642 | ||
|
|
c2cd5845b2 | ||
|
|
0442f3d5e9 | ||
|
|
e74dfe9b79 | ||
|
|
4ebfdcc4a8 | ||
|
|
759f86d6e5 | ||
|
|
14aafbe0a3 | ||
|
|
a01da24c10 | ||
|
|
ea8ee743cc | ||
|
|
59389b164a | ||
|
|
89baa19bbf | ||
|
|
26c7556091 | ||
|
|
75481aa195 | ||
|
|
f16246f939 | ||
|
|
45ca94b1dc | ||
|
|
2f4c29fdf0 | ||
|
|
ee3c412933 | ||
|
|
ae92ea0f94 | ||
|
|
f1793b187b | ||
|
|
33f0150d25 | ||
|
|
9d504b0dfb | ||
|
|
5cef60cd21 | ||
|
|
93939431e9 | ||
|
|
b9b5a62105 | ||
|
|
3d9993215c | ||
|
|
b1af58d6a6 | ||
|
|
f50b731846 | ||
|
|
18eeb7c4e1 | ||
|
|
4166c09bd4 | ||
|
|
ee3b220858 | ||
|
|
6839a456ac | ||
|
|
71051cde9c | ||
|
|
211e2bcb95 | ||
|
|
57302c953f | ||
|
|
37d2f57e53 | ||
|
|
eb7b00a688 | ||
|
|
3fde3a1a22 | ||
|
|
3c7b0622a5 | ||
|
|
7963158470 | ||
|
|
f573092090 | ||
|
|
b950c6540f | ||
|
|
b6433786e3 | ||
|
|
012c5d4f86 |
@@ -7,8 +7,8 @@ module.exports = {
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:@typescript-eslint/recommended-requiring-type-checking",
|
||||
"plugin:@typescript-eslint/strict",
|
||||
//"plugin:@typescript-eslint/recommended-requiring-type-checking",
|
||||
//"plugin:@typescript-eslint/strict",
|
||||
],
|
||||
parser: "@typescript-eslint/parser",
|
||||
parserOptions: {
|
||||
@@ -20,7 +20,6 @@ module.exports = {
|
||||
project: ["./tsconfig.json", "./test/tsconfig.json", "./tools/tsconfig.json"],
|
||||
},
|
||||
plugins: ["@typescript-eslint"],
|
||||
extends: ["plugin:@typescript-eslint/recommended"],
|
||||
rules: {
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
|
||||
29
.github/workflows/steamDev.yml
vendored
Normal file
29
.github/workflows/steamDev.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
# update the steam development version
|
||||
name: "Steam dev update"
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Setup steamcmd
|
||||
uses: CyberAndrii/setup-steamcmd@v1
|
||||
|
||||
- name: Checkout dev branch
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: dev
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Build and deploy
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
npm run electron
|
||||
steamcmd +login ${{ secrets.STEAM_BUILD_USERNAME }} ${{ secrets.STEAM_BUILD_PASSWORD }} +run_app_build ../tools/steamdev.vdf +quit
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -11,9 +11,14 @@ Netburner.txt
|
||||
/test/*.css
|
||||
/input/bitburner.api.json
|
||||
dist/bitburner.d.ts
|
||||
dist/images
|
||||
.cypress
|
||||
|
||||
# folder for bundles images / fonts that are generated by webpack
|
||||
dist/assets
|
||||
|
||||
# Monaco bundle files
|
||||
dist/*.worker.*
|
||||
|
||||
# tmp folder for build and electron
|
||||
.app
|
||||
.package
|
||||
|
||||
15
FixJSDOMEnvironment.ts
Normal file
15
FixJSDOMEnvironment.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import JSDOMEnvironment from "jest-environment-jsdom";
|
||||
|
||||
// https://github.com/facebook/jest/blob/v29.4.3/website/versioned_docs/version-29.4/Configuration.md#testenvironment-string
|
||||
export default class FixJSDOMEnvironment extends JSDOMEnvironment {
|
||||
constructor(...args: ConstructorParameters<typeof JSDOMEnvironment>) {
|
||||
super(...args);
|
||||
|
||||
// FIXME https://github.com/nodejs/node/issues/35889
|
||||
// Add missing importActual() function to mirror requireActual(),
|
||||
// which lets us work around the ESM bug.
|
||||
// Wrap the construction of the function in eval, so that transpilers
|
||||
// don't touch the import() call.
|
||||
this.global.importActual = eval("url => import(url)");
|
||||
}
|
||||
}
|
||||
Binary file not shown.
11619
dist/ext/monaco-editor/min/vs/base/worker/workerMain.js
vendored
11619
dist/ext/monaco-editor/min/vs/base/worker/workerMain.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,415 +0,0 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
define('vs/basic-languages/typescript/typescript',["require", "exports", "../fillers/monaco-editor-core"], function (require, exports, monaco_editor_core_1) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.language = exports.conf = void 0;
|
||||
exports.conf = {
|
||||
wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
|
||||
comments: {
|
||||
lineComment: '//',
|
||||
blockComment: ['/*', '*/']
|
||||
},
|
||||
brackets: [
|
||||
['{', '}'],
|
||||
['[', ']'],
|
||||
['(', ')']
|
||||
],
|
||||
onEnterRules: [
|
||||
{
|
||||
// e.g. /** | */
|
||||
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
|
||||
afterText: /^\s*\*\/$/,
|
||||
action: {
|
||||
indentAction: monaco_editor_core_1.languages.IndentAction.IndentOutdent,
|
||||
appendText: ' * '
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. /** ...|
|
||||
beforeText: /^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,
|
||||
action: {
|
||||
indentAction: monaco_editor_core_1.languages.IndentAction.None,
|
||||
appendText: ' * '
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. * ...|
|
||||
beforeText: /^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,
|
||||
action: {
|
||||
indentAction: monaco_editor_core_1.languages.IndentAction.None,
|
||||
appendText: '* '
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. */|
|
||||
beforeText: /^(\t|(\ \ ))*\ \*\/\s*$/,
|
||||
action: {
|
||||
indentAction: monaco_editor_core_1.languages.IndentAction.None,
|
||||
removeText: 1
|
||||
}
|
||||
}
|
||||
],
|
||||
autoClosingPairs: [
|
||||
{ open: '{', close: '}' },
|
||||
{ open: '[', close: ']' },
|
||||
{ open: '(', close: ')' },
|
||||
{ open: '"', close: '"', notIn: ['string'] },
|
||||
{ open: "'", close: "'", notIn: ['string', 'comment'] },
|
||||
{ open: '`', close: '`', notIn: ['string', 'comment'] },
|
||||
{ open: '/**', close: ' */', notIn: ['string'] }
|
||||
],
|
||||
folding: {
|
||||
markers: {
|
||||
start: new RegExp('^\\s*//\\s*#?region\\b'),
|
||||
end: new RegExp('^\\s*//\\s*#?endregion\\b')
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.language = {
|
||||
// Set defaultToken to invalid to see what you do not tokenize yet
|
||||
defaultToken: 'invalid',
|
||||
tokenPostfix: '.ts',
|
||||
keywords: [
|
||||
// Should match the keys of textToKeywordObj in
|
||||
// https://github.com/microsoft/TypeScript/blob/master/src/compiler/scanner.ts
|
||||
'abstract',
|
||||
'any',
|
||||
'as',
|
||||
'asserts',
|
||||
'bigint',
|
||||
'boolean',
|
||||
'break',
|
||||
'case',
|
||||
'catch',
|
||||
'class',
|
||||
'continue',
|
||||
'const',
|
||||
'constructor',
|
||||
'debugger',
|
||||
'declare',
|
||||
'default',
|
||||
'delete',
|
||||
'do',
|
||||
'else',
|
||||
'enum',
|
||||
'export',
|
||||
'extends',
|
||||
'false',
|
||||
'finally',
|
||||
'for',
|
||||
'from',
|
||||
'function',
|
||||
'get',
|
||||
'if',
|
||||
'implements',
|
||||
'import',
|
||||
'in',
|
||||
'infer',
|
||||
'instanceof',
|
||||
'interface',
|
||||
'is',
|
||||
'keyof',
|
||||
'let',
|
||||
'module',
|
||||
'namespace',
|
||||
'never',
|
||||
'new',
|
||||
'null',
|
||||
'number',
|
||||
'object',
|
||||
'package',
|
||||
'private',
|
||||
'protected',
|
||||
'public',
|
||||
'override',
|
||||
'readonly',
|
||||
'require',
|
||||
'global',
|
||||
'return',
|
||||
'set',
|
||||
'static',
|
||||
'string',
|
||||
'super',
|
||||
'switch',
|
||||
'symbol',
|
||||
'this',
|
||||
'throw',
|
||||
'true',
|
||||
'try',
|
||||
'type',
|
||||
'typeof',
|
||||
'undefined',
|
||||
'unique',
|
||||
'unknown',
|
||||
'var',
|
||||
'void',
|
||||
'while',
|
||||
'with',
|
||||
'yield',
|
||||
'async',
|
||||
'await',
|
||||
'of'
|
||||
],
|
||||
operators: [
|
||||
'<=',
|
||||
'>=',
|
||||
'==',
|
||||
'!=',
|
||||
'===',
|
||||
'!==',
|
||||
'=>',
|
||||
'+',
|
||||
'-',
|
||||
'**',
|
||||
'*',
|
||||
'/',
|
||||
'%',
|
||||
'++',
|
||||
'--',
|
||||
'<<',
|
||||
'</',
|
||||
'>>',
|
||||
'>>>',
|
||||
'&',
|
||||
'|',
|
||||
'^',
|
||||
'!',
|
||||
'~',
|
||||
'&&',
|
||||
'||',
|
||||
'??',
|
||||
'?',
|
||||
':',
|
||||
'=',
|
||||
'+=',
|
||||
'-=',
|
||||
'*=',
|
||||
'**=',
|
||||
'/=',
|
||||
'%=',
|
||||
'<<=',
|
||||
'>>=',
|
||||
'>>>=',
|
||||
'&=',
|
||||
'|=',
|
||||
'^=',
|
||||
'@'
|
||||
],
|
||||
// we include these common regular expressions
|
||||
symbols: /[=><!~?:&|+\-*\/\^%]+/,
|
||||
escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
||||
digits: /\d+(_+\d+)*/,
|
||||
octaldigits: /[0-7]+(_+[0-7]+)*/,
|
||||
binarydigits: /[0-1]+(_+[0-1]+)*/,
|
||||
hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,
|
||||
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
|
||||
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,
|
||||
// The main tokenizer for our languages
|
||||
tokenizer: {
|
||||
root: [[/[{}]/, 'delimiter.bracket'], { include: 'common' }],
|
||||
common: [
|
||||
// identifiers and keywords
|
||||
[
|
||||
/[a-z_$][\w$]*/,
|
||||
{
|
||||
cases: {
|
||||
'@keywords': 'keyword',
|
||||
'@default': 'identifier'
|
||||
}
|
||||
}
|
||||
],
|
||||
[/[A-Z][\w\$]*/, 'type.identifier'],
|
||||
// [/[A-Z][\w\$]*/, 'identifier'],
|
||||
// whitespace
|
||||
{ include: '@whitespace' },
|
||||
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
|
||||
[
|
||||
/\/(?=([^\\\/]|\\.)+\/([dgimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,
|
||||
{ token: 'regexp', bracket: '@open', next: '@regexp' }
|
||||
],
|
||||
// delimiters and operators
|
||||
[/[()\[\]]/, '@brackets'],
|
||||
[/[<>](?!@symbols)/, '@brackets'],
|
||||
[/!(?=([^=]|$))/, 'delimiter'],
|
||||
[
|
||||
/@symbols/,
|
||||
{
|
||||
cases: {
|
||||
'@operators': 'delimiter',
|
||||
'@default': ''
|
||||
}
|
||||
}
|
||||
],
|
||||
// numbers
|
||||
[/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'],
|
||||
[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'],
|
||||
[/0[xX](@hexdigits)n?/, 'number.hex'],
|
||||
[/0[oO]?(@octaldigits)n?/, 'number.octal'],
|
||||
[/0[bB](@binarydigits)n?/, 'number.binary'],
|
||||
[/(@digits)n?/, 'number'],
|
||||
// delimiter: after number because of .\d floats
|
||||
[/[;,.]/, 'delimiter'],
|
||||
// strings
|
||||
[/"([^"\\]|\\.)*$/, 'string.invalid'],
|
||||
[/'([^'\\]|\\.)*$/, 'string.invalid'],
|
||||
[/"/, 'string', '@string_double'],
|
||||
[/'/, 'string', '@string_single'],
|
||||
[/`/, 'string', '@string_backtick']
|
||||
],
|
||||
whitespace: [
|
||||
[/[ \t\r\n]+/, ''],
|
||||
[/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'],
|
||||
[/\/\*/, 'comment', '@comment'],
|
||||
[/\/\/.*$/, 'comment']
|
||||
],
|
||||
comment: [
|
||||
[/[^\/*]+/, 'comment'],
|
||||
[/\*\//, 'comment', '@pop'],
|
||||
[/[\/*]/, 'comment']
|
||||
],
|
||||
jsdoc: [
|
||||
[/[^\/*]+/, 'comment.doc'],
|
||||
[/\*\//, 'comment.doc', '@pop'],
|
||||
[/[\/*]/, 'comment.doc']
|
||||
],
|
||||
// We match regular expression quite precisely
|
||||
regexp: [
|
||||
[
|
||||
/(\{)(\d+(?:,\d*)?)(\})/,
|
||||
['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control']
|
||||
],
|
||||
[
|
||||
/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,
|
||||
['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }]
|
||||
],
|
||||
[/(\()(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']],
|
||||
[/[()]/, 'regexp.escape.control'],
|
||||
[/@regexpctl/, 'regexp.escape.control'],
|
||||
[/[^\\\/]/, 'regexp'],
|
||||
[/@regexpesc/, 'regexp.escape'],
|
||||
[/\\\./, 'regexp.invalid'],
|
||||
[
|
||||
/(\/)([dgimsuy]*)/,
|
||||
[{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other']
|
||||
]
|
||||
],
|
||||
regexrange: [
|
||||
[/-/, 'regexp.escape.control'],
|
||||
[/\^/, 'regexp.invalid'],
|
||||
[/@regexpesc/, 'regexp.escape'],
|
||||
[/[^\]]/, 'regexp'],
|
||||
[
|
||||
/\]/,
|
||||
{
|
||||
token: 'regexp.escape.control',
|
||||
next: '@pop',
|
||||
bracket: '@close'
|
||||
}
|
||||
]
|
||||
],
|
||||
string_double: [
|
||||
[/[^\\"]+/, 'string'],
|
||||
[/@escapes/, 'string.escape'],
|
||||
[/\\./, 'string.escape.invalid'],
|
||||
[/"/, 'string', '@pop']
|
||||
],
|
||||
string_single: [
|
||||
[/[^\\']+/, 'string'],
|
||||
[/@escapes/, 'string.escape'],
|
||||
[/\\./, 'string.escape.invalid'],
|
||||
[/'/, 'string', '@pop']
|
||||
],
|
||||
string_backtick: [
|
||||
[/\$\{/, { token: 'delimiter.bracket', next: '@bracketCounting' }],
|
||||
[/[^\\`$]+/, 'string'],
|
||||
[/@escapes/, 'string.escape'],
|
||||
[/\\./, 'string.escape.invalid'],
|
||||
[/`/, 'string', '@pop']
|
||||
],
|
||||
bracketCounting: [
|
||||
[/\{/, 'delimiter.bracket', '@bracketCounting'],
|
||||
[/\}/, 'delimiter.bracket', '@pop'],
|
||||
{ include: 'common' }
|
||||
]
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
define('vs/basic-languages/javascript/javascript',["require", "exports", "../typescript/typescript"], function (require, exports, typescript_1) {
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.language = exports.conf = void 0;
|
||||
exports.conf = typescript_1.conf;
|
||||
exports.language = {
|
||||
// Set defaultToken to invalid to see what you do not tokenize yet
|
||||
defaultToken: 'invalid',
|
||||
tokenPostfix: '.js',
|
||||
keywords: [
|
||||
'break',
|
||||
'case',
|
||||
'catch',
|
||||
'class',
|
||||
'continue',
|
||||
'const',
|
||||
'constructor',
|
||||
'debugger',
|
||||
'default',
|
||||
'delete',
|
||||
'do',
|
||||
'else',
|
||||
'export',
|
||||
'extends',
|
||||
'false',
|
||||
'finally',
|
||||
'for',
|
||||
'from',
|
||||
'function',
|
||||
'get',
|
||||
'if',
|
||||
'import',
|
||||
'in',
|
||||
'instanceof',
|
||||
'let',
|
||||
'new',
|
||||
'null',
|
||||
'return',
|
||||
'set',
|
||||
'super',
|
||||
'switch',
|
||||
'symbol',
|
||||
'this',
|
||||
'throw',
|
||||
'true',
|
||||
'try',
|
||||
'typeof',
|
||||
'undefined',
|
||||
'var',
|
||||
'void',
|
||||
'while',
|
||||
'with',
|
||||
'yield',
|
||||
'async',
|
||||
'await',
|
||||
'of'
|
||||
],
|
||||
typeKeywords: [],
|
||||
operators: typescript_1.language.operators,
|
||||
symbols: typescript_1.language.symbols,
|
||||
escapes: typescript_1.language.escapes,
|
||||
digits: typescript_1.language.digits,
|
||||
octaldigits: typescript_1.language.octaldigits,
|
||||
binarydigits: typescript_1.language.binarydigits,
|
||||
hexdigits: typescript_1.language.hexdigits,
|
||||
regexpctl: typescript_1.language.regexpctl,
|
||||
regexpesc: typescript_1.language.regexpesc,
|
||||
tokenizer: typescript_1.language.tokenizer
|
||||
};
|
||||
});
|
||||
|
||||
4170
dist/ext/monaco-editor/min/vs/editor/editor.main.css
vendored
4170
dist/ext/monaco-editor/min/vs/editor/editor.main.css
vendored
File diff suppressed because it is too large
Load Diff
136614
dist/ext/monaco-editor/min/vs/editor/editor.main.js
vendored
136614
dist/ext/monaco-editor/min/vs/editor/editor.main.js
vendored
File diff suppressed because one or more lines are too long
1404
dist/ext/monaco-editor/min/vs/editor/editor.main.nls.js
vendored
1404
dist/ext/monaco-editor/min/vs/editor/editor.main.nls.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
157322
dist/ext/monaco-editor/min/vs/language/typescript/tsWorker.js
vendored
157322
dist/ext/monaco-editor/min/vs/language/typescript/tsWorker.js
vendored
File diff suppressed because one or more lines are too long
1911
dist/ext/monaco-editor/min/vs/loader.js
vendored
1911
dist/ext/monaco-editor/min/vs/loader.js
vendored
File diff suppressed because it is too large
Load Diff
7
dist/ext/monaco-vim.js
vendored
7
dist/ext/monaco-vim.js
vendored
File diff suppressed because one or more lines are too long
22
doc/FAQ.md
22
doc/FAQ.md
@@ -2,7 +2,7 @@
|
||||
|
||||
## Can I donate to the project?
|
||||
|
||||
No, the project does not take donation.
|
||||
No, the project does not take donations.
|
||||
|
||||
If you still want to donate, go donate blood to your local blood bank or donate to the [Electronic Frontier Foundation](https://www.eff.org/) or [Médecins Sans Frontières](https://www.msf.org/)
|
||||
|
||||
@@ -27,25 +27,25 @@ You may have created an infinite loop with no sleep. You'll have to restart the
|
||||
- On Browser: Stick `?noScript` at the end of the URL
|
||||
- On Steam:
|
||||
- In the menu, "Reloads" -> "Reload & Kill All Scripts".
|
||||
- If this does not work, when launching the game, use the kill all script options.
|
||||
- If this does not work, when launching the game, use the kill all scripts option.
|
||||
|
||||
---
|
||||
|
||||
## Steam: Where is the save game located?
|
||||
|
||||
To maintain compatibility with the web browser version, the save game is not stored as a file on your filesystem. It lives inside the localStorage of the WebKit instance. You may export the save (and should backup it!) in the option menu.
|
||||
To maintain compatibility with the web browser version, the save game is not stored as a file on your filesystem. It lives inside the localStorage of the WebKit instance. Export the save (and back it up!) in the option menu.
|
||||
|
||||
---
|
||||
|
||||
## Steam: Game won't stop / Game is shown as "Running"
|
||||
|
||||
Due to a limitation with the way Steam tracks the game, if you launch an external link (such as documentation), Steam may keep tracking the game as "Running" even after it is closed. You should simply have to close your web browser to fix this.
|
||||
Due to a limitation with the way Steam tracks the game, if you launch an external link (such as documentation), Steam may keep tracking the game as "Running" even after it is closed. Simply close the web browser to fix this.
|
||||
|
||||
---
|
||||
|
||||
## Steam: How do I get to the game files? <a name="game-files"></a>
|
||||
|
||||
You can navigate to the game files by right-clicking the game in your library and then go into "Manage" -> "Browse Local Files". The game can be launched directly from that location, if you're having issues with Steam.
|
||||
Right-click the game in your Steam library, then go into "Manage" -> "Browse Local Files". The game can be launched directly from that location if you're having issues with Steam.
|
||||
|
||||
---
|
||||
|
||||
@@ -55,13 +55,13 @@ You can navigate to the game files by right-clicking the game in your library an
|
||||
|
||||
If the game is installed on a network drive, it will fail to start due to a [limitation in Chromium](https://github.com/electron/electron/issues/27356).
|
||||
|
||||
If you cannot move the game to another drive, you'll have to add the `--no-sandbox` launch option. In your Steam Library, Right click the game and hit "Properties". You'll see the launch option section in the "General" window.
|
||||
If you cannot move the game to another drive, you'll have to add `--no-sandbox` to the launch options. In your Steam Library, right click the game and hit "Properties". You'll see the "launch options" section in the "General" window.
|
||||
|
||||
### **On Linux**
|
||||
|
||||
The game is built natively, do not use Proton unless native does not work.
|
||||
The game is built natively. Do not use Proton unless native does not work.
|
||||
|
||||
When launching the game, you will be prompted with three options. If the standard launch does not work, you may attempt the `--disable-seccomp-filter-sandbox` or `--no-sandbox` launch option. If this still does not work, the game should be able to start by launching it directly or through the terminal. See [How do I get to the game files?](#game-files).
|
||||
When launching the game, you will be prompted with three options. If the standard launch does not work, you may attempt the `--disable-seccomp-filter-sandbox` or `--no-sandbox` launch options. If this still does not work, the game should be able to start by launching it directly or through the terminal. See [How do I get to the game files?](#game-files).
|
||||
|
||||
---
|
||||
|
||||
@@ -69,7 +69,7 @@ When launching the game, you will be prompted with three options. If the standar
|
||||
|
||||
### Logs (using [electron-log](https://github.com/megahertz/electron-log#readme))
|
||||
|
||||
You may want access the logs to get information about crashes or such.
|
||||
You may want to access the logs to get information about crashes and such.
|
||||
|
||||
- on Linux: `~/.config/bitburner/logs/main.log`
|
||||
- on macOS: `~/Library/Logs/bitburner/main.log`
|
||||
@@ -77,7 +77,7 @@ You may want access the logs to get information about crashes or such.
|
||||
|
||||
### Config (using [electron-store](https://github.com/sindresorhus/electron-store#readme))
|
||||
|
||||
Configuration file will be written to disk in the application data directory.
|
||||
Configuration files can be found in the application's data directory.
|
||||
|
||||
- on Linux: `~/.config/bitburner/config.json`
|
||||
- on macOS: `~/Library/Application\ Support/bitburner/config.json`
|
||||
@@ -87,4 +87,4 @@ Configuration file will be written to disk in the application data directory.
|
||||
|
||||
## Steam: What is the API Server?
|
||||
|
||||
The API Server allows the official [Visual Studio Code Extension](https://github.com/bitburner-official/bitburner-vscode) to push script file from VSCode to your in-game home.
|
||||
The API Server allows the official [Visual Studio Code Extension](https://github.com/bitburner-official/bitburner-vscode) to push script files from VSCode to your in-game home.
|
||||
|
||||
@@ -3,6 +3,4 @@ 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/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md>`_.
|
||||
|
||||
That documentation is autogenerated and therefore is much easier to maintain.
|
||||
If you're looking for documentation of the Netscript API, it moved `here <https://github.com/bitburner-official/bitburner-src/blob/dev/markdown/bitburner.ns.md>`_.
|
||||
@@ -11,7 +11,7 @@ user's physical and mental faculties.
|
||||
Augmentations provide persistent upgrades in the form of multipliers.
|
||||
These multipliers apply to a wide variety of things such as stats,
|
||||
experience gain, and hacking, just to name a few. The effects of
|
||||
Autmentations stack multiplicatively. Your multiplierscan be viewed in
|
||||
Augmentations stack multiplicatively. Your multipliers can be viewed in
|
||||
the 'Character' page (:ref:`keyboard shortcut <shortcuts>` Alt + c).
|
||||
|
||||
How to acquire Augmentations
|
||||
|
||||
@@ -249,9 +249,9 @@ The list contains the name of (i.e. the value returned by
|
||||
| | | the string, the result should be an array with only an empty string. |
|
||||
| | | |
|
||||
| | | Examples: |
|
||||
| | | ()())() -> [()()(), (())()] |
|
||||
| | | (a)())() -> [(a)()(), (a())()] |
|
||||
| | | )( -> [""] |
|
||||
| | | "()())()" -> ["()()()", "(())()"] |
|
||||
| | | "(a)())()" -> ["(a)()()", "(a())()"] |
|
||||
| | | ")(" -> [""] |
|
||||
+-----------------------------------------+------------------------------------------------------------------------------------------+
|
||||
| Find All Valid Math Expressions | | You are given a string which contains only digits between 0 and 9 as well as a target |
|
||||
| | | number. Return all possible ways you can add the +, -, and * operators to the string |
|
||||
@@ -293,7 +293,7 @@ The list contains the name of (i.e. the value returned by
|
||||
| | | 3Blue1Brown for more information\n", |
|
||||
| | | Note 3: There's a ~55% chance for an altered Bit. So... MAYBE |
|
||||
| | | there is an altered Bit 😉\n", |
|
||||
| | | Extranote for automation: return the decimal value as a string", |
|
||||
| | | Extra note for automation: return the decimal value as a string", |
|
||||
+-----------------------------------------+------------------------------------------------------------------------------------------+
|
||||
| Proper 2-Coloring of a Graph | | You are given data, representing a graph. Note that "graph", as used here, refers to |
|
||||
| | | the field of graph theory, and has no relation to statistics or plotting. |
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Crimes
|
||||
======
|
||||
Commiting crimes is an active gameplay mechanic that allows the player to train
|
||||
Committing crimes is an active gameplay mechanic that allows the player to train
|
||||
their stats and potentially earn money. The player can attempt to commit crimes
|
||||
by visiting 'The Slums' through the 'City' tab (:ref:`Keyboard shortcut <shortcuts>` Alt + w).
|
||||
'The Slums' is available in every city.
|
||||
@@ -15,7 +15,7 @@ available crimes. Simply select one of the options to begin attempting that
|
||||
crime. Attempting to commit a crime takes a certain amount of time. This time
|
||||
varies between crimes.
|
||||
|
||||
While doing criemes, you can click “Do something else simultaneously”
|
||||
While doing crimes, you can click “Do something else simultaneously”
|
||||
to be able to do things while you continue to do crimes in the background. There is a
|
||||
20% penalty to the related gains. Clicking the “Focus” button under the overview
|
||||
will return you to the current task.
|
||||
|
||||
@@ -31,8 +31,16 @@ Many commands and functions act on an executing script
|
||||
be a way to specify which script you want those commands & functions
|
||||
to act on.
|
||||
|
||||
**A script that is being executed is uniquely identified by both its
|
||||
name and the arguments that it was run with.**
|
||||
The best way to identify a script is by its PID (Process IDentifier). This
|
||||
unique number is returned from :js:func:`run`, :js:func:`exec`, etc., and also
|
||||
shows in the output of "ps".
|
||||
|
||||
A secondary way to identify scripts is by name **and** arguments. However (by
|
||||
default) you can run a multiple copies of a script with the same arguments, so
|
||||
this does not necessarily **uniquely** identify a script. In case of multiple
|
||||
matches, most functions will return an arbitrary one (typically the first one
|
||||
to be started). An exception is :js:func:`kill`, which will kill all the
|
||||
matching scripts.
|
||||
|
||||
The arguments must be an **exact** match. This means that both
|
||||
the order and type of the arguments matter.
|
||||
@@ -78,7 +86,7 @@ with scripts:
|
||||
Prints the logs of the script specified by the name and arguments to
|
||||
Terminal. Arguments should be separated by a space. Remember that scripts
|
||||
are uniquely identified by their arguments as well as their name. For
|
||||
example, if you ran a script `foo.hs` with the argument `foodnstuff`
|
||||
example, if you ran a script `foo.js` with the argument `foodnstuff`
|
||||
then in order to 'check' it you must also add the `foodnstuff` argument
|
||||
to the check command::
|
||||
|
||||
@@ -88,12 +96,12 @@ to the check command::
|
||||
|
||||
Shows the current server's RAM usage and availability
|
||||
|
||||
**kill [script] [args...]**
|
||||
**kill [pid]** or **kill [script] [args...]**
|
||||
|
||||
Stops a script that is running with the specified script name and
|
||||
Stops a script that is running with the specified PID, or script name and
|
||||
arguments. Arguments should be separated by a space. Remember that
|
||||
scripts are uniquely identified by their arguments as well as
|
||||
their name. For example, if you ran a script `foo.js` with
|
||||
scripts are identified by their arguments as well as their name.
|
||||
For example, if you ran a script `foo.js` with
|
||||
the argument 1 and 2, then just typing "`kill foo.js`" will
|
||||
not work. You have to use::
|
||||
|
||||
@@ -142,13 +150,13 @@ Run 'foo.js' with 50 threads and a single argument: [foodnstuff]::
|
||||
$ run foo.js -t 50 foodnstuff
|
||||
|
||||
|
||||
**tail [script] [args...]**
|
||||
**tail [pid]** or **tail [script] [args...]**
|
||||
|
||||
Displays the logs of the script specified by the name and arguments. Note that scripts
|
||||
are uniquely identified by their arguments as well as their name. For example, if you
|
||||
ran a script 'foo.js' with the argument 'foodnstuff' then in order to 'tail' it you
|
||||
must also add the 'foodnstuff' argument to the tail command as so: tail foo.js
|
||||
foodnstuff
|
||||
Displays the logs of the script specified by the PID or name and arguments. Note that
|
||||
scripts are identified by their arguments as well as their name. For example,
|
||||
if you ran a script 'foo.js' with the argument 'foodnstuff' then in order to
|
||||
'tail' it you must also add the 'foodnstuff' argument to the tail command as
|
||||
so: tail foo.js foodnstuff
|
||||
|
||||
**top**
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ The `free`, `scan-analyze`, and `analyze` Terminal commands
|
||||
can be used to check how much RAM a server has.
|
||||
|
||||
Some servers have some randomized statistics, such as RAM, max Money or
|
||||
required hacking level. These statistics are randomly genererated from a range of values.
|
||||
required hacking level. These statistics are randomly generated from a range of values.
|
||||
|
||||
Identifying Servers
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -145,7 +145,7 @@ backdoor
|
||||
Installs a backdoor on the current server. Root access is required to do this.
|
||||
|
||||
Servers will give different bonuses when you install a backdoor.
|
||||
This can pass faction tests or give bonsues such as discounts from companies.
|
||||
This can pass faction tests or give bonuses such as discounts from companies.
|
||||
|
||||
buy
|
||||
^^^
|
||||
@@ -318,7 +318,7 @@ to home and want to kill a script running on n00dles, you have to either use it'
|
||||
or :code:`connect` to n00dles first and then use the the kill command.
|
||||
|
||||
If you are killing the script using its filename and arguments, then each argument
|
||||
must be separated by a space. Remember that a running script is uniquely identified
|
||||
must be separated by a space. Remember that a running script is identified
|
||||
by both its name and the arguments that are used to start it. So, if a script
|
||||
was ran with the following arguments::
|
||||
|
||||
@@ -328,6 +328,9 @@ Then to kill this script the same arguments would have to be used::
|
||||
|
||||
$ kill foo.js 50e3 sigma-cosmetics
|
||||
|
||||
If there are multiple copies of a script running with the same arguments, all
|
||||
of them will be killed.
|
||||
|
||||
If you are killing the script using its PID, then the PID argument must be numeric.
|
||||
|
||||
killall
|
||||
@@ -543,11 +546,13 @@ Prints whether or not you have root access to the current server.
|
||||
tail
|
||||
^^^^
|
||||
|
||||
$ tail [pid]
|
||||
or
|
||||
$ tail [script name] [args...]
|
||||
|
||||
Displays dynamic logs for the script specified by the script name and arguments.
|
||||
Displays dynamic logs for the script specified by PID or the script name and arguments.
|
||||
Each argument must be separated by a space. Remember that a running script is
|
||||
uniquely identified by both its name and the arguments that were used to run
|
||||
identified by both its name and the arguments that were used to run
|
||||
it. So, if a script was ran with the following arguments::
|
||||
|
||||
$ run foo.js 10 50000
|
||||
@@ -614,7 +619,7 @@ There are two main points:
|
||||
Here's an example to show how these rules work. Consider the following script `argType.js`::
|
||||
|
||||
export async function main(ns) {
|
||||
ns.tprint("Number of args: " + args.length);
|
||||
ns.tprint("Number of args: " + ns.args.length);
|
||||
for (var i = 0; i < ns.args.length; ++i) {
|
||||
ns.tprint(typeof ns.args[i]);
|
||||
}
|
||||
@@ -642,3 +647,6 @@ with a semicolon (;).
|
||||
Example::
|
||||
|
||||
$ run foo.js; tail foo.js
|
||||
|
||||
This does *not* wait for commands with a delay to finish executing, so it
|
||||
generally doesn't work with things like :code:`hack`, :code:`wget`, etc.
|
||||
|
||||
@@ -3,8 +3,183 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
v2.3.1 - Bugfixes 7 June 2023
|
||||
-----------------------------
|
||||
|
||||
v2.2.2 - 21 Feb 2022
|
||||
NETSCRIPT:
|
||||
|
||||
* Added ns.setTitle, which sets the titlebar of a script's tail window (@d0sboots)
|
||||
* Added ns.getFunctionRamCost, which gets the ramcost of a netscript function (@G4mingJon4s)
|
||||
* ns.ls results will filter as if the filenames have a leading slash (@Snarling)
|
||||
|
||||
GENERAL / MISC:
|
||||
|
||||
* Changed tail window buttons into icon buttons, allow setting custom title, and tail window bugfixes. (@d0sboots)
|
||||
* Terminal no longer scrolls to the bottom constantly while an action is being performed (@bezrodnov)
|
||||
* Added a close button to modals (@bezrodnov)
|
||||
* Fixed several issues with script editor tabs (@bezrodnov)
|
||||
* scp terminal command can copy multiple files at once, like help text indicates (@Snarling)
|
||||
* Root directory is no longer displayed as ~ in the terminal prompt, it is displayed as / (@Snarling)
|
||||
* cd with no arguments will change to the root directory (@Snarling)
|
||||
* Documentation updates (various)
|
||||
* Nerf noodle bar
|
||||
|
||||
HOTFIXES (these were already backported to 2.3.0 before 2.3.1 release):
|
||||
|
||||
* Several important fixes for savegame migration issues from older version (@d0sboots)
|
||||
* Prevent scripts from loading during intial migration to 2.3.0 save format, to prevent a crash that could occur. (@Snarling)
|
||||
* Fix scp logging (hostname was being logged incorrectly in multiple places and showing as [Object object]) (@Snarling)
|
||||
* Update terminal parsing logic so that the old syntax for alias works again. (@Snarling)
|
||||
* Fix clickable script links from ls command not working outside root directory (@Snarling)
|
||||
* Fix an issue with Find All Valid Math Expressions not accepting empty array when that was the solution. (@Snarling)
|
||||
* Fix an issue with scan-analyze display when the player had AutoLink.exe (@Snarling)
|
||||
* Reverted undocumented change that program filenames were case sensitive for ns.fileExists. They are case insensitive again. (@Snarling)
|
||||
* An issue from pre-2.3 could cause scripts to have the wrong "server" property. This caused issues in 2.3, and a fix now repairs any scripts with a mismatched server property. (@Snarling)
|
||||
* More fixes to help old savegames load correctly (@Snarling)
|
||||
* Servers can no longer have infinite time-to-hack. (@Snarling)
|
||||
|
||||
SPOILER SECTIONS:
|
||||
|
||||
SF2:
|
||||
|
||||
* Overall gang respect gain rate now reads accurately, instead of showing ~10x. (@Snarling)
|
||||
|
||||
SF3:
|
||||
|
||||
* Added "maxProducts" property to ns.corporation.getDivision return value (@kateract)
|
||||
* Fixed an issue with sell price parsing for materials (@zerbosh)
|
||||
* Fixed display of market price for materials and products (@zerbosh)
|
||||
* Fixes for Corp import/export issues, such as -IPROD and Smart Supply not working right (@d0sboots)
|
||||
* Improvements to the max-affordable-upgrades calculation (@bezrodnov)
|
||||
* Perform additional validation when setting up an export. Exports are now unique per targeted division+city. (@Snarling)
|
||||
* ns.corporation.cancelExport no longer requires the exported amount (@Snarling)
|
||||
* Fix NaN bug that could impact Robot material in Robotics division (@Snarling, @kateract)
|
||||
* Can no longer commence product development in a city with no office (which would immediately error out the game loop) (@Snarling)
|
||||
* (Hotfix) Fix issue that could lead to SF3 research desync. (@Snarling)
|
||||
* (Hotfix) Fix SF3 "Spring Water" industry (@Snarling)
|
||||
|
||||
SF4:
|
||||
|
||||
* Fixed an issue that could cause singularity run-after-reset callback scripts to not launch correctly (@Snarling)
|
||||
|
||||
|
||||
v2.3.0 - SF3 rework and performance improvements (25 May 2023)
|
||||
--------------------------------------------------------------
|
||||
|
||||
BREAKING CHANGES: These changes may require changes to your scripts.
|
||||
|
||||
* Major changes to the SF3 mechanic. See the related section below for more detailed info on the changes.
|
||||
* The same script filename can now be ran multiple times with the same args. If running a script from another script (ns.run/ns.exec/etc), this limitation can be re-imposed with the preventDuplicates RunOption (see general section for info on RunOptions).
|
||||
* The same .js script will now be the same js module whether the script was ran directly or used as an import. This means top-level variables (variables defined outside of any function) are shared across all instances of the script.
|
||||
* The js module for a script will also be reused by any script that has the exact same compiled text, even if that script is on another server or has a different filename. This can lead to unexpected results when using top-level variables.
|
||||
* Some properties removed from ns.getPlayer and added to a separate function ns.getResetInfo. These are still accessible from getPlayer but will produce a warning message the first time they are accessed per game session.
|
||||
* hackAnalyzeThreads now returns -1, instead of 0, when no money can be hacked from the targeted server.
|
||||
* ns.iKnowWhatImDoing has been removed, replaced by ns.tprintRaw for printing custom react content to the terminal (limited support).
|
||||
|
||||
PERFORMANCE:
|
||||
|
||||
* Minimize impact of unavoidable memory leak when modules are created, by reusing modules as much as possible (@d0sboots)
|
||||
* Internal data structure changes (@d0sboots, @Snarling)
|
||||
* Fix memory leak when initializing large number of netscript ports (@Snarling)
|
||||
* Improve performance while on the Active Scripts page if many scripts are starting/ending. (@d0sboots)
|
||||
|
||||
NETSCRIPT GENERAL:
|
||||
|
||||
* Remove requirement for script args to be unique. This was also related to performance improvements. (@d0sboots)
|
||||
* ns.hackAnalyzeThreads no longer indicates infinity any time a single thread would hack less than $1 (@Snarling)
|
||||
* ns.renamePurchasedServer no longer crashes if player is connected to the server being renamed (@Snarling)
|
||||
* ns.hackAnalyzeThreads now return -1 (instead of 0) if no money can be hacked from the targeted server. (@d0sboots)
|
||||
* Fix a possible infinite atExit loop if a script killed itself. (@Snarling)
|
||||
* Static timestamps of last resets can be obtained via ns.getResetInfo, replacing playtimeSinceLastX from ns.getPlayer (@G4mingJon4s)
|
||||
* Improved support for printing react content directly to the terminal (ns.tprintRaw) or to a script log (ns.printRaw).
|
||||
* Added RunOptions, which can optionally replace the "threads" argument for ns.run/ns.exec/ns.spawn. (@d0sboots)
|
||||
* RunOptions.threads: Provide a thread count (since RunOptions can replace the threads argument)
|
||||
* RunOptions.temporary: Prevents the script execution from being included in the save file.
|
||||
* RunOptions.ramOverride: Provide a static ram cost for the script to override what is calculated by the game. Dynamic ram checking is still enforced.
|
||||
* RunOptions.preventDuplicates: Fail to launch the script if the args are identical to a script already running.
|
||||
|
||||
GENERAL / MISC:
|
||||
|
||||
* Fixed a bug that could cause the overview skill bars to become desynced (@d0sboots)
|
||||
* There is now an autoexec setting to specify a script on home to automatically run when loading the game. (@d0sboots)
|
||||
* Monaco script editor updated to a newer version and has more config options available now. (@Snarling)
|
||||
* Improve Electron's handling of external links (@Snarling)
|
||||
* Improved support for ANSI color codes (@d0sboots)
|
||||
* Improved consistency of file paths. Correct names for files no longer start with a / even if they are in a directory. (@Snarling)
|
||||
* All Math Expressions contract no longer accepts wrong answers (@Snarling)
|
||||
* Faction invites now trigger immediately when backdooring a server. (@Snarling)
|
||||
* Fixed issue where duplicate programs could be created. (@Minzenkatze)
|
||||
* UI improvements to create program page (@Minzenkatze)
|
||||
* Fix inconsistency in skill xp to skill level conversion (@hydroflame)
|
||||
* Updated blood donation counter to reflect number of confirmed blood donations. (@hydroflame)
|
||||
* Minor improvements to ram calculation process (@Snarling)
|
||||
* Improved terminal arguments detection (@Snarling)
|
||||
* Improved display for ls terminal command. (@Snarling)
|
||||
* Added more internal tests and improved test quality (@d0sboots)
|
||||
* Various codebase improvements (@Snarling, @d0sboots)
|
||||
* Documentation improvements (Many contributors)
|
||||
* Nerf noodle bar
|
||||
|
||||
SPOILER SECTIONS:
|
||||
|
||||
SF2:
|
||||
|
||||
* Corrected the "Next equipment unlock" text for member upgrades. (@LiamGeorge1999)
|
||||
|
||||
SF3:
|
||||
|
||||
* Many Corporation API changes, due to functionality changes and due to property name changes. See documentation for correct usage.
|
||||
* Can now have multiple divisions within the same industry. (@Mughur)
|
||||
* Can now sell a division or sell the entire corporation. (@Mughur)
|
||||
* Product quality now depends on material quality (@Mughur)
|
||||
* Product price can be set separately per-city (@Mughur)
|
||||
* Exports can be set relative to inventory or production (@Mughur)
|
||||
* ns.corporation.getProduct is city-specific (@Mughur)
|
||||
* Bulk purchasing is available from the start (@Mughur)
|
||||
* Can buy multiple upgrades at a time, similar to hacknet node upgrades (@Mughur)
|
||||
* Various UI changes (@Mughur)
|
||||
* Removed happiness from employees (@Mughur)
|
||||
* Coffee renamed to tea (@Mughur)
|
||||
* Training position renamed to intern (@Mughur)
|
||||
* More options for SmartSupply (@Mughur)
|
||||
* Advertising nerf (@Mughur)
|
||||
* Nerfed investors and reduced effectiveness of "fraud" (@Mughur)
|
||||
* Fixed React errors, renamed most corp object properties (@Snarling)
|
||||
* Various other changes (@Mughur, @Snarling)
|
||||
|
||||
SF4:
|
||||
|
||||
* Faction invites trigger immediately when running ns.singularity.getFactionInvitations (@Snarling)
|
||||
* Added ns.singularity.getCompanyPositionInfo (@jeek)
|
||||
|
||||
SF6:
|
||||
|
||||
* Failing a contract or operation now consumes the action (@Zelow79)
|
||||
|
||||
SF9:
|
||||
|
||||
* The SF9.3 bonus is also given to the player when inside of BN9. (@Zelow79)
|
||||
* Adjusted the SF1 bonus for hacknet costs (slight nerf), and raised the SF9 bonus to compensate. (@d0sboots)
|
||||
* Added option to purchase company favor using hashes. (@jeek)
|
||||
|
||||
SF10:
|
||||
|
||||
* Sleeve shock recovery now scales with intelligence. (@Tyasuh)
|
||||
* Sleeve kills during crimes count towards numPeopleKilled (@Zelow79)
|
||||
* Fix a misspelled moneySourceTracker call for sleeves (@zerbosh)
|
||||
* ns.sleeve.getTask return value now includes cyclesNeeded where applicable (@Snarling)
|
||||
* Internal type refactoring on Sleeve Work. (@Snarling)
|
||||
|
||||
SF12:
|
||||
|
||||
* Fix inconsistency in how BN12 multipliers were calculated
|
||||
|
||||
SF13:
|
||||
|
||||
* Improve performance of Stanek's gift update cycle, and rework (buff) bonus time handling. (@Snarling)
|
||||
|
||||
|
||||
v2.2.2 - 21 Feb 2023
|
||||
--------------------
|
||||
|
||||
PLANNED 2.3 BREAKING CHANGES:
|
||||
|
||||
@@ -19,7 +19,7 @@ Then, to fix your script, make sure you have a sleep or any other timed function
|
||||
await ns.sleep(1000); // Add a 1s sleep to prevent freezing
|
||||
}
|
||||
|
||||
Also make sure that each while loop gets to `awaited` function or `break`, for example the next snippet has a sleep
|
||||
Also make sure that each while loop gets to the `awaited` function or `break`, for example the next snippet has a sleep
|
||||
function, but it nor any possible conditional breaks are never reached and therefore will crash the game::
|
||||
|
||||
while(true) {
|
||||
@@ -33,11 +33,11 @@ function, but it nor any possible conditional breaks are never reached and there
|
||||
}
|
||||
}
|
||||
|
||||
If `n00dles` current money is, for example, 75% of the maximum money, the script will not reach neither `grow` nor `break` and crashes the game.
|
||||
Adding a sleep like in the first example, or changing the code so that `awaited` function or `break` is always reached, would prevent the crash.
|
||||
If `n00dles` current money is, for example, 75% of the maximum money, the script will reach neither `grow` nor `break` and the game will crash.
|
||||
Adding a sleep like in the first example, or changing the code so that the `awaited` function or `break` is always reached, would prevent the crash.
|
||||
|
||||
Common infinite loop when translating the server purchasing script in starting guide to :ref:`netscriptjs` is to have a
|
||||
while loop, that's condition's change is conditional::
|
||||
while loop, where the condition's change is conditional::
|
||||
|
||||
var ram = 8;
|
||||
var i = 0;
|
||||
@@ -51,7 +51,7 @@ while loop, that's condition's change is conditional::
|
||||
}
|
||||
}
|
||||
|
||||
if player does not currently have enough money to purchase a server, the `if`'s condition will be false and `++i` will not be reached.
|
||||
If the player does not currently have enough money to purchase a server, the `if`'s condition will be false and `++i` will not be reached.
|
||||
Since the script doesn't have `sleep` and value `i` will not change without the `if` being true, this will crash the game. Adding a `sleep`
|
||||
that is always reached would prevent the crash.
|
||||
|
||||
|
||||
@@ -860,7 +860,7 @@ startup script. Feel free to adjust it to your liking.
|
||||
ns.scp("early-hack-template.js", serv);
|
||||
ns.brutessh(serv);
|
||||
ns.nuke(serv);
|
||||
ns.exec("early-hack-template.sj", serv, 12);
|
||||
ns.exec("early-hack-template.js", serv, 12);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ Description
|
||||
From the shadows, they rose.
|
||||
|
||||
Organized crime groups quickly filled the void of power left behind from the collapse of
|
||||
Western government in the 2050s. As society and civlization broke down, people quickly
|
||||
Western government in the 2050s. As society and civilization broke down, people quickly
|
||||
succumbed to the innate human impulse of evil and savagery. The organized crime
|
||||
factions quickly rose to the top of the modern world.
|
||||
|
||||
@@ -306,11 +306,11 @@ Source-File
|
||||
(Note that the Level 3 effect of this Source-File only applies when entering a new BitNode, NOT
|
||||
when installing Augmentations.)
|
||||
|
||||
This Source-File also increases your hacknet multipliers by:
|
||||
This Source-File also increases hacknet production and reduces hacknet costs by:
|
||||
|
||||
* Level 1: 8%
|
||||
* Level 2: 12%
|
||||
* Level 3: 14%
|
||||
* Level 1: 12%
|
||||
* Level 2: 18%
|
||||
* Level 3: 21%
|
||||
|
||||
Difficulty
|
||||
Hard
|
||||
|
||||
@@ -7,13 +7,13 @@ Welcome to Bitburner's documentation!
|
||||
=====================================
|
||||
Bitburner is a programming-based `incremental game <https://en.wikipedia.org/wiki/Incremental_game>`_
|
||||
that revolves around hacking and cyberpunk themes. The game is currently in the
|
||||
early beta stage of development. It `can be played here <https://bitburner-official.github.io/bitburner/>`_.
|
||||
early beta stage of development. It `can be played here <https://danielyxie.github.io/bitburner/>`_.
|
||||
|
||||
What is Bitburner?
|
||||
------------------
|
||||
Bitburner is a cyberpunk-themed incremental RPG where you, the player, take the role of an unknown hacker in a dark, dystopian world.
|
||||
When a mysterious hacker called jump3R messages you, he/she confirms your suspicions that there is something wrong with the world around you.
|
||||
Now, aided by jump3R, you embark on a quest to gain money and power by any means necessary, in the hopes that this will lead to to uncover the
|
||||
When a mysterious hacker called jump3R messages you, they confirm your suspicions that there is something wrong with the world around you.
|
||||
Now, aided by jump3R, you embark on a quest to gain money and power by any means necessary, in the hopes that this will lead you to uncover the
|
||||
secrets that you've been searching for.
|
||||
|
||||
.. toctree::
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
closeTail() Netscript Function
|
||||
===============================
|
||||
|
||||
.. js:function:: closeTail([scriptPid])
|
||||
.. js:function:: closeTail([scriptPid = current script])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ deleteServer() Netscript Function
|
||||
|
||||
:RAM cost: 2.25 GB
|
||||
:param string hostname: Hostname of the server to delete.
|
||||
:returns: ``true`` if successful, ``false`` otherwise.
|
||||
:returns: ``true`` if successful.
|
||||
|
||||
Deletes the specified purchased server.
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@ exec() Netscript Function
|
||||
:param string script: Filename of script to execute.
|
||||
:param string hostname: Hostname of the target server on which to execute the script.
|
||||
:param number numThreads: Optional thread count for new script. Set to 1 by
|
||||
default. Will be rounded to nearest integer
|
||||
default. Has to be an integer.
|
||||
:param args...: Additional arguments to pass into the new script that is
|
||||
being run. Note that if any arguments are being
|
||||
passed into the new script, then the third argument ``numThreads`` must
|
||||
be filled in with a value.
|
||||
:returns: Newly created process id on success, 0 on failure.
|
||||
:returns: Newly created process id (PID) on success, 0 on failure.
|
||||
|
||||
Run a script as a separate process on a specified server. This is similar to
|
||||
the :doc:`run<run>` function except that it can be used to run a script on any
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
fileExists() Netscript Function
|
||||
===============================
|
||||
|
||||
.. js:function:: fileExists(filename[, hostname])
|
||||
.. js:function:: fileExists(filename[, hostname = current hostname])
|
||||
|
||||
:RAM cost: 0.1 GB
|
||||
|
||||
@@ -9,9 +9,9 @@ fileExists() Netscript Function
|
||||
:param string hostname:
|
||||
Hostname of target server. This is optional. If it is not specified then
|
||||
the function will use the current server as the target server.
|
||||
:returns: ``true`` if the file exists, ``false`` if it doesn't.
|
||||
:returns: ``true`` if the file exists.
|
||||
|
||||
The filename for scripts is case-sensitive, but for other types of files it
|
||||
The filename for scripts and .txt files is case-sensitive, but for other types of files it
|
||||
is not. For example, ``fileExists("brutessh.exe")`` will work fine, even
|
||||
though the actual program is named ``BruteSSH.exe``.
|
||||
|
||||
|
||||
29
doc/source/netscript/basicfunctions/formatNumber.rst
Normal file
29
doc/source/netscript/basicfunctions/formatNumber.rst
Normal file
@@ -0,0 +1,29 @@
|
||||
formatRam() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: formatRam(number[, fractionalDigits = 3[, suffixStart = 1000[, isInteger = false]]])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param number number: Number to format.
|
||||
:param number fractionalDigits: Number of digits to show in the fractional part of the decimal number.
|
||||
:param number suffixStart: How high a number must be before a suffix will be added.
|
||||
:param boolean isInteger: Whether the number represents an integer. Integers do not display fractional digits until a suffix is present.
|
||||
|
||||
:returns: Formatted string.
|
||||
|
||||
Converts a number into a string with formatting.
|
||||
|
||||
The format depends on the Numeric Display settings (all options on the "Numeric Display" options page).
|
||||
|
||||
Examples:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
const number = 1.23456789
|
||||
ns.print(ns.formatNumber(number)); //1.235
|
||||
ns.print(ns.formatNumber(number,4)); //1.2346
|
||||
ns.print(ns.formatNumber(number*1e9,3,1e10)); //1234567890
|
||||
ns.print(ns.formatNumber(number*1e10,5,1e6)); //12.34568b or 1.23457e9
|
||||
ns.print(ns.formatNumber(number,4,1000, true)); //1.235
|
||||
ns.print(ns.formatNumber(number,4,1000, false)); //1.2346
|
||||
23
doc/source/netscript/basicfunctions/formatPercent.rst
Normal file
23
doc/source/netscript/basicfunctions/formatPercent.rst
Normal file
@@ -0,0 +1,23 @@
|
||||
formatPercent() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: formatPercent(number[, fractionalDigits = 2])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param number number: Number to format.
|
||||
:param number fractionalDigits: Number of digits to show in the fractional part of the decimal number.
|
||||
|
||||
:returns: Formatted string.
|
||||
|
||||
Converts a number into a string with percent formatting.
|
||||
|
||||
The format depends on the Numeric Display settings (all options on the "Numeric Display" options page).
|
||||
|
||||
Examples:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
const number = 1.23456789
|
||||
ns.print(ns.formatPercent(number)); //123.46%
|
||||
ns.print(ns.formatPercent(number,4)); //123.4568%
|
||||
26
doc/source/netscript/basicfunctions/formatRam.rst
Normal file
26
doc/source/netscript/basicfunctions/formatRam.rst
Normal file
@@ -0,0 +1,26 @@
|
||||
formatRam() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: formatRam(number[, fractionalDigits = 2])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param number number: Number to format.
|
||||
:param number fractionalDigits: Number of digits to show in the fractional part of the decimal number.
|
||||
|
||||
:returns: Formatted string.
|
||||
|
||||
Converts a number into a string with ram formatting.
|
||||
|
||||
The format depends on the Numeric Display settings (all options on the "Numeric Display" options page).
|
||||
|
||||
Examples:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
const number = 1.23456789
|
||||
ns.print(ns.formatRam(number)); //1.23GB or 1.23GiB
|
||||
ns.print(ns.formatRam(number,0)); //1GB or 1GiB
|
||||
ns.print(ns.formatRam(number,3)); //1.235GB or 1.235GiB
|
||||
ns.print(ns.formatRam(2**12,3)); //4.096tB or 4tiB
|
||||
ns.print(ns.formatRam(2**20,3)); //1.049PB or 1PiB
|
||||
@@ -1,7 +1,7 @@
|
||||
getScriptRam() Netscript Function
|
||||
=================================
|
||||
|
||||
.. js:function:: getScriptRam(filename[, hostname])
|
||||
.. js:function:: getScriptRam(filename[, hostname = current hostname])
|
||||
|
||||
:RAM cost: 0.1 GB
|
||||
:param string filename: Filename of script.
|
||||
|
||||
@@ -5,8 +5,9 @@ getSharePower() Netscript Function
|
||||
|
||||
:RAM cost: 0.2 GB
|
||||
|
||||
Calculate your share power. Based on all the active share calls.
|
||||
Returns the reputation gain rate multiplier, i.e. 1.5 means +50% rep gain rate.
|
||||
:returns: Reputation gain rate multiplier from sharing. i.e. 1.5 means +50% rep gain rate.
|
||||
|
||||
Calculate your share power, based on all the active share calls.
|
||||
|
||||
Examples:
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
isRunning() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: isRunning(filename[, hostname=current hostname[, args...]])
|
||||
.. js:function:: isRunning(filename[, hostname = current hostname[, args...]])
|
||||
.. js:function:: isRunning(PID)
|
||||
|
||||
:RAM cost: 0.1 GB
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
kill() Netscript Function
|
||||
=========================
|
||||
|
||||
.. js:function:: kill(script, [hostname=current hostname, [args...]])
|
||||
.. js:function:: kill(PID)
|
||||
.. js:function:: kill(script[, hostname=current hostname[, args...]])
|
||||
|
||||
:RAM cost: 0.5 GB
|
||||
:param string script: Filename of the script to kill.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
killall() Netscript Function
|
||||
============================
|
||||
|
||||
.. js:function:: killall([hostname = current hostname,[safetyguard = true]])
|
||||
.. js:function:: killall([hostname = current hostname[, safetyguard = true]])
|
||||
|
||||
:RAM cost: 0.5 GB
|
||||
:param string hostname: Hostname of the server on which to kill all scripts.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
moveTail() Netscript Function
|
||||
===============================
|
||||
|
||||
.. js:function:: moveTail(x , y[, pid])
|
||||
.. js:function:: moveTail(x , y[, pid = current script])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
mv() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: mv(serverName, sourceFile, targetFile)
|
||||
.. js:function:: mv(hostname, sourceFile, targetFile)
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param string hostname: Hostname of the target server.
|
||||
:param string sourceFile: Name of the file to be moved/renamed.
|
||||
:param string targetFile: Target name of the file.
|
||||
|
||||
Move the source file to target file on the given server.
|
||||
|
||||
This command only works for scripts and text files (.txt). It cannot, however, be used to convert from script to text file, or vice versa.
|
||||
|
||||
@@ -7,8 +7,12 @@ nFormat() Netscript Function
|
||||
|
||||
:param number number: Number to format.
|
||||
:param string format: Formatting to use. Read http://numeraljs.com/#format for specifics.
|
||||
:returns: Formatted string.
|
||||
|
||||
onverts a number into a string with the specified formatter.
|
||||
Deprecated, might be removed in 2.3 version of the game. Use :doc:`formatPercent<formatPercent>` for formatting percentages,
|
||||
:doc:`formatRam<formatRam>` for formatting ram amounts and :doc:`formatNumber<formatNumber>` for formatting other numbers.
|
||||
|
||||
Converts a number into a string with the specified formatter.
|
||||
This uses the numeral.js library, so the formatters must be compatible with that.
|
||||
|
||||
Examples:
|
||||
|
||||
@@ -6,7 +6,7 @@ ps() Netscript Function
|
||||
:RAM cost: 0.2 GB
|
||||
:param string hostname: Hostname address of the target server.
|
||||
If not specified, it will be the current server's IP by default.
|
||||
:returns: array of object
|
||||
:returns: array of objects
|
||||
|
||||
Returns an array with general information about all scripts running on the
|
||||
specified target server. The information for each server is given in an
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
renamePurchasedServer() Netscript Function
|
||||
===================================
|
||||
|
||||
.. js:function:: renamePurchasedServer(hostname, newName)
|
||||
|
||||
:RAM cost: 2 GB
|
||||
:param string hostname: Hostname of the purchased server.
|
||||
:param string newName: New name for the given server.
|
||||
:returns: ``true`` if the renaming was succesful.
|
||||
|
||||
Upgrades the purchased server with the specified hostname to have specified amount of RAM.
|
||||
|
||||
The ``hostname`` argument can be any data type, but it will be converted to
|
||||
a string and have whitespace removed. New RAM amount has to be higher than the current RAM
|
||||
and a power of 2. Upgrading a server costs the difference of old RAM server cost and new RAM
|
||||
server cost.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
ns.renamePurchasedServer("server", "old_server");
|
||||
@@ -1,7 +1,7 @@
|
||||
resizeTail() Netscript Function
|
||||
===============================
|
||||
|
||||
.. js:function:: resizeTail(width, heigth[, pid])
|
||||
.. js:function:: resizeTail(width, heigth[, pid = current script])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
|
||||
19
doc/source/netscript/basicfunctions/rm.rst
Normal file
19
doc/source/netscript/basicfunctions/rm.rst
Normal file
@@ -0,0 +1,19 @@
|
||||
mv() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: rm(Filename [,hostname = current hostname])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param string Filename: Name of the file to be deleted.
|
||||
:param string hostname: Hostname of the target server.
|
||||
|
||||
Delete a file on the given server.
|
||||
|
||||
.. warning!:: There is no safetychecks or recycling bins. Deleted files are lost.
|
||||
|
||||
Examples:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
ns.rm("foo.js");
|
||||
@@ -6,12 +6,12 @@ run() Netscript Function
|
||||
:RAM cost: 1 GB
|
||||
:param string script: Filename of script to run
|
||||
:param number numThreads: Optional thread count for new script. Set to 1 by
|
||||
default. Will be rounded to nearest integer.
|
||||
default. Has to be an integer.
|
||||
:param args...:
|
||||
Additional arguments to pass into the new script that is being run. Note
|
||||
that if any arguments are being passed into the new script, then the
|
||||
second argument ``numThreads`` must be filled in with a value.
|
||||
:returns: The process id of the new process or 0 on failure.
|
||||
:returns: The process id (PID) of the new process or 0 on failure.
|
||||
|
||||
Run a script as a separate process. This function can only be used to run
|
||||
scripts located on the current server (the server running the script that
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
scan() Netscript Function
|
||||
=========================
|
||||
|
||||
.. js:function:: scan(hostname=current hostname)
|
||||
.. js:function:: scan(hostname = current hostname)
|
||||
|
||||
:RAM cost: 0.2 GB
|
||||
:param string hostname: Hostname of the server to scan.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
scp() Netscript Function
|
||||
========================
|
||||
|
||||
.. js:function:: scp(files, destination [, source])
|
||||
.. js:function:: scp(files, destination [, source = current hostname])
|
||||
|
||||
:RAM cost: 0.6 GB
|
||||
:param string/array files: Filename or an array of filenames of script/literature files to copy
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sleep() Netscript Function
|
||||
==========================
|
||||
|
||||
.. js:function:: sleep(n)
|
||||
.. js:function:: sleep([n = 0])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
:param number n: Number of milliseconds to sleep
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
spawn() Netscript Function
|
||||
==========================
|
||||
|
||||
.. js:function:: spawn(script, numThreads[, args...])
|
||||
.. js:function:: spawn(script[, numThreads = 1[, args...]])
|
||||
|
||||
:RAM cost: 2 GB
|
||||
:param string script: Filename of script to execute
|
||||
:param number numThreads: Number of threads to spawn new script with. Will
|
||||
be rounded to nearest integer.
|
||||
:param number numThreads: Number of threads to spawn new script with. Has to be an integer.
|
||||
:param args...:
|
||||
Additional arguments to pass into the new script that is being run.
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
tFormat() Netscript Function
|
||||
==============================
|
||||
|
||||
.. js:function:: tFormat(milliseconds[, milliPrecision])
|
||||
.. js:function:: tFormat(milliseconds[, milliPrecision = false])
|
||||
|
||||
:RAM cost: 0 GB
|
||||
|
||||
:param string milliseconds: Number of millisecond to format.
|
||||
:param boolean milliPrecision: Format time with subsecond precision. Defaults to false.
|
||||
:param boolean milliPrecision: Format time with subsecond precision.
|
||||
:returns: Formatted string.
|
||||
|
||||
Format time to a readable string.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ upgradePurchasedServer() Netscript Function
|
||||
:param string hostname: Hostname of the purchased server.
|
||||
:param number ram: Amount of RAM of the purchased server. Must be a power of
|
||||
2. Maximum value of :doc:`getPurchasedServerMaxRam<getPurchasedServerMaxRam>`
|
||||
:returns: ``true`` if the upgrade succeeded, ``false`` otherwise
|
||||
:returns: ``true`` if the upgrade succeeded.
|
||||
|
||||
Upgrades the purchased server with the specified hostname to have specified amount of RAM.
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ This includes information such as function signatures, what they do, and their r
|
||||
tprint() <basicfunctions/tprint>
|
||||
tFormat() <basicfunctions/tFormat>
|
||||
nFormat() <basicfunctions/nFormat>
|
||||
formatNumber() <basicfunctions/formatNumber>
|
||||
formatPercent() <basicfunctions/formatPercent>
|
||||
formatRam() <basicfunctions/formatRam>
|
||||
disableLog() <basicfunctions/disableLog>
|
||||
enableLog() <basicfunctions/enableLog>
|
||||
isLogEnabled() <basicfunctions/isLogEnabled>
|
||||
@@ -44,6 +47,7 @@ This includes information such as function signatures, what they do, and their r
|
||||
ls() <basicfunctions/ls>
|
||||
ps() <basicfunctions/ps>
|
||||
mv() <basicfunctions/mv>
|
||||
rm() <basicfunctions/rm>
|
||||
hasRootAccess() <basicfunctions/hasRootAccess>
|
||||
getHostname() <basicfunctions/getHostname>
|
||||
getHackingLevel() <basicfunctions/getHackingLevel>
|
||||
@@ -63,6 +67,7 @@ This includes information such as function signatures, what they do, and their r
|
||||
purchaseServer() <basicfunctions/purchaseServer>
|
||||
deleteServer() <basicfunctions/deleteServer>
|
||||
upgradePurchasedServer() <basicfunctions/upgradePurchasedServer>
|
||||
renamePurchasedServer() <basicfunctions/renamePurchasedServer>
|
||||
getPurchasedServers() <basicfunctions/getPurchasedServers>
|
||||
getPurchasedServerLimit() <basicfunctions/getPurchasedServerLimit>
|
||||
getPurchasedServerMaxRam() <basicfunctions/getPurchasedServerMaxRam>
|
||||
|
||||
@@ -7,7 +7,7 @@ Netscript Miscellaneous
|
||||
|
||||
Netscript Ports
|
||||
---------------
|
||||
Netscript Ports are endpoints that can be used to communicate between scripts.
|
||||
Netscript Ports are endpoints that can be used to communicate between scripts and across servers.
|
||||
A port is implemented as a sort of serialized queue, where you can only write
|
||||
and read one element at a time from the port. Only string and number types may be written to ports. When you read data from a port,
|
||||
the element that is read is removed from the port.
|
||||
@@ -15,9 +15,7 @@ the element that is read is removed from the port.
|
||||
The :js:func:`read`, :js:func:`write`, :js:func:`tryWrite`, :js:func:`clear`, and :js:func:`peek`
|
||||
Netscript functions can be used to interact with ports.
|
||||
|
||||
Right now, there are only 20 ports for Netscript, denoted by the number 1
|
||||
through 20. When using the functions above, the ports are specified
|
||||
by passing the number as the first argument and the value as the second.
|
||||
When using the functions above, the ports are specified by passing the number as the first argument and the value as the second.
|
||||
The default maximum capacity of a port is 50, but this can be changed in Options > System. Setting this too high can cause the game to use a lot of memory.
|
||||
|
||||
.. important:: The data inside ports are not saved! This means if you close and re-open the game, or reload the page then you will lose all of the data in the ports!
|
||||
@@ -35,7 +33,7 @@ Now assume we ran the following simple script
|
||||
.. code:: javascript
|
||||
|
||||
export async function main(ns) {
|
||||
for (const i = 0; i < 10; ++i) {
|
||||
for (var i = 0; i < 10; ++i) {
|
||||
ns.writePort(1, i); //Writes the value of i to port 1
|
||||
}
|
||||
}
|
||||
@@ -49,7 +47,7 @@ Then, assume we run the following script
|
||||
.. code:: javascript
|
||||
|
||||
export async function main(ns) {
|
||||
for (const i = 0; i < 3; ++i) {
|
||||
for (var i = 0; i < 3; ++i) {
|
||||
ns.print(ns.readPort(1)); //Reads a value from port 1 and then prints it
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ in order to make writing scripts easier, or even use typescript.
|
||||
To make use of this Remote API through the official server, look here: https://github.com/bitburner-official/typescript-template.
|
||||
If you want to make your own server, see below for API details.
|
||||
|
||||
This API uses the JSON RCP 2.0 protocol. Inputs are in the following form:
|
||||
This API uses the JSON RPC 2.0 protocol. Inputs are in the following form:
|
||||
|
||||
.. code-block:: javascript
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ not migrated (require manual changes sometimes):
|
||||
* 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.
|
||||
* sleep can no longer be called simultaneously, 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
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
v2.0.0 Migration Guide
|
||||
======================
|
||||
|
||||
In v2.0.0 a few more API have been broken.
|
||||
In v2.0.0 a few more APIs have been broken.
|
||||
|
||||
Working
|
||||
-------
|
||||
|
||||
Working has been rebuilt from the grounds up. The motivation for that change is that all
|
||||
Working has been rebuilt from the ground up. The motivation for this change is that all
|
||||
different types of work all required different cached variables on the main Player object.
|
||||
This caused a lot of bugs and crashes. It's been reworked in such a way as to prevent bugs
|
||||
and make it nearly trivial to add new kinds of work.
|
||||
All work type give their reward immediately. No need to stop work to bank rewards like reputation.
|
||||
All work types give their reward immediately. No need to stop work to bank rewards like reputation.
|
||||
Faction and Company work no longer have a time limit.
|
||||
Company work no longer reduces rep gain by half for quitting early.
|
||||
Company faction require 400k rep to join (from 200k)
|
||||
Backdooring company server reduces faction requirement to 300k.
|
||||
Company factions now require 400k rep to join (up from 200k).
|
||||
Backdooring a company server reduces faction requirement to 300k.
|
||||
All types of work generally no longer keep track of cumulative gains like exp and reputation since it's applied instantly.
|
||||
|
||||
commitCrime
|
||||
-----------
|
||||
|
||||
crime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature
|
||||
has not changed its behavior has. It also has a new 'focus' parameters.
|
||||
Crime now loops, meaning after finishing one shoplift you start the next one with no input. While the signature
|
||||
has not changed, its behavior has. It also has a new 'focus' parameter.
|
||||
|
||||
getPlayer
|
||||
---------
|
||||
|
||||
The following work-related fields are not longer included:
|
||||
The following work-related fields are no longer included:
|
||||
|
||||
* workChaExpGained
|
||||
* currentWorkFactionName
|
||||
@@ -55,45 +55,45 @@ getPlayer
|
||||
* workAgiExpGained
|
||||
* className
|
||||
|
||||
The reason for that is that these fields are all, in one way or another, included in the new work field 'currentWork'.
|
||||
The reason for this, is that these fields are all, in one way or another, included in the new work field 'currentWork'.
|
||||
Some of these values are also irrelevant.
|
||||
Take a look at the new singularity.getCurrentWork function.
|
||||
Take a look at the new singularity.getCurrentWork function:
|
||||
|
||||
All fields ending in _mult have been moved to the 'mults' struct.
|
||||
For example: getPlayer().hacking_skill_mult => getPlayer().mults.hacking_skill
|
||||
|
||||
skills have been moved to the skills struct
|
||||
skills has been moved to the skills struct
|
||||
For example: getPlayer().hacking => getPlayer().skills.hacking
|
||||
|
||||
exp have been moved to the exp struct
|
||||
exp has been moved to the exp struct
|
||||
For example: getPlayer().hacking_exp => getPlayer().exp.hacking
|
||||
|
||||
hp have been moved to the hp struct
|
||||
hp has been moved to the hp struct
|
||||
For example: getPlayer().max_hp => getPlayer().hp.max or hp.current
|
||||
|
||||
hasWseAccount, hasTixApiAccess, has4SData, has4SDataTixApi have been removed and replaced with similar stock functions
|
||||
hasWseAccount, hasTixApiAccess, has4SData, has4SDataTixApi have been removed and replaced with similar stock functions.
|
||||
|
||||
workForCompany
|
||||
--------------
|
||||
|
||||
The argument 'companyName' is now not-optional.
|
||||
The argument 'companyName' is now required.
|
||||
|
||||
|
||||
getScriptIncome & getScriptExpGain
|
||||
----------------------------------
|
||||
|
||||
Those 2 functions used to have a call where no arguments would return the total for all scripts. This caused weird signature.
|
||||
If you want to get the total income/exp for all scripts used the new getTotalScriptIncome / getTotalScriptExpGain instead.
|
||||
These two functions used to have a call where, if no arguments were provided, it would return the total for all scripts. This caused weird signature.
|
||||
If you want to get the total income/exp for all scripts, use the new getTotalScriptIncome / getTotalScriptExpGain instead.
|
||||
|
||||
scp
|
||||
---
|
||||
|
||||
scp has it's 2 last argument reversed, the signature is now scp(files, destination, optional_source)
|
||||
The last two arguments of spc have been reversed. The signature is now scp(files, destination, optional_source)
|
||||
|
||||
Singularity
|
||||
-----------
|
||||
|
||||
A while ago top level singularity function were deprecated in favor of the singularity namespace.
|
||||
The top level singularity functions were deprecated a while ago in favor of the singularity namespace.
|
||||
This means calls like 'ns.connect' need to be changed to 'ns.singularity.connect'
|
||||
|
||||
|
||||
@@ -106,4 +106,4 @@ stock.buy, stock.sell, stock.short
|
||||
corporation.bribe
|
||||
-----------------
|
||||
|
||||
The ability to give shares as bribe has been removed. The signature is now bribe(faction, money)
|
||||
The ability to give shares as a bribe has been removed. The signature is now bribe(faction, money)
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
const { app, BrowserWindow } = require("electron");
|
||||
const { app, shell, BrowserWindow } = require("electron");
|
||||
const log = require("electron-log");
|
||||
const utils = require("./utils");
|
||||
const achievements = require("./achievements");
|
||||
const menu = require("./menu");
|
||||
const api = require("./api-server");
|
||||
const cp = require("child_process");
|
||||
const path = require("path");
|
||||
const { windowTracker } = require("./windowTracker");
|
||||
|
||||
@@ -48,39 +47,15 @@ async function createWindow(killall) {
|
||||
window.show();
|
||||
if (debug) window.webContents.openDevTools();
|
||||
|
||||
window.webContents.on("new-window", async function (e, url) {
|
||||
// Let's make sure sure we have a proper url
|
||||
let parsedUrl;
|
||||
try {
|
||||
parsedUrl = new URL(url);
|
||||
} catch (_) {
|
||||
// This is an invalid url, let's just do nothing
|
||||
log.warn(`Invalid url found: ${url}`);
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
// Just use the default handling for file requests, they should be intercepted in main.js file protocol intercept.
|
||||
if (url.startswith("file://")) return;
|
||||
|
||||
if (process.platform === "win32") {
|
||||
// If we have parameters in the URL, explorer.exe won't register the URL and will open the file explorer instead.
|
||||
let urlToOpen = parsedUrl.toString();
|
||||
if (parsedUrl.search) {
|
||||
log.log(`Cannot open a path with parameters: ${parsedUrl.search}`);
|
||||
urlToOpen = urlToOpen.replace(parsedUrl.search, "");
|
||||
// It would be possible to launch an URL with parameter using this, but it would mess up the process again...
|
||||
// const escapedUri = parsedUrl.href.replace('&', '^&');
|
||||
// cp.spawn("cmd.exe", ["/c", "start", escapedUri], { detached: true, stdio: "ignore" });
|
||||
}
|
||||
|
||||
cp.spawn("explorer", [urlToOpen], { detached: true, stdio: "ignore" });
|
||||
} else {
|
||||
// and open every other protocols on the browser
|
||||
utils.openExternal(url);
|
||||
}
|
||||
e.preventDefault();
|
||||
window.webContents.setWindowOpenHandler(({ url }) => {
|
||||
// File protocol is allowed because it will use the file protocol intercept from main.js
|
||||
if (url.startsWith("file://")) return { action: "allow" };
|
||||
// Only http and https requests will be forwarded to browser.
|
||||
// By using shell.openExternal and returning action: "deny"
|
||||
if (url.startsWith("http://") || url.startsWith("https://")) shell.openExternal(url);
|
||||
return { action: "deny" };
|
||||
});
|
||||
|
||||
window.webContents.backgroundThrottling = false;
|
||||
|
||||
achievements.enableAchievementsInterval(window);
|
||||
|
||||
@@ -72,20 +72,6 @@ function setStopProcessHandler(app, window) {
|
||||
log.error(error);
|
||||
}
|
||||
|
||||
// Because of a steam limitation, if the player has launched an external browser,
|
||||
// steam will keep displaying the game as "Running" in their UI as long as the browser is up.
|
||||
// So we'll alert the player to close their browser.
|
||||
if (global.app_playerOpenedExternalLink) {
|
||||
await dialog.showMessageBox({
|
||||
title: "Bitburner",
|
||||
message: "You may have to close your browser to properly exit the game.",
|
||||
detail:
|
||||
'Steam will keep tracking Bitburner as "Running" if any process started within the game is still running.' +
|
||||
" This includes launching an external link, which opens up your browser.",
|
||||
type: "warning",
|
||||
buttons: ["OK"],
|
||||
});
|
||||
}
|
||||
// We'll try to execute javascript on the page to see if we're stuck
|
||||
let canRunJS = false;
|
||||
window.webContents.executeJavaScript("window.stop(); document.close()", true).then(() => (canRunJS = true));
|
||||
|
||||
@@ -310,7 +310,7 @@ function getMenu(window) {
|
||||
})
|
||||
.then(({ response }) => {
|
||||
if (response === 1) {
|
||||
utils.openExternal("https://github.com/bitburner-official/bitburner-vscode");
|
||||
shell.openExternal("https://github.com/bitburner-official/bitburner-vscode");
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -369,6 +369,7 @@ function getMenu(window) {
|
||||
submenu: [
|
||||
{
|
||||
label: "Activate",
|
||||
accelerator: "f12",
|
||||
click: () => window.webContents.openDevTools(),
|
||||
},
|
||||
{
|
||||
|
||||
4
electron/package-lock.json
generated
4
electron/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "bitburner",
|
||||
"version": "1.6.4",
|
||||
"version": "2.3.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bitburner",
|
||||
"version": "1.6.4",
|
||||
"version": "2.3.1",
|
||||
"dependencies": {
|
||||
"electron-config": "^2.0.0",
|
||||
"electron-log": "^4.4.8",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "bitburner",
|
||||
"version": "1.6.4",
|
||||
"version": "2.3.1",
|
||||
"description": "A cyberpunk-themed programming incremental game",
|
||||
"main": "main.js",
|
||||
"author": "Daniel Xie & Olivier Gagnon",
|
||||
"author": "Daniel Xie, Olivier Gagnon, et al.",
|
||||
"mac": {
|
||||
"icon": "./public/icons/mac/icon.icns",
|
||||
"category": "public.app-category.games"
|
||||
|
||||
@@ -58,12 +58,10 @@ async function prepareFolders(...folders) {
|
||||
for (const folder of folders) {
|
||||
try {
|
||||
// Making sure the folder exists
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await fs.stat(folder);
|
||||
} catch (error) {
|
||||
if (error.code === "ENOENT") {
|
||||
log.warn(`'${folder}' not found, creating it...`);
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await fs.mkdir(folder);
|
||||
} else {
|
||||
log.error(error);
|
||||
@@ -250,13 +248,11 @@ async function saveGameToDisk(window, saveData) {
|
||||
const fileToRemove = oldestFiles.shift();
|
||||
log.debug(`Over Quota -> Removing "${fileToRemove}"`);
|
||||
try {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await fs.unlink(fileToRemove);
|
||||
} catch (error) {
|
||||
log.error(error);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
saveFolderSizeBytes = await getFolderSizeInBytes(currentFolder);
|
||||
log.debug(`Save Folder: ${saveFolderSizeBytes} bytes`);
|
||||
log.debug(
|
||||
|
||||
@@ -87,11 +87,6 @@ async function writeToast(window, message, type = "info", duration = 2000) {
|
||||
await window.webContents.executeJavaScript(`window.appNotifier.toast("${message}", "${type}", ${duration});`, true);
|
||||
}
|
||||
|
||||
function openExternal(url) {
|
||||
shell.openExternal(url);
|
||||
global.app_playerOpenedExternalLink = true;
|
||||
}
|
||||
|
||||
function getZoomFactor() {
|
||||
const configZoom = config.get("zoom", 1);
|
||||
return configZoom;
|
||||
@@ -112,7 +107,6 @@ module.exports = {
|
||||
exportSave,
|
||||
attachUnresponsiveAppHandler,
|
||||
detachUnresponsiveAppHandler,
|
||||
openExternal,
|
||||
writeTerminal,
|
||||
writeToast,
|
||||
getZoomFactor,
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
module.exports = {
|
||||
roots: ["<rootDir>/src/", "<rootDir>/test/"],
|
||||
moduleFileExtensions: ["ts", "tsx", "js", "jsx"],
|
||||
transform: {
|
||||
"^.+\\.(js|jsx|ts|tsx)$": "babel-jest",
|
||||
},
|
||||
testPathIgnorePatterns: [".cypress", "node_modules", "dist"],
|
||||
testEnvironment: "jsdom",
|
||||
testEnvironment: "./FixJSDOMEnvironment.ts",
|
||||
moduleNameMapper: {
|
||||
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
|
||||
"<rootDir>/test/__mocks__/fileMock.js",
|
||||
@@ -12,5 +13,7 @@ module.exports = {
|
||||
"\\!!raw-loader!.*$": "<rootDir>/test/__mocks__/rawLoader.js",
|
||||
"@player": "<rootDir>/src/Player",
|
||||
"@nsdefs": "<rootDir>/src/ScriptEditor/NetscriptDefinitions",
|
||||
"^monaco-editor$": "<rootDir>/test/__mocks__/monacoMock.js",
|
||||
"^monaco-vim$": "<rootDir>/test/__mocks__/monacoMock.js",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## BasicHGWOptions.additionalMsec property
|
||||
|
||||
Number of additional milliseconds that will be spent waiting between the start of the function and when it completes. Experimental in 2.2.2, may be removed in 2.3.
|
||||
Number of additional milliseconds that will be spent waiting between the start of the function and when it completes.
|
||||
|
||||
**Signature:**
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ interface BasicHGWOptions
|
||||
|
||||
| Property | Modifiers | Type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| [additionalMsec?](./bitburner.basichgwoptions.additionalmsec.md) | | number | _(Optional)_ Number of additional milliseconds that will be spent waiting between the start of the function and when it completes. Experimental in 2.2.2, may be removed in 2.3. |
|
||||
| [additionalMsec?](./bitburner.basichgwoptions.additionalmsec.md) | | number | _(Optional)_ Number of additional milliseconds that will be spent waiting between the start of the function and when it completes. |
|
||||
| [stock?](./bitburner.basichgwoptions.stock.md) | | boolean | _(Optional)_ Set to true this action will affect the stock market. |
|
||||
| [threads?](./bitburner.basichgwoptions.threads.md) | | number | _(Optional)_ Number of threads to use for this function. Must be less than or equal to the number of threads the script is running with. |
|
||||
|
||||
|
||||
@@ -21,22 +21,10 @@ Array containing current stamina and max stamina.
|
||||
|
||||
RAM cost: 4 GB Returns an array with two elements: \* \[Current stamina, Max stamina\]
|
||||
|
||||
## Example 1
|
||||
## Example
|
||||
|
||||
|
||||
```ts
|
||||
// NS1:
|
||||
function getStaminaPercentage() {
|
||||
var res = bladeburner.getStamina();
|
||||
return res[0] / res[1];
|
||||
}
|
||||
```
|
||||
|
||||
## Example 2
|
||||
|
||||
|
||||
```ts
|
||||
// NS2:
|
||||
```js
|
||||
function getStaminaPercentage() {
|
||||
const [current, max] = ns.bladeburner.getStamina();
|
||||
return current / max;
|
||||
|
||||
@@ -32,22 +32,10 @@ RAM cost: 10 GB
|
||||
|
||||
Attempts to solve the Coding Contract with the provided solution.
|
||||
|
||||
## Example 1
|
||||
## Example
|
||||
|
||||
|
||||
```js
|
||||
// NS1
|
||||
var reward = codingcontract.attempt(yourSolution, filename, hostname);
|
||||
if (reward) {
|
||||
tprint("Contract solved successfully! Reward: " + reward)
|
||||
} else tprint("Failed to solve contract.")
|
||||
```
|
||||
|
||||
## Example 2
|
||||
|
||||
|
||||
```js
|
||||
// NS2
|
||||
const reward = codingcontract.attempt(yourSolution, filename, hostname);
|
||||
if (reward) {
|
||||
ns.tprint(`Contract solved successfully! Reward: ${reward}`)
|
||||
|
||||
24
markdown/bitburner.companypositioninfo.md
Normal file
24
markdown/bitburner.companypositioninfo.md
Normal file
@@ -0,0 +1,24 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md)
|
||||
|
||||
## CompanyPositionInfo interface
|
||||
|
||||
Company position requirements and salary.
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
export interface CompanyPositionInfo
|
||||
```
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Modifiers | Type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| [name](./bitburner.companypositioninfo.name.md) | | [JobName](./bitburner.jobname.md) | |
|
||||
| [nextPosition](./bitburner.companypositioninfo.nextposition.md) | | [JobName](./bitburner.jobname.md) \| null | |
|
||||
| [requiredReputation](./bitburner.companypositioninfo.requiredreputation.md) | | number | |
|
||||
| [requiredSkills](./bitburner.companypositioninfo.requiredskills.md) | | [Skills](./bitburner.skills.md) | |
|
||||
| [salary](./bitburner.companypositioninfo.salary.md) | | number | |
|
||||
|
||||
11
markdown/bitburner.companypositioninfo.name.md
Normal file
11
markdown/bitburner.companypositioninfo.name.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md) > [name](./bitburner.companypositioninfo.name.md)
|
||||
|
||||
## CompanyPositionInfo.name property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
name: JobName;
|
||||
```
|
||||
11
markdown/bitburner.companypositioninfo.nextposition.md
Normal file
11
markdown/bitburner.companypositioninfo.nextposition.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md) > [nextPosition](./bitburner.companypositioninfo.nextposition.md)
|
||||
|
||||
## CompanyPositionInfo.nextPosition property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
nextPosition: JobName | null;
|
||||
```
|
||||
11
markdown/bitburner.companypositioninfo.requiredreputation.md
Normal file
11
markdown/bitburner.companypositioninfo.requiredreputation.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md) > [requiredReputation](./bitburner.companypositioninfo.requiredreputation.md)
|
||||
|
||||
## CompanyPositionInfo.requiredReputation property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
requiredReputation: number;
|
||||
```
|
||||
11
markdown/bitburner.companypositioninfo.requiredskills.md
Normal file
11
markdown/bitburner.companypositioninfo.requiredskills.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md) > [requiredSkills](./bitburner.companypositioninfo.requiredskills.md)
|
||||
|
||||
## CompanyPositionInfo.requiredSkills property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
requiredSkills: Skills;
|
||||
```
|
||||
11
markdown/bitburner.companypositioninfo.salary.md
Normal file
11
markdown/bitburner.companypositioninfo.salary.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CompanyPositionInfo](./bitburner.companypositioninfo.md) > [salary](./bitburner.companypositioninfo.salary.md)
|
||||
|
||||
## CompanyPositionInfo.salary property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
salary: number;
|
||||
```
|
||||
@@ -1,11 +0,0 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CorpConstants](./bitburner.corpconstants.md) > [coffeeCostPerEmployee](./bitburner.corpconstants.coffeecostperemployee.md)
|
||||
|
||||
## CorpConstants.coffeeCostPerEmployee property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
coffeeCostPerEmployee: number;
|
||||
```
|
||||
@@ -19,7 +19,6 @@ interface CorpConstants
|
||||
| [baseProductProfitMult](./bitburner.corpconstants.baseproductprofitmult.md) | | number | |
|
||||
| [bribeAmountPerReputation](./bitburner.corpconstants.bribeamountperreputation.md) | | number | |
|
||||
| [bribeThreshold](./bitburner.corpconstants.bribethreshold.md) | | number | |
|
||||
| [coffeeCostPerEmployee](./bitburner.corpconstants.coffeecostperemployee.md) | | number | |
|
||||
| [dividendMaxRate](./bitburner.corpconstants.dividendmaxrate.md) | | number | |
|
||||
| [employeeRaiseAmount](./bitburner.corpconstants.employeeraiseamount.md) | | number | |
|
||||
| [employeeSalaryMultiplier](./bitburner.corpconstants.employeesalarymultiplier.md) | | number | Conversion factor for employee stats to initial salary |
|
||||
@@ -31,7 +30,7 @@ interface CorpConstants
|
||||
| [marketCyclesPerEmployeeRaise](./bitburner.corpconstants.marketcyclesperemployeeraise.md) | | number | |
|
||||
| [materialNames](./bitburner.corpconstants.materialnames.md) | | [CorpMaterialName](./bitburner.corpmaterialname.md)<!-- -->\[\] | Names of all materials |
|
||||
| [maxProductsBase](./bitburner.corpconstants.maxproductsbase.md) | | number | Max products for a division without upgrades |
|
||||
| [minEmployeeDecay](./bitburner.corpconstants.minemployeedecay.md) | | number | The minimum decay value for happiness/morale/energy |
|
||||
| [minEmployeeDecay](./bitburner.corpconstants.minemployeedecay.md) | | number | The minimum decay value for morale/energy |
|
||||
| [officeInitialCost](./bitburner.corpconstants.officeinitialcost.md) | | number | |
|
||||
| [officeInitialSize](./bitburner.corpconstants.officeinitialsize.md) | | number | |
|
||||
| [officeSizeUpgradeCostBase](./bitburner.corpconstants.officesizeupgradecostbase.md) | | number | |
|
||||
@@ -42,6 +41,7 @@ interface CorpConstants
|
||||
| [sellSharesCooldown](./bitburner.corpconstants.sellsharescooldown.md) | | number | Cooldown for selling shares in game cycles (1 game cycle = 200ms) |
|
||||
| [sharesPerPriceUpdate](./bitburner.corpconstants.sharesperpriceupdate.md) | | number | When selling large number of shares, price is dynamically updated for every batch of this amount |
|
||||
| [stateNames](./bitburner.corpconstants.statenames.md) | | [CorpStateName](./bitburner.corpstatename.md)<!-- -->\[\] | Names of all corporation game states |
|
||||
| [teaCostPerEmployee](./bitburner.corpconstants.teacostperemployee.md) | | number | |
|
||||
| [unlockNames](./bitburner.corpconstants.unlocknames.md) | | [CorpUnlockName](./bitburner.corpunlockname.md)<!-- -->\[\] | Names of all one-time corporation-wide unlocks |
|
||||
| [upgradeNames](./bitburner.corpconstants.upgradenames.md) | | [CorpUpgradeName](./bitburner.corpupgradename.md)<!-- -->\[\] | Names of all corporation-wide upgrades |
|
||||
| [warehouseInitialCost](./bitburner.corpconstants.warehouseinitialcost.md) | | number | |
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## CorpConstants.minEmployeeDecay property
|
||||
|
||||
The minimum decay value for happiness/morale/energy
|
||||
The minimum decay value for morale/energy
|
||||
|
||||
**Signature:**
|
||||
|
||||
|
||||
11
markdown/bitburner.corpconstants.teacostperemployee.md
Normal file
11
markdown/bitburner.corpconstants.teacostperemployee.md
Normal file
@@ -0,0 +1,11 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [CorpConstants](./bitburner.corpconstants.md) > [teaCostPerEmployee](./bitburner.corpconstants.teacostperemployee.md)
|
||||
|
||||
## CorpConstants.teaCostPerEmployee property
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
teaCostPerEmployee: number;
|
||||
```
|
||||
@@ -14,6 +14,6 @@ type CorpEmployeePosition =
|
||||
| "Business"
|
||||
| "Management"
|
||||
| "Research & Development"
|
||||
| "Training"
|
||||
| "Intern"
|
||||
| "Unassigned";
|
||||
```
|
||||
|
||||
@@ -9,12 +9,13 @@
|
||||
|
||||
```typescript
|
||||
type CorpIndustryName =
|
||||
| "Energy"
|
||||
| "Spring Water"
|
||||
| "Water Utilities"
|
||||
| "Agriculture"
|
||||
| "Fishing"
|
||||
| "Mining"
|
||||
| "Food"
|
||||
| "Refinery"
|
||||
| "Restaurant"
|
||||
| "Tobacco"
|
||||
| "Chemical"
|
||||
| "Pharmaceutical"
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
|
||||
```typescript
|
||||
type CorpMaterialName =
|
||||
| "Minerals"
|
||||
| "Ore"
|
||||
| "Water"
|
||||
| "Energy"
|
||||
| "Food"
|
||||
| "Plants"
|
||||
| "Metal"
|
||||
|
||||
@@ -16,7 +16,7 @@ buyBackShares(amount: number): void;
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| amount | number | Amount of shares to buy back. |
|
||||
| amount | number | Amount of shares to buy back, must be integer and larger than 0 |
|
||||
|
||||
**Returns:**
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [getUnlockUpgradeCost](./bitburner.corporation.getunlockupgradecost.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [getUnlockCost](./bitburner.corporation.getunlockcost.md)
|
||||
|
||||
## Corporation.getUnlockUpgradeCost() method
|
||||
## Corporation.getUnlockCost() method
|
||||
|
||||
Gets the cost to unlock a one time unlockable upgrade
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
getUnlockUpgradeCost(upgradeName: string): number;
|
||||
getUnlockCost(upgradeName: string): number;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@@ -1,15 +1,15 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [hasUnlockUpgrade](./bitburner.corporation.hasunlockupgrade.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [hasUnlock](./bitburner.corporation.hasunlock.md)
|
||||
|
||||
## Corporation.hasUnlockUpgrade() method
|
||||
## Corporation.hasUnlock() method
|
||||
|
||||
Check if you have a one time unlockable upgrade
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
hasUnlockUpgrade(upgradeName: string): boolean;
|
||||
hasUnlock(upgradeName: string): boolean;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@@ -30,15 +30,15 @@ export interface Corporation extends WarehouseAPI, OfficeAPI
|
||||
| [getIndustryData(industryName)](./bitburner.corporation.getindustrydata.md) | Get constant industry definition data for a specific industry |
|
||||
| [getInvestmentOffer()](./bitburner.corporation.getinvestmentoffer.md) | Get an offer for investment based on you companies current valuation |
|
||||
| [getMaterialData(materialName)](./bitburner.corporation.getmaterialdata.md) | Get constant data for a specific material |
|
||||
| [getUnlockUpgradeCost(upgradeName)](./bitburner.corporation.getunlockupgradecost.md) | Gets the cost to unlock a one time unlockable upgrade |
|
||||
| [getUnlockCost(upgradeName)](./bitburner.corporation.getunlockcost.md) | Gets the cost to unlock a one time unlockable upgrade |
|
||||
| [getUpgradeLevel(upgradeName)](./bitburner.corporation.getupgradelevel.md) | Get the level of a levelable upgrade |
|
||||
| [getUpgradeLevelCost(upgradeName)](./bitburner.corporation.getupgradelevelcost.md) | Gets the cost to unlock the next level of a levelable upgrade |
|
||||
| [goPublic(numShares)](./bitburner.corporation.gopublic.md) | Go public |
|
||||
| [hasCorporation()](./bitburner.corporation.hascorporation.md) | Returns whether the player has a corporation. Does not require API access. |
|
||||
| [hasUnlockUpgrade(upgradeName)](./bitburner.corporation.hasunlockupgrade.md) | Check if you have a one time unlockable upgrade |
|
||||
| [hasUnlock(upgradeName)](./bitburner.corporation.hasunlock.md) | Check if you have a one time unlockable upgrade |
|
||||
| [issueDividends(rate)](./bitburner.corporation.issuedividends.md) | Issue dividends |
|
||||
| [issueNewShares(amount)](./bitburner.corporation.issuenewshares.md) | Issue new shares |
|
||||
| [levelUpgrade(upgradeName)](./bitburner.corporation.levelupgrade.md) | Level an upgrade. |
|
||||
| [purchaseUnlock(upgradeName)](./bitburner.corporation.purchaseunlock.md) | Unlock an upgrade |
|
||||
| [sellShares(amount)](./bitburner.corporation.sellshares.md) | Sell Shares |
|
||||
| [unlockUpgrade(upgradeName)](./bitburner.corporation.unlockupgrade.md) | Unlock an upgrade |
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [unlockUpgrade](./bitburner.corporation.unlockupgrade.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Corporation](./bitburner.corporation.md) > [purchaseUnlock](./bitburner.corporation.purchaseunlock.md)
|
||||
|
||||
## Corporation.unlockUpgrade() method
|
||||
## Corporation.purchaseUnlock() method
|
||||
|
||||
Unlock an upgrade
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
unlockUpgrade(upgradeName: string): void;
|
||||
purchaseUnlock(upgradeName: string): void;
|
||||
```
|
||||
|
||||
## Parameters
|
||||
@@ -16,7 +16,7 @@ sellShares(amount: number): void;
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| amount | number | Amount of shares to sell. |
|
||||
| amount | number | Amount of shares to sell, must be integer between 1 and 100t |
|
||||
|
||||
**Returns:**
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ type CorpResearchName =
|
||||
| "AutoBrew"
|
||||
| "AutoPartyManager"
|
||||
| "Automatic Drug Administration"
|
||||
| "Bulk Purchasing"
|
||||
| "CPH4 Injections"
|
||||
| "Drones"
|
||||
| "Drones - Assembly"
|
||||
@@ -21,7 +20,6 @@ type CorpResearchName =
|
||||
| "Go-Juice"
|
||||
| "HRBuddy-Recruitment"
|
||||
| "HRBuddy-Training"
|
||||
| "JoyWire"
|
||||
| "Market-TA.I"
|
||||
| "Market-TA.II"
|
||||
| "Overclock"
|
||||
|
||||
13
markdown/bitburner.division.maxproducts.md
Normal file
13
markdown/bitburner.division.maxproducts.md
Normal file
@@ -0,0 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [maxProducts](./bitburner.division.maxproducts.md)
|
||||
|
||||
## Division.maxProducts property
|
||||
|
||||
How many products this division can support
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
maxProducts: number;
|
||||
```
|
||||
@@ -21,13 +21,14 @@ interface Division
|
||||
| [lastCycleExpenses](./bitburner.division.lastcycleexpenses.md) | | number | Expenses last cycle |
|
||||
| [lastCycleRevenue](./bitburner.division.lastcyclerevenue.md) | | number | Revenue last cycle |
|
||||
| [makesProducts](./bitburner.division.makesproducts.md) | | boolean | Whether the industry this division is in is capable of making products |
|
||||
| [maxProducts](./bitburner.division.maxproducts.md) | | number | How many products this division can support |
|
||||
| [name](./bitburner.division.name.md) | | string | Name of the division |
|
||||
| [numAdVerts](./bitburner.division.numadverts.md) | | number | Number of times AdVert has been bought |
|
||||
| [popularity](./bitburner.division.popularity.md) | | number | Popularity of the division |
|
||||
| [prodMult](./bitburner.division.prodmult.md) | | number | Production multiplier |
|
||||
| [products](./bitburner.division.products.md) | | string\[\] | Products developed by this division |
|
||||
| [research](./bitburner.division.research.md) | | number | Amount of research in that division |
|
||||
| [productionMult](./bitburner.division.productionmult.md) | | number | Production multiplier |
|
||||
| [products](./bitburner.division.products.md) | | string\[\] | Names of Products developed by this division |
|
||||
| [researchPoints](./bitburner.division.researchpoints.md) | | number | Amount of research in that division |
|
||||
| [thisCycleExpenses](./bitburner.division.thiscycleexpenses.md) | | number | Expenses this cycle |
|
||||
| [thisCycleRevenue](./bitburner.division.thiscyclerevenue.md) | | number | Revenue this cycle |
|
||||
| [type](./bitburner.division.type.md) | | [CorpIndustryName](./bitburner.corpindustryname.md) | Type of division, like Agriculture |
|
||||
| [upgrades](./bitburner.division.upgrades.md) | | number\[\] | All research bought |
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [upgrades](./bitburner.division.upgrades.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [numAdVerts](./bitburner.division.numadverts.md)
|
||||
|
||||
## Division.upgrades property
|
||||
## Division.numAdVerts property
|
||||
|
||||
All research bought
|
||||
Number of times AdVert has been bought
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
upgrades: number[];
|
||||
numAdVerts: number;
|
||||
```
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [prodMult](./bitburner.division.prodmult.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [productionMult](./bitburner.division.productionmult.md)
|
||||
|
||||
## Division.prodMult property
|
||||
## Division.productionMult property
|
||||
|
||||
Production multiplier
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
prodMult: number;
|
||||
productionMult: number;
|
||||
```
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Division.products property
|
||||
|
||||
Products developed by this division
|
||||
Names of Products developed by this division
|
||||
|
||||
**Signature:**
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [research](./bitburner.division.research.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Division](./bitburner.division.md) > [researchPoints](./bitburner.division.researchpoints.md)
|
||||
|
||||
## Division.research property
|
||||
## Division.researchPoints property
|
||||
|
||||
Amount of research in that division
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
research: number;
|
||||
researchPoints: number;
|
||||
```
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [amt](./bitburner.export.amt.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [amount](./bitburner.export.amount.md)
|
||||
|
||||
## Export.amt property
|
||||
## Export.amount property
|
||||
|
||||
Amount of material exported
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
amt: string;
|
||||
amount: string;
|
||||
```
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [loc](./bitburner.export.loc.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [city](./bitburner.export.city.md)
|
||||
|
||||
## Export.loc property
|
||||
## Export.city property
|
||||
|
||||
City the material is being exported to
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
loc: CityName;
|
||||
city: CityName;
|
||||
```
|
||||
@@ -1,13 +1,13 @@
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [div](./bitburner.export.div.md)
|
||||
[Home](./index.md) > [bitburner](./bitburner.md) > [Export](./bitburner.export.md) > [division](./bitburner.export.division.md)
|
||||
|
||||
## Export.div property
|
||||
## Export.division property
|
||||
|
||||
Division the material is being exported to
|
||||
|
||||
**Signature:**
|
||||
|
||||
```typescript
|
||||
div: string;
|
||||
division: string;
|
||||
```
|
||||
@@ -16,7 +16,7 @@ interface Export
|
||||
|
||||
| Property | Modifiers | Type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| [amt](./bitburner.export.amt.md) | | string | Amount of material exported |
|
||||
| [div](./bitburner.export.div.md) | | string | Division the material is being exported to |
|
||||
| [loc](./bitburner.export.loc.md) | | [CityName](./bitburner.cityname.md) | City the material is being exported to |
|
||||
| [amount](./bitburner.export.amount.md) | | string | Amount of material exported |
|
||||
| [city](./bitburner.export.city.md) | | [CityName](./bitburner.cityname.md) | City the material is being exported to |
|
||||
| [division](./bitburner.export.division.md) | | string | Division the material is being exported to |
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user