mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-10 09:43:54 +01:00
commit
c38992be8d
32
dist/bitburner.d.ts
vendored
32
dist/bitburner.d.ts
vendored
@ -2124,6 +2124,27 @@ export declare interface NodeStats {
|
||||
/**
|
||||
* Collection of all functions passed to scripts
|
||||
* @public
|
||||
* @remarks
|
||||
* <b>Basic ns1 usage example:</b>
|
||||
* ```ts
|
||||
* // Basic ns functions can be used directly
|
||||
* methodName();
|
||||
* // Some related functions are gathered within a common namespace
|
||||
* property.methodName();
|
||||
* ```
|
||||
* {@link https://bitburner.readthedocs.io/en/latest/netscript/netscript1.html| ns1 in-game docs}
|
||||
* <hr>
|
||||
* <b>Basic ns2 usage example:</b>
|
||||
* ```ts
|
||||
* export async function main(ns) {
|
||||
* // Basic ns functions can be accessed on the ns object
|
||||
* await ns.methodName;
|
||||
* // Some related functions are gathered under a sub-property of the ns object
|
||||
* await ns.property.methodName;
|
||||
* }
|
||||
* ```
|
||||
* {@link https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html| ns2 in-game docs}
|
||||
* <hr>
|
||||
*/
|
||||
export declare interface NS extends Singularity {
|
||||
/**
|
||||
@ -2321,9 +2342,9 @@ export declare interface NS extends Singularity {
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* //For example, assume the following returns 1:
|
||||
* //For example, assume the following returns 0.01:
|
||||
* hackAnalyze("foodnstuff");
|
||||
* //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N% of its total money.
|
||||
* //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N*0.01% of its total money.
|
||||
* ```
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns The percentage of money you will steal from the target server with a single hack.
|
||||
@ -3259,13 +3280,12 @@ export declare interface NS extends Singularity {
|
||||
deleteServer(host: string): boolean;
|
||||
|
||||
/**
|
||||
* Returns an array with either the hostnames or IPs of all of the servers you have purchased.
|
||||
* Returns an array with the hostnames of all of the servers you have purchased.
|
||||
*
|
||||
* @remarks 2.25 GB
|
||||
* @param hostnameMode - Optional. Defaults to true. Returns hostnames if true, and IPs if false.
|
||||
* @returns Returns an array with either the hostnames or IPs of all of the servers you have purchased.
|
||||
* @returns Returns an array with the hostnames of all of the servers you have purchased.
|
||||
*/
|
||||
getPurchasedServers(hostnameMode?: boolean): string[];
|
||||
getPurchasedServers(): string[];
|
||||
|
||||
/**
|
||||
* Returns the maximum number of servers you can purchase.
|
||||
|
BIN
dist/ext/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf
vendored
Normal file
BIN
dist/ext/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf
vendored
Normal file
Binary file not shown.
26
dist/vendor.bundle.js
vendored
26
dist/vendor.bundle.js
vendored
File diff suppressed because one or more lines are too long
@ -9,14 +9,15 @@ if (greenworks.init()) {
|
||||
|
||||
const debug = false;
|
||||
|
||||
function createWindow() {
|
||||
function createWindow(killall) {
|
||||
const win = new BrowserWindow({
|
||||
show: false,
|
||||
});
|
||||
|
||||
win.removeMenu();
|
||||
win.maximize();
|
||||
win.loadFile("index.html");
|
||||
noScripts = killall ? { query: { noScripts: killall } } : {};
|
||||
win.loadFile("index.html", noScripts);
|
||||
win.show();
|
||||
if (debug) win.webContents.openDevTools();
|
||||
|
||||
@ -75,7 +76,7 @@ function createWindow() {
|
||||
if (intervalID) clearInterval(intervalID);
|
||||
win.webContents.forcefullyCrashRenderer();
|
||||
win.close();
|
||||
createWindow();
|
||||
createWindow(true);
|
||||
},
|
||||
},
|
||||
],
|
||||
@ -110,5 +111,5 @@ function createWindow() {
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
createWindow();
|
||||
createWindow(false);
|
||||
});
|
||||
|
@ -14221,7 +14221,7 @@
|
||||
{
|
||||
"kind": "Interface",
|
||||
"canonicalReference": "bitburner!NS:interface",
|
||||
"docComment": "/**\n * Collection of all functions passed to scripts\n *\n * @public\n */\n",
|
||||
"docComment": "/**\n * Collection of all functions passed to scripts\n *\n * @remarks\n *\n * <b>Basic ns1 usage example:</b>\n * ```ts\n * // Basic ns functions can be used directly\n * methodName();\n * // Some related functions are gathered within a common namespace\n * property.methodName();\n * ```\n *\n * {@link https://bitburner.readthedocs.io/en/latest/netscript/netscript1.html | ns1 in-game docs} <hr> <b>Basic ns2 usage example:</b>\n * ```ts\n * export async function main(ns) {\n * // Basic ns functions can be accessed on the ns object\n * await ns.methodName;\n * // Some related functions are gathered under a sub-property of the ns object\n * await ns.property.methodName;\n * }\n * ```\n *\n * {@link https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html | ns2 in-game docs} <hr>\n *\n * @public\n */\n",
|
||||
"excerptTokens": [
|
||||
{
|
||||
"kind": "Content",
|
||||
@ -15562,19 +15562,11 @@
|
||||
{
|
||||
"kind": "MethodSignature",
|
||||
"canonicalReference": "bitburner!NS#getPurchasedServers:member(1)",
|
||||
"docComment": "/**\n * Returns an array with either the hostnames or IPs of all of the servers you have purchased.\n *\n * @remarks\n *\n * 2.25 GB\n *\n * @param hostnameMode - Optional. Defaults to true. Returns hostnames if true, and IPs if false.\n *\n * @returns Returns an array with either the hostnames or IPs of all of the servers you have purchased.\n */\n",
|
||||
"docComment": "/**\n * Returns an array with the hostnames of all of the servers you have purchased.\n *\n * @remarks\n *\n * 2.25 GB\n *\n * @returns Returns an array with the hostnames of all of the servers you have purchased.\n */\n",
|
||||
"excerptTokens": [
|
||||
{
|
||||
"kind": "Content",
|
||||
"text": "getPurchasedServers(hostnameMode?: "
|
||||
},
|
||||
{
|
||||
"kind": "Content",
|
||||
"text": "boolean"
|
||||
},
|
||||
{
|
||||
"kind": "Content",
|
||||
"text": "): "
|
||||
"text": "getPurchasedServers(): "
|
||||
},
|
||||
{
|
||||
"kind": "Content",
|
||||
@ -15587,20 +15579,12 @@
|
||||
],
|
||||
"isOptional": false,
|
||||
"returnTypeTokenRange": {
|
||||
"startIndex": 3,
|
||||
"endIndex": 4
|
||||
"startIndex": 1,
|
||||
"endIndex": 2
|
||||
},
|
||||
"releaseTag": "Public",
|
||||
"overloadIndex": 1,
|
||||
"parameters": [
|
||||
{
|
||||
"parameterName": "hostnameMode",
|
||||
"parameterTypeTokenRange": {
|
||||
"startIndex": 1,
|
||||
"endIndex": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"parameters": [],
|
||||
"name": "getPurchasedServers"
|
||||
},
|
||||
{
|
||||
@ -16839,7 +16823,7 @@
|
||||
{
|
||||
"kind": "MethodSignature",
|
||||
"canonicalReference": "bitburner!NS#hackAnalyze:member(1)",
|
||||
"docComment": "/**\n * Get the percent of money stolen with a single thread.\n *\n * @remarks\n *\n * RAM cost: 1 GB\n *\n * Returns the percentage of the specified server’s money you will steal with a single hack. This value is returned in percentage form, not decimal (Netscript functions typically return in decimal form, but not this one).\n *\n * @param host - Hostname of the target server.\n *\n * @returns The percentage of money you will steal from the target server with a single hack.\n *\n * @example\n * ```ts\n * //For example, assume the following returns 1:\n * hackAnalyze(\"foodnstuff\");\n * //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N% of its total money.\n * ```\n *\n */\n",
|
||||
"docComment": "/**\n * Get the percent of money stolen with a single thread.\n *\n * @remarks\n *\n * RAM cost: 1 GB\n *\n * Returns the percentage of the specified server’s money you will steal with a single hack. This value is returned in percentage form, not decimal (Netscript functions typically return in decimal form, but not this one).\n *\n * @param host - Hostname of the target server.\n *\n * @returns The percentage of money you will steal from the target server with a single hack.\n *\n * @example\n * ```ts\n * //For example, assume the following returns 0.01:\n * hackAnalyze(\"foodnstuff\");\n * //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N*0.01% of its total money.\n * ```\n *\n */\n",
|
||||
"excerptTokens": [
|
||||
{
|
||||
"kind": "Content",
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -4,25 +4,18 @@
|
||||
|
||||
## NS.getPurchasedServers() method
|
||||
|
||||
Returns an array with either the hostnames or IPs of all of the servers you have purchased.
|
||||
Returns an array with the hostnames of all of the servers you have purchased.
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
getPurchasedServers(hostnameMode?: boolean): string[];
|
||||
getPurchasedServers(): string[];
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| hostnameMode | boolean | Optional. Defaults to true. Returns hostnames if true, and IPs if false. |
|
||||
|
||||
<b>Returns:</b>
|
||||
|
||||
string\[\]
|
||||
|
||||
Returns an array with either the hostnames or IPs of all of the servers you have purchased.
|
||||
Returns an array with the hostnames of all of the servers you have purchased.
|
||||
|
||||
## Remarks
|
||||
|
||||
|
@ -22,7 +22,7 @@ getWeakenTime(host: string): number;
|
||||
|
||||
number
|
||||
|
||||
Returns the amount of time in milliseconds it takes to execute the weaken Netscript function. Returns Infinity if called on a Hacknet Server.
|
||||
Returns the amount of time in milliseconds it takes to execute the grow Netscript function. Returns Infinity if called on a Hacknet Server.
|
||||
|
||||
## Remarks
|
||||
|
||||
|
@ -34,8 +34,8 @@ Returns the percentage of the specified server’s money you will steal with a s
|
||||
|
||||
|
||||
```ts
|
||||
//For example, assume the following returns 1:
|
||||
//For example, assume the following returns 0.01:
|
||||
hackAnalyze("foodnstuff");
|
||||
//This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N% of its total money.
|
||||
//This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N*0.01% of its total money.
|
||||
```
|
||||
|
||||
|
@ -9,125 +9,149 @@ Collection of all functions passed to scripts
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export interface NS extends Singularity
|
||||
export interface NS extends Singularity
|
||||
```
|
||||
|
||||
<b>Extends:</b> [Singularity](./bitburner.singularity.md)
|
||||
|
||||
## Remarks
|
||||
|
||||
<b>Basic ns1 usage example:</b>
|
||||
|
||||
```ts
|
||||
// Basic ns functions can be used directly
|
||||
methodName();
|
||||
// Some related functions are gathered within a common namespace
|
||||
property.methodName();
|
||||
```
|
||||
|
||||
[ns1 in-game docs](https://bitburner.readthedocs.io/en/latest/netscript/netscript1.html) <hr> <b>Basic ns2 usage example:</b>
|
||||
|
||||
```ts
|
||||
export async function main(ns) {
|
||||
// Basic ns functions can be accessed on the ns object
|
||||
await ns.methodName;
|
||||
// Some related functions are gathered under a sub-property of the ns object
|
||||
await ns.property.methodName;
|
||||
}
|
||||
```
|
||||
|
||||
[ns2 in-game docs](https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html) <hr>
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [args](./bitburner.ns.args.md) | (string \| number \| boolean)\[\] | Arguments passed into the script. |
|
||||
| [bladeburner](./bitburner.ns.bladeburner.md) | [Bladeburner](./bitburner.bladeburner.md) | Namespace for bladeburner functions. |
|
||||
| [codingcontract](./bitburner.ns.codingcontract.md) | [CodingContract](./bitburner.codingcontract.md) | Namespace for codingcontract functions. |
|
||||
| [corporation](./bitburner.ns.corporation.md) | [Corporation](./bitburner.corporation.md) | Namespace for corporation functions. RAM cost: 0 GB |
|
||||
| [formulas](./bitburner.ns.formulas.md) | [Formulas](./bitburner.formulas.md) | Namespace for formulas functions. |
|
||||
| [gang](./bitburner.ns.gang.md) | [Gang](./bitburner.gang.md) | Namespace for gang functions. |
|
||||
| [hacknet](./bitburner.ns.hacknet.md) | [Hacknet](./bitburner.hacknet.md) | Namespace for hacknet functions. |
|
||||
| [sleeve](./bitburner.ns.sleeve.md) | [Sleeve](./bitburner.sleeve.md) | Namespace for sleeve functions. |
|
||||
| [stanek](./bitburner.ns.stanek.md) | [Stanek](./bitburner.stanek.md) | Namespace for stanek functions. RAM cost: 0 GB |
|
||||
| [stock](./bitburner.ns.stock.md) | [TIX](./bitburner.tix.md) | Namespace for stock functions. |
|
||||
| Property | Type | Description |
|
||||
| -------------------------------------------------- | ----------------------------------------------- | --------------------------------------------------- |
|
||||
| [args](./bitburner.ns.args.md) | (string \| number \| boolean)\[\] | Arguments passed into the script. |
|
||||
| [bladeburner](./bitburner.ns.bladeburner.md) | [Bladeburner](./bitburner.bladeburner.md) | Namespace for bladeburner functions. |
|
||||
| [codingcontract](./bitburner.ns.codingcontract.md) | [CodingContract](./bitburner.codingcontract.md) | Namespace for codingcontract functions. |
|
||||
| [corporation](./bitburner.ns.corporation.md) | [Corporation](./bitburner.corporation.md) | Namespace for corporation functions. RAM cost: 0 GB |
|
||||
| [formulas](./bitburner.ns.formulas.md) | [Formulas](./bitburner.formulas.md) | Namespace for formulas functions. |
|
||||
| [gang](./bitburner.ns.gang.md) | [Gang](./bitburner.gang.md) | Namespace for gang functions. |
|
||||
| [hacknet](./bitburner.ns.hacknet.md) | [Hacknet](./bitburner.hacknet.md) | Namespace for hacknet functions. |
|
||||
| [sleeve](./bitburner.ns.sleeve.md) | [Sleeve](./bitburner.sleeve.md) | Namespace for sleeve functions. |
|
||||
| [stanek](./bitburner.ns.stanek.md) | [Stanek](./bitburner.stanek.md) | Namespace for stanek functions. RAM cost: 0 GB |
|
||||
| [stock](./bitburner.ns.stock.md) | [TIX](./bitburner.tix.md) | Namespace for stock functions. |
|
||||
|
||||
## Methods
|
||||
|
||||
| Method | Description |
|
||||
| --- | --- |
|
||||
| [alert(msg)](./bitburner.ns.alert.md) | Open up a message box. |
|
||||
| [asleep(millis)](./bitburner.ns.asleep.md) | Suspends the script for n milliseconds. Doesn't block with concurrent calls. |
|
||||
| [atExit(f)](./bitburner.ns.atexit.md) | Add callback function when the script dies |
|
||||
| [brutessh(host)](./bitburner.ns.brutessh.md) | Runs BruteSSH.exe on a server. |
|
||||
| [clear(handle)](./bitburner.ns.clear.md) | Clear data from a file. |
|
||||
| [clearLog()](./bitburner.ns.clearlog.md) | Clears the script’s logs. |
|
||||
| [clearPort(handle)](./bitburner.ns.clearport.md) | Clear data from a port. |
|
||||
| [deleteServer(host)](./bitburner.ns.deleteserver.md) | Delete a purchased server. |
|
||||
| [disableLog(fn)](./bitburner.ns.disablelog.md) | Disables logging for the given function. |
|
||||
| [enableLog(fn)](./bitburner.ns.enablelog.md) | Enable logging for a certain function. |
|
||||
| [exec(script, host, numThreads, args)](./bitburner.ns.exec.md) | Start another script on any server. |
|
||||
| [exit()](./bitburner.ns.exit.md) | Terminates the current script immediately. |
|
||||
| [fileExists(filename, host)](./bitburner.ns.fileexists.md) | Check if a file exists. |
|
||||
| [flags(schema)](./bitburner.ns.flags.md) | Parse command line flags. |
|
||||
| [ftpcrack(host)](./bitburner.ns.ftpcrack.md) | Runs FTPCrack.exe on a server. |
|
||||
| [getBitNodeMultipliers()](./bitburner.ns.getbitnodemultipliers.md) | Get the current Bitnode multipliers. |
|
||||
| [getFavorToDonate()](./bitburner.ns.getfavortodonate.md) | Returns the amount of Faction favor required to be able to donate to a faction. |
|
||||
| [getGrowTime(host)](./bitburner.ns.getgrowtime.md) | Get the execution time of a grow() call. |
|
||||
| [getHackingLevel()](./bitburner.ns.gethackinglevel.md) | Returns the player’s current hacking level. |
|
||||
| [getHackingMultipliers()](./bitburner.ns.gethackingmultipliers.md) | Get hacking related multipliers. |
|
||||
| [getHacknetMultipliers()](./bitburner.ns.gethacknetmultipliers.md) | Get hacknet related multipliers. |
|
||||
| [getHackTime(host)](./bitburner.ns.gethacktime.md) | Get the execution time of a hack() call. |
|
||||
| [getHostname()](./bitburner.ns.gethostname.md) | Returns a string with the hostname of the server that the script is running on. |
|
||||
| [getOwnedSourceFiles()](./bitburner.ns.getownedsourcefiles.md) | Get a list of acquired Source-Files. |
|
||||
| [getPlayer()](./bitburner.ns.getplayer.md) | Get information about the player. |
|
||||
| [getPortHandle(port)](./bitburner.ns.getporthandle.md) | Get all data on a port. |
|
||||
| [getPurchasedServerCost(ram)](./bitburner.ns.getpurchasedservercost.md) | Get cost of purchasing a server. |
|
||||
| [getPurchasedServerLimit()](./bitburner.ns.getpurchasedserverlimit.md) | Returns the maximum number of servers you can purchase. |
|
||||
| [getPurchasedServerMaxRam()](./bitburner.ns.getpurchasedservermaxram.md) | Returns the maximum RAM that a purchased server can have. |
|
||||
| [getPurchasedServers(hostnameMode)](./bitburner.ns.getpurchasedservers.md) | Returns an array with either the hostnames or IPs of all of the servers you have purchased. |
|
||||
| [getRunningScript(filename, hostname, args)](./bitburner.ns.getrunningscript.md) | Get general info about a running script. |
|
||||
| [getScriptExpGain(script, host, args)](./bitburner.ns.getscriptexpgain.md) | Get the exp gain of a script. |
|
||||
| [getScriptIncome(script, host, args)](./bitburner.ns.getscriptincome.md) | Get the income of a script. |
|
||||
| [getScriptLogs(fn, host, args)](./bitburner.ns.getscriptlogs.md) | Get all the logs of a script. |
|
||||
| [getScriptName()](./bitburner.ns.getscriptname.md) | Returns the current script name. |
|
||||
| [getScriptRam(script, host)](./bitburner.ns.getscriptram.md) | Get the ram cost of a script. |
|
||||
| [getServer(host)](./bitburner.ns.getserver.md) | Returns a server object for the given server. Defaults to the running script's server if host is not specified. |
|
||||
| [getServerBaseSecurityLevel(host)](./bitburner.ns.getserverbasesecuritylevel.md) | |
|
||||
| [getServerGrowth(host)](./bitburner.ns.getservergrowth.md) | Get a server growth parameter. |
|
||||
| [getServerMaxMoney(host)](./bitburner.ns.getservermaxmoney.md) | Get maximum money available on a server. |
|
||||
| [getServerMaxRam(host)](./bitburner.ns.getservermaxram.md) | Get the max RAM on a server. |
|
||||
| [getServerMinSecurityLevel(host)](./bitburner.ns.getserverminsecuritylevel.md) | Returns the minimum security level of the target server. |
|
||||
| [getServerMoneyAvailable(host)](./bitburner.ns.getservermoneyavailable.md) | Get money available on a server. |
|
||||
| [getServerNumPortsRequired(host)](./bitburner.ns.getservernumportsrequired.md) | Returns the number of open ports required to successfully run NUKE.exe on the specified server. |
|
||||
| [getServerRam(host)](./bitburner.ns.getserverram.md) | |
|
||||
| [getServerRequiredHackingLevel(host)](./bitburner.ns.getserverrequiredhackinglevel.md) | Returns the required hacking level of the target server. |
|
||||
| [getServerSecurityLevel(host)](./bitburner.ns.getserversecuritylevel.md) | Get server security level. |
|
||||
| [getServerUsedRam(host)](./bitburner.ns.getserverusedram.md) | Get the used RAM on a server. |
|
||||
| [getTimeSinceLastAug()](./bitburner.ns.gettimesincelastaug.md) | Returns the amount of time in milliseconds that have passed since you last installed Augmentations. |
|
||||
| [getWeakenTime(host)](./bitburner.ns.getweakentime.md) | Get the execution time of a weaken() call. |
|
||||
| [grow(host, opts)](./bitburner.ns.grow.md) | Spoof money in a servers bank account, increasing the amount available. |
|
||||
| [growthAnalyze(host, growthAmount, cores)](./bitburner.ns.growthanalyze.md) | Calculate the number of grow thread needed to grow a server by a certain multiplier. |
|
||||
| [growthAnalyzeSecurity(threads)](./bitburner.ns.growthanalyzesecurity.md) | Calculate the security increase for a number of thread. |
|
||||
| [hack(host, opts)](./bitburner.ns.hack.md) | Steal a servers money. |
|
||||
| [hackAnalyze(host)](./bitburner.ns.hackanalyze.md) | Get the percent of money stolen with a single thread. |
|
||||
| [hackAnalyzeChance(host)](./bitburner.ns.hackanalyzechance.md) | Get the chance of successfully hacking a server. |
|
||||
| [hackAnalyzeSecurity(threads)](./bitburner.ns.hackanalyzesecurity.md) | Get the security increase for a number of thread. |
|
||||
| [hackAnalyzeThreads(host, hackAmount)](./bitburner.ns.hackanalyzethreads.md) | Predict the effect of hack. |
|
||||
| [hasRootAccess(host)](./bitburner.ns.hasrootaccess.md) | Check if your have root access on a server. |
|
||||
| [httpworm(host)](./bitburner.ns.httpworm.md) | Runs HTTPWorm.exe on a server. |
|
||||
| [isLogEnabled(fn)](./bitburner.ns.islogenabled.md) | Checks the status of the logging for the given function. |
|
||||
| [isRunning(script, host, args)](./bitburner.ns.isrunning.md) | Check if a script is running. |
|
||||
| [kill(script, host, args)](./bitburner.ns.kill.md) | Terminate another script. |
|
||||
| [killall(host)](./bitburner.ns.killall.md) | Terminate all scripts on a server. |
|
||||
| [ls(host, grep)](./bitburner.ns.ls.md) | List files on a server. |
|
||||
| [nFormat(n, format)](./bitburner.ns.nformat.md) | Format a number |
|
||||
| [nuke(host)](./bitburner.ns.nuke.md) | Runs NUKE.exe on a server. |
|
||||
| [peek(port)](./bitburner.ns.peek.md) | Get a copy of the data from a port without popping it. |
|
||||
| [print(msg)](./bitburner.ns.print.md) | Prints a value or a variable to the script’s logs. |
|
||||
| [prompt(txt)](./bitburner.ns.prompt.md) | Prompt the player with a Yes/No modal. |
|
||||
| [ps(host)](./bitburner.ns.ps.md) | List running scripts on a server. |
|
||||
| [purchaseServer(hostname, ram)](./bitburner.ns.purchaseserver.md) | Purchase a server. |
|
||||
| [read(handle)](./bitburner.ns.read.md) | Read content of a file. |
|
||||
| [readPort(port)](./bitburner.ns.readport.md) | Read data from a port. |
|
||||
| [relaysmtp(host)](./bitburner.ns.relaysmtp.md) | Runs relaySMTP.exe on a server. |
|
||||
| [rm(name, host)](./bitburner.ns.rm.md) | Delete a file. |
|
||||
| [run(script, numThreads, args)](./bitburner.ns.run.md) | Start another script on the current server. |
|
||||
| [scan(host, hostnames)](./bitburner.ns.scan.md) | Get the list servers connected to a server. |
|
||||
| [scp(files, source, destination)](./bitburner.ns.scp.md) | Copy file between servers. |
|
||||
| [scriptKill(script, host)](./bitburner.ns.scriptkill.md) | Kill all scripts with a filename. |
|
||||
| [scriptRunning(script, host)](./bitburner.ns.scriptrunning.md) | Check if any script with a filename is running. |
|
||||
| [serverExists(host)](./bitburner.ns.serverexists.md) | Returns a boolean denoting whether or not the specified server exists. |
|
||||
| [sleep(millis)](./bitburner.ns.sleep.md) | Suspends the script for n milliseconds. |
|
||||
| [spawn(script, numThreads, args)](./bitburner.ns.spawn.md) | Terminate current script and start another in 10s. |
|
||||
| [sprintf(format, args)](./bitburner.ns.sprintf.md) | Format a string. |
|
||||
| [sqlinject(host)](./bitburner.ns.sqlinject.md) | Runs SQLInject.exe on a server. |
|
||||
| [tail(fn, host, args)](./bitburner.ns.tail.md) | Open the tail window of a script. |
|
||||
| [tFormat(milliseconds, milliPrecision)](./bitburner.ns.tformat.md) | Format time to readable string |
|
||||
| [toast(msg, variant)](./bitburner.ns.toast.md) | Queue a toast (bottom-right notification). |
|
||||
| [tprint(msg)](./bitburner.ns.tprint.md) | Prints a value or a variable to the Terminal. |
|
||||
| [tprintf(format, values)](./bitburner.ns.tprintf.md) | Prints a raw value or a variable to the Terminal. |
|
||||
| [tryWritePort(port, data)](./bitburner.ns.trywriteport.md) | Attempt to write to a port. |
|
||||
| [vsprintf(format, args)](./bitburner.ns.vsprintf.md) | Format a string with an array of arguments. |
|
||||
| [weaken(host, opts)](./bitburner.ns.weaken.md) | Reduce a server security level. |
|
||||
| [weakenAnalyze(threads, cores)](./bitburner.ns.weakenanalyze.md) | Predict the effect of weaken. |
|
||||
| [wget(url, target, host)](./bitburner.ns.wget.md) | Download a file from the internet. |
|
||||
| [write(handle, data, mode)](./bitburner.ns.write.md) | Write data to a file. |
|
||||
| [writePort(port, data)](./bitburner.ns.writeport.md) | Write data to a port. |
|
||||
|
||||
| Method | Description |
|
||||
| -------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
||||
| [alert(msg)](./bitburner.ns.alert.md) | Open up a message box. |
|
||||
| [asleep(millis)](./bitburner.ns.asleep.md) | Suspends the script for n milliseconds. Doesn't block with concurrent calls. |
|
||||
| [atExit(f)](./bitburner.ns.atexit.md) | Add callback function when the script dies |
|
||||
| [brutessh(host)](./bitburner.ns.brutessh.md) | Runs BruteSSH.exe on a server. |
|
||||
| [clear(handle)](./bitburner.ns.clear.md) | Clear data from a file. |
|
||||
| [clearLog()](./bitburner.ns.clearlog.md) | Clears the script’s logs. |
|
||||
| [clearPort(handle)](./bitburner.ns.clearport.md) | Clear data from a port. |
|
||||
| [deleteServer(host)](./bitburner.ns.deleteserver.md) | Delete a purchased server. |
|
||||
| [disableLog(fn)](./bitburner.ns.disablelog.md) | Disables logging for the given function. |
|
||||
| [enableLog(fn)](./bitburner.ns.enablelog.md) | Enable logging for a certain function. |
|
||||
| [exec(script, host, numThreads, args)](./bitburner.ns.exec.md) | Start another script on any server. |
|
||||
| [exit()](./bitburner.ns.exit.md) | Terminates the current script immediately. |
|
||||
| [fileExists(filename, host)](./bitburner.ns.fileexists.md) | Check if a file exists. |
|
||||
| [flags(schema)](./bitburner.ns.flags.md) | Parse command line flags. |
|
||||
| [ftpcrack(host)](./bitburner.ns.ftpcrack.md) | Runs FTPCrack.exe on a server. |
|
||||
| [getBitNodeMultipliers()](./bitburner.ns.getbitnodemultipliers.md) | Get the current Bitnode multipliers. |
|
||||
| [getFavorToDonate()](./bitburner.ns.getfavortodonate.md) | Returns the amount of Faction favor required to be able to donate to a faction. |
|
||||
| [getGrowTime(host)](./bitburner.ns.getgrowtime.md) | Get the execution time of a grow() call. |
|
||||
| [getHackingLevel()](./bitburner.ns.gethackinglevel.md) | Returns the player’s current hacking level. |
|
||||
| [getHackingMultipliers()](./bitburner.ns.gethackingmultipliers.md) | Get hacking related multipliers. |
|
||||
| [getHacknetMultipliers()](./bitburner.ns.gethacknetmultipliers.md) | Get hacknet related multipliers. |
|
||||
| [getHackTime(host)](./bitburner.ns.gethacktime.md) | Get the execution time of a hack() call. |
|
||||
| [getHostname()](./bitburner.ns.gethostname.md) | Returns a string with the hostname of the server that the script is running on. |
|
||||
| [getOwnedSourceFiles()](./bitburner.ns.getownedsourcefiles.md) | Get a list of acquired Source-Files. |
|
||||
| [getPlayer()](./bitburner.ns.getplayer.md) | Get information about the player. |
|
||||
| [getPortHandle(port)](./bitburner.ns.getporthandle.md) | Get all data on a port. |
|
||||
| [getPurchasedServerCost(ram)](./bitburner.ns.getpurchasedservercost.md) | Get cost of purchasing a server. |
|
||||
| [getPurchasedServerLimit()](./bitburner.ns.getpurchasedserverlimit.md) | Returns the maximum number of servers you can purchase. |
|
||||
| [getPurchasedServerMaxRam()](./bitburner.ns.getpurchasedservermaxram.md) | Returns the maximum RAM that a purchased server can have. |
|
||||
| [getPurchasedServers()](./bitburner.ns.getpurchasedservers.md) | Returns an array with the hostnames of all of the servers you have purchased. |
|
||||
| [getRunningScript(filename, hostname, args)](./bitburner.ns.getrunningscript.md) | Get general info about a running script. |
|
||||
| [getScriptExpGain(script, host, args)](./bitburner.ns.getscriptexpgain.md) | Get the exp gain of a script. |
|
||||
| [getScriptIncome(script, host, args)](./bitburner.ns.getscriptincome.md) | Get the income of a script. |
|
||||
| [getScriptLogs(fn, host, args)](./bitburner.ns.getscriptlogs.md) | Get all the logs of a script. |
|
||||
| [getScriptName()](./bitburner.ns.getscriptname.md) | Returns the current script name. |
|
||||
| [getScriptRam(script, host)](./bitburner.ns.getscriptram.md) | Get the ram cost of a script. |
|
||||
| [getServer(host)](./bitburner.ns.getserver.md) | Returns a server object for the given server. Defaults to the running script's server if host is not specified. |
|
||||
| [getServerBaseSecurityLevel(host)](./bitburner.ns.getserverbasesecuritylevel.md) | |
|
||||
| [getServerGrowth(host)](./bitburner.ns.getservergrowth.md) | Get a server growth parameter. |
|
||||
| [getServerMaxMoney(host)](./bitburner.ns.getservermaxmoney.md) | Get maximum money available on a server. |
|
||||
| [getServerMaxRam(host)](./bitburner.ns.getservermaxram.md) | Get the max RAM on a server. |
|
||||
| [getServerMinSecurityLevel(host)](./bitburner.ns.getserverminsecuritylevel.md) | Returns the minimum security level of the target server. |
|
||||
| [getServerMoneyAvailable(host)](./bitburner.ns.getservermoneyavailable.md) | Get money available on a server. |
|
||||
| [getServerNumPortsRequired(host)](./bitburner.ns.getservernumportsrequired.md) | Returns the number of open ports required to successfully run NUKE.exe on the specified server. |
|
||||
| [getServerRam(host)](./bitburner.ns.getserverram.md) | |
|
||||
| [getServerRequiredHackingLevel(host)](./bitburner.ns.getserverrequiredhackinglevel.md) | Returns the required hacking level of the target server. |
|
||||
| [getServerSecurityLevel(host)](./bitburner.ns.getserversecuritylevel.md) | Get server security level. |
|
||||
| [getServerUsedRam(host)](./bitburner.ns.getserverusedram.md) | Get the used RAM on a server. |
|
||||
| [getTimeSinceLastAug()](./bitburner.ns.gettimesincelastaug.md) | Returns the amount of time in milliseconds that have passed since you last installed Augmentations. |
|
||||
| [getWeakenTime(host)](./bitburner.ns.getweakentime.md) | Get the execution time of a weaken() call. |
|
||||
| [grow(host, opts)](./bitburner.ns.grow.md) | Spoof money in a servers bank account, increasing the amount available. |
|
||||
| [growthAnalyze(host, growthAmount, cores)](./bitburner.ns.growthanalyze.md) | Calculate the number of grow thread needed to grow a server by a certain multiplier. |
|
||||
| [growthAnalyzeSecurity(threads)](./bitburner.ns.growthanalyzesecurity.md) | Calculate the security increase for a number of thread. |
|
||||
| [hack(host, opts)](./bitburner.ns.hack.md) | Steal a servers money. |
|
||||
| [hackAnalyze(host)](./bitburner.ns.hackanalyze.md) | Get the percent of money stolen with a single thread. |
|
||||
| [hackAnalyzeChance(host)](./bitburner.ns.hackanalyzechance.md) | Get the chance of successfully hacking a server. |
|
||||
| [hackAnalyzeSecurity(threads)](./bitburner.ns.hackanalyzesecurity.md) | Get the security increase for a number of thread. |
|
||||
| [hackAnalyzeThreads(host, hackAmount)](./bitburner.ns.hackanalyzethreads.md) | Predict the effect of hack. |
|
||||
| [hasRootAccess(host)](./bitburner.ns.hasrootaccess.md) | Check if your have root access on a server. |
|
||||
| [httpworm(host)](./bitburner.ns.httpworm.md) | Runs HTTPWorm.exe on a server. |
|
||||
| [isLogEnabled(fn)](./bitburner.ns.islogenabled.md) | Checks the status of the logging for the given function. |
|
||||
| [isRunning(script, host, args)](./bitburner.ns.isrunning.md) | Check if a script is running. |
|
||||
| [kill(script, host, args)](./bitburner.ns.kill.md) | Terminate another script. |
|
||||
| [killall(host)](./bitburner.ns.killall.md) | Terminate all scripts on a server. |
|
||||
| [ls(host, grep)](./bitburner.ns.ls.md) | List files on a server. |
|
||||
| [nFormat(n, format)](./bitburner.ns.nformat.md) | Format a number |
|
||||
| [nuke(host)](./bitburner.ns.nuke.md) | Runs NUKE.exe on a server. |
|
||||
| [peek(port)](./bitburner.ns.peek.md) | Get a copy of the data from a port without popping it. |
|
||||
| [print(msg)](./bitburner.ns.print.md) | Prints a value or a variable to the script’s logs. |
|
||||
| [prompt(txt)](./bitburner.ns.prompt.md) | Prompt the player with a Yes/No modal. |
|
||||
| [ps(host)](./bitburner.ns.ps.md) | List running scripts on a server. |
|
||||
| [purchaseServer(hostname, ram)](./bitburner.ns.purchaseserver.md) | Purchase a server. |
|
||||
| [read(handle)](./bitburner.ns.read.md) | Read content of a file. |
|
||||
| [readPort(port)](./bitburner.ns.readport.md) | Read data from a port. |
|
||||
| [relaysmtp(host)](./bitburner.ns.relaysmtp.md) | Runs relaySMTP.exe on a server. |
|
||||
| [rm(name, host)](./bitburner.ns.rm.md) | Delete a file. |
|
||||
| [run(script, numThreads, args)](./bitburner.ns.run.md) | Start another script on the current server. |
|
||||
| [scan(host, hostnames)](./bitburner.ns.scan.md) | Get the list servers connected to a server. |
|
||||
| [scp(files, source, destination)](./bitburner.ns.scp.md) | Copy file between servers. |
|
||||
| [scriptKill(script, host)](./bitburner.ns.scriptkill.md) | Kill all scripts with a filename. |
|
||||
| [scriptRunning(script, host)](./bitburner.ns.scriptrunning.md) | Check if any script with a filename is running. |
|
||||
| [serverExists(host)](./bitburner.ns.serverexists.md) | Returns a boolean denoting whether or not the specified server exists. |
|
||||
| [sleep(millis)](./bitburner.ns.sleep.md) | Suspends the script for n milliseconds. |
|
||||
| [spawn(script, numThreads, args)](./bitburner.ns.spawn.md) | Terminate current script and start another in 10s. |
|
||||
| [sprintf(format, args)](./bitburner.ns.sprintf.md) | Format a string. |
|
||||
| [sqlinject(host)](./bitburner.ns.sqlinject.md) | Runs SQLInject.exe on a server. |
|
||||
| [tail(fn, host, args)](./bitburner.ns.tail.md) | Open the tail window of a script. |
|
||||
| [tFormat(milliseconds, milliPrecision)](./bitburner.ns.tformat.md) | Format time to readable string |
|
||||
| [toast(msg, variant)](./bitburner.ns.toast.md) | Queue a toast (bottom-right notification). |
|
||||
| [tprint(msg)](./bitburner.ns.tprint.md) | Prints a value or a variable to the Terminal. |
|
||||
| [tprintf(format, values)](./bitburner.ns.tprintf.md) | Prints a raw value or a variable to the Terminal. |
|
||||
| [tryWritePort(port, data)](./bitburner.ns.trywriteport.md) | Attempt to write to a port. |
|
||||
| [vsprintf(format, args)](./bitburner.ns.vsprintf.md) | Format a string with an array of arguments. |
|
||||
| [weaken(host, opts)](./bitburner.ns.weaken.md) | Reduce a server security level. |
|
||||
| [weakenAnalyze(threads, cores)](./bitburner.ns.weakenanalyze.md) | Predict the effect of weaken. |
|
||||
| [wget(url, target, host)](./bitburner.ns.wget.md) | Download a file from the internet. |
|
||||
| [write(handle, data, mode)](./bitburner.ns.write.md) | Write data to a file. |
|
||||
| [writePort(port, data)](./bitburner.ns.writeport.md) | Write data to a port. |
|
||||
|
1
package-lock.json
generated
1
package-lock.json
generated
@ -5,6 +5,7 @@
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bitburner",
|
||||
"version": "1.1.0",
|
||||
"hasInstallScript": true,
|
||||
"license": "SEE LICENSE IN license.txt",
|
||||
|
@ -109,6 +109,6 @@
|
||||
"test:watch": "jest --watch",
|
||||
"watch": "webpack --watch --mode production",
|
||||
"watch:dev": "webpack --watch --mode development",
|
||||
"electron": "cp -r electron/* .package && cp index.html .package && cp main.bundle.js .package && cp dist/vendor.bundle.js .package/dist && cp -r dist/ext .package/dist/ext && electron-packager .package bitburner --all --out .build --overwrite --icon .package/icon.png"
|
||||
"electron": "cp -r electron/* .package && cp index.html .package && cp main.bundle.js .package && cp dist/vendor.bundle.js .package/dist/ && cp -r dist/ext .package/dist/ && electron-packager .package bitburner --all --out .build --overwrite --icon .package/icon.png"
|
||||
}
|
||||
}
|
||||
|
@ -82,16 +82,24 @@ function MainPage({ faction, rerender, onAugmentations }: IMainProps): React.Rea
|
||||
setGangOpen(true);
|
||||
}
|
||||
|
||||
function startWork(): void {
|
||||
player.startFocusing();
|
||||
router.toWork();
|
||||
}
|
||||
|
||||
function startFieldWork(faction: Faction): void {
|
||||
player.startFactionFieldWork(router, faction);
|
||||
player.startFactionFieldWork(faction);
|
||||
startWork();
|
||||
}
|
||||
|
||||
function startHackingContracts(faction: Faction): void {
|
||||
player.startFactionHackWork(router, faction);
|
||||
player.startFactionHackWork(faction);
|
||||
startWork();
|
||||
}
|
||||
|
||||
function startSecurityWork(faction: Faction): void {
|
||||
player.startFactionSecurityWork(router, faction);
|
||||
player.startFactionSecurityWork(faction);
|
||||
startWork();
|
||||
}
|
||||
|
||||
// We have a special flag for whether the player this faction is the player's
|
||||
|
@ -171,10 +171,11 @@ export function CompanyLocation(props: IProps): React.ReactElement {
|
||||
const pos = companyPosition;
|
||||
if (pos instanceof CompanyPosition) {
|
||||
if (pos.isPartTimeJob() || pos.isSoftwareConsultantJob() || pos.isBusinessConsultantJob()) {
|
||||
p.startWorkPartTime(router, props.locName);
|
||||
p.startWorkPartTime(props.locName);
|
||||
} else {
|
||||
p.startWork(router, props.locName);
|
||||
p.startWork(props.locName);
|
||||
}
|
||||
p.startFocusing();
|
||||
router.toWork();
|
||||
}
|
||||
}
|
||||
|
@ -941,6 +941,7 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return runScriptFromScript("run", scriptServer, scriptname, args, workerScript, threads);
|
||||
},
|
||||
exec: function (scriptname: any, hostname: any, threads: any = 1, ...args: any[]): any {
|
||||
console.log(`${scriptname} ${hostname} ${threads} ${JSON.stringify(args)}`);
|
||||
updateDynamicRam("exec", getRamCost("exec"));
|
||||
if (scriptname === undefined || hostname === undefined) {
|
||||
throw makeRuntimeErrorMsg("exec", "Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");
|
||||
@ -1061,11 +1062,13 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
throw makeRuntimeErrorMsg("scp", "No scripts to copy");
|
||||
}
|
||||
let res = true;
|
||||
await Promise.all(scripts.map(async function(script) {
|
||||
if (!await NetscriptFunctions(workerScript).scp(script, hostname1, hostname2)) {
|
||||
res = false;
|
||||
}
|
||||
}));
|
||||
await Promise.all(
|
||||
scripts.map(async function (script) {
|
||||
if (!(await NetscriptFunctions(workerScript).scp(script, hostname1, hostname2))) {
|
||||
res = false;
|
||||
}
|
||||
}),
|
||||
);
|
||||
return Promise.resolve(res);
|
||||
}
|
||||
|
||||
@ -2120,12 +2123,15 @@ export function NetscriptFunctions(workerScript: WorkerScript): NS {
|
||||
return Player.playtimeSinceLastAug;
|
||||
},
|
||||
alert: function (message: any): void {
|
||||
dialogBoxCreate(message);
|
||||
message = toNative(message);
|
||||
dialogBoxCreate(JSON.stringify(message));
|
||||
},
|
||||
toast: function (message: any, variant: any = "success"): void {
|
||||
if (!["success", "info", "warning", "error"].includes(variant))
|
||||
throw new Error(`variant must be one of "success", "info", "warning", or "error"`);
|
||||
SnackbarEvents.emit(message, variant);
|
||||
|
||||
message = toNative(message);
|
||||
SnackbarEvents.emit(JSON.stringify(message), variant);
|
||||
},
|
||||
prompt: function (txt: any): any {
|
||||
if (!isString(txt)) {
|
||||
|
@ -622,6 +622,38 @@ export function NetscriptSingularity(
|
||||
return Promise.resolve();
|
||||
});
|
||||
},
|
||||
isFocused: function (): boolean {
|
||||
helper.updateDynamicRam("isFocused", getRamCost("isFocused"));
|
||||
helper.checkSingularityAccess("isFocused", 2);
|
||||
return player.focus;
|
||||
},
|
||||
setFocus: function (afocus: any): boolean {
|
||||
const focus = helper.boolean(afocus);
|
||||
helper.updateDynamicRam("setFocus", getRamCost("setFocus"));
|
||||
helper.checkSingularityAccess("setFocus", 2);
|
||||
if (!player.isWorking) {
|
||||
throw helper.makeRuntimeErrorMsg("setFocus", "Not currently working");
|
||||
}
|
||||
if (
|
||||
!(
|
||||
player.workType == CONSTANTS.WorkTypeFaction ||
|
||||
player.workType == CONSTANTS.WorkTypeCompany ||
|
||||
player.workType == CONSTANTS.WorkTypeCompanyPartTime
|
||||
)
|
||||
) {
|
||||
throw helper.makeRuntimeErrorMsg("setFocus", "Cannot change focus for current job");
|
||||
}
|
||||
if (!player.focus && focus) {
|
||||
player.startFocusing();
|
||||
Router.toWork();
|
||||
return true;
|
||||
} else if (player.focus && !focus) {
|
||||
player.stopFocusing();
|
||||
Router.toTerminal();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getStats: function (): any {
|
||||
helper.updateDynamicRam("getStats", getRamCost("getStats"));
|
||||
helper.checkSingularityAccess("getStats", 1);
|
||||
@ -703,7 +735,9 @@ export function NetscriptSingularity(
|
||||
helper.updateDynamicRam("stopAction", getRamCost("stopAction"));
|
||||
helper.checkSingularityAccess("stopAction", 1);
|
||||
if (player.isWorking) {
|
||||
Router.toTerminal();
|
||||
if (player.focus) {
|
||||
Router.toTerminal();
|
||||
}
|
||||
const txt = player.singularityStopWork();
|
||||
workerScript.log("stopAction", () => txt);
|
||||
return true;
|
||||
@ -814,16 +848,21 @@ export function NetscriptSingularity(
|
||||
return false;
|
||||
}
|
||||
|
||||
const wasWorking = player.isWorking;
|
||||
const wasFocused = player.focus;
|
||||
if (player.isWorking) {
|
||||
const txt = player.singularityStopWork();
|
||||
workerScript.log("workForCompany", () => txt);
|
||||
}
|
||||
|
||||
if (companyPosition.isPartTimeJob()) {
|
||||
player.startWorkPartTime(Router, companyName);
|
||||
player.startWorkPartTime(companyName);
|
||||
} else {
|
||||
player.startWork(Router, companyName);
|
||||
player.startWork(companyName);
|
||||
}
|
||||
|
||||
if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing();
|
||||
else if (wasWorking && wasFocused) player.startFocusing();
|
||||
workerScript.log(
|
||||
"workForCompany",
|
||||
() => `Began working at '${player.companyName}' as a '${companyPositionName}'`,
|
||||
@ -963,6 +1002,8 @@ export function NetscriptSingularity(
|
||||
return false;
|
||||
}
|
||||
|
||||
const wasWorking = player.isWorking;
|
||||
const wasFocused = player.focus;
|
||||
if (player.isWorking) {
|
||||
const txt = player.singularityStopWork();
|
||||
workerScript.log("workForFaction", () => txt);
|
||||
@ -1060,7 +1101,9 @@ export function NetscriptSingularity(
|
||||
workerScript.log("workForFaction", () => `Faction '${fac.name}' do not need help with hacking contracts.`);
|
||||
return false;
|
||||
}
|
||||
player.startFactionHackWork(Router, fac);
|
||||
player.startFactionHackWork(fac);
|
||||
if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing();
|
||||
else if (wasWorking && wasFocused) player.startFocusing();
|
||||
workerScript.log("workForFaction", () => `Started carrying out hacking contracts for '${fac.name}'`);
|
||||
return true;
|
||||
case "field":
|
||||
@ -1070,7 +1113,9 @@ export function NetscriptSingularity(
|
||||
workerScript.log("workForFaction", () => `Faction '${fac.name}' do not need help with field missions.`);
|
||||
return false;
|
||||
}
|
||||
player.startFactionFieldWork(Router, fac);
|
||||
player.startFactionFieldWork(fac);
|
||||
if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing();
|
||||
else if (wasWorking && wasFocused) player.startFocusing();
|
||||
workerScript.log("workForFaction", () => `Started carrying out field missions for '${fac.name}'`);
|
||||
return true;
|
||||
case "security":
|
||||
@ -1080,7 +1125,9 @@ export function NetscriptSingularity(
|
||||
workerScript.log("workForFaction", () => `Faction '${fac.name}' do not need help with security work.`);
|
||||
return false;
|
||||
}
|
||||
player.startFactionSecurityWork(Router, fac);
|
||||
player.startFactionSecurityWork(fac);
|
||||
if (!wasWorking || (wasWorking && !wasFocused)) player.stopFocusing();
|
||||
else if (wasWorking && wasFocused) player.startFocusing();
|
||||
workerScript.log("workForFaction", () => `Started carrying out security work for '${fac.name}'`);
|
||||
return true;
|
||||
default:
|
||||
|
@ -709,6 +709,7 @@ export function runScriptFromScript(
|
||||
);
|
||||
const runningScriptObj = new RunningScript(script, args);
|
||||
runningScriptObj.threads = threads;
|
||||
runningScriptObj.server = server.hostname;
|
||||
|
||||
return startWorkerScript(runningScriptObj, server, workerScript);
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ export interface IPlayer {
|
||||
setMoney(amt: number): void;
|
||||
singularityStopWork(): string;
|
||||
startBladeburner(p: any): void;
|
||||
startFactionWork(router: IRouter, faction: Faction): void;
|
||||
startFactionWork(faction: Faction): void;
|
||||
startClass(router: IRouter, costMult: number, expMult: number, className: string): void;
|
||||
startCorporation(corpName: string, additionalShares?: number): void;
|
||||
startCrime(
|
||||
@ -227,13 +227,13 @@ export interface IPlayer {
|
||||
time: number,
|
||||
singParams: any,
|
||||
): void;
|
||||
startFactionFieldWork(router: IRouter, faction: Faction): void;
|
||||
startFactionHackWork(router: IRouter, faction: Faction): void;
|
||||
startFactionSecurityWork(router: IRouter, faction: Faction): void;
|
||||
startFactionFieldWork(faction: Faction): void;
|
||||
startFactionHackWork(faction: Faction): void;
|
||||
startFactionSecurityWork(faction: Faction): void;
|
||||
startFocusing(): void;
|
||||
startGang(facName: string, isHacking: boolean): void;
|
||||
startWork(router: IRouter, companyName: string): void;
|
||||
startWorkPartTime(router: IRouter, companyName: string): void;
|
||||
startWork(companyName: string): void;
|
||||
startWorkPartTime(companyName: string): void;
|
||||
takeDamage(amt: number): boolean;
|
||||
travel(to: CityName): boolean;
|
||||
giveExploit(exploit: Exploit): void;
|
||||
|
@ -216,7 +216,7 @@ export class PlayerObject implements IPlayer {
|
||||
setMoney: (amt: number) => void;
|
||||
singularityStopWork: () => string;
|
||||
startBladeburner: (p: any) => void;
|
||||
startFactionWork: (router: IRouter, faction: Faction) => void;
|
||||
startFactionWork: (faction: Faction) => void;
|
||||
startClass: (router: IRouter, costMult: number, expMult: number, className: string) => void;
|
||||
startCorporation: (corpName: string, additionalShares?: number) => void;
|
||||
startCrime: (
|
||||
@ -232,13 +232,13 @@ export class PlayerObject implements IPlayer {
|
||||
time: number,
|
||||
singParams: any,
|
||||
) => void;
|
||||
startFactionFieldWork: (router: IRouter, faction: Faction) => void;
|
||||
startFactionHackWork: (router: IRouter, faction: Faction) => void;
|
||||
startFactionSecurityWork: (router: IRouter, faction: Faction) => void;
|
||||
startFactionFieldWork: (faction: Faction) => void;
|
||||
startFactionHackWork: (faction: Faction) => void;
|
||||
startFactionSecurityWork: (faction: Faction) => void;
|
||||
startFocusing: () => void;
|
||||
startGang: (facName: string, isHacking: boolean) => void;
|
||||
startWork: (router: IRouter, companyName: string) => void;
|
||||
startWorkPartTime: (router: IRouter, companyName: string) => void;
|
||||
startWork: (companyName: string) => void;
|
||||
startWorkPartTime: (companyName: string) => void;
|
||||
takeDamage: (amt: number) => boolean;
|
||||
travel: (to: CityName) => boolean;
|
||||
giveExploit: (exploit: Exploit) => void;
|
||||
|
@ -554,10 +554,9 @@ export function processWorkEarnings(this: IPlayer, numCycles = 1): void {
|
||||
}
|
||||
|
||||
/* Working for Company */
|
||||
export function startWork(this: IPlayer, router: IRouter, companyName: string): void {
|
||||
export function startWork(this: IPlayer, companyName: string): void {
|
||||
this.resetWorkStatus(CONSTANTS.WorkTypeCompany, companyName);
|
||||
this.isWorking = true;
|
||||
this.focus = true;
|
||||
this.companyName = companyName;
|
||||
this.workType = CONSTANTS.WorkTypeCompany;
|
||||
|
||||
@ -571,7 +570,6 @@ export function startWork(this: IPlayer, router: IRouter, companyName: string):
|
||||
this.workMoneyGainRate = this.getWorkMoneyGain();
|
||||
|
||||
this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer8Hours;
|
||||
router.toWork();
|
||||
}
|
||||
|
||||
export function process(this: IPlayer, router: IRouter, numCycles = 1): void {
|
||||
@ -723,10 +721,9 @@ export function finishWork(this: IPlayer, cancelled: boolean, sing = false): str
|
||||
return "";
|
||||
}
|
||||
|
||||
export function startWorkPartTime(this: IPlayer, router: IRouter, companyName: string): void {
|
||||
export function startWorkPartTime(this: IPlayer, companyName: string): void {
|
||||
this.resetWorkStatus(CONSTANTS.WorkTypeCompanyPartTime, companyName);
|
||||
this.isWorking = true;
|
||||
this.focus = true;
|
||||
this.companyName = companyName;
|
||||
this.workType = CONSTANTS.WorkTypeCompanyPartTime;
|
||||
|
||||
@ -740,7 +737,6 @@ export function startWorkPartTime(this: IPlayer, router: IRouter, companyName: s
|
||||
this.workMoneyGainRate = this.getWorkMoneyGain();
|
||||
|
||||
this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer8Hours;
|
||||
router.toWork();
|
||||
}
|
||||
|
||||
export function workPartTime(this: IPlayer, numCycles: number): boolean {
|
||||
@ -832,7 +828,7 @@ export function stopFocusing(this: IPlayer): void {
|
||||
}
|
||||
|
||||
/* Working for Faction */
|
||||
export function startFactionWork(this: IPlayer, router: IRouter, faction: Faction): void {
|
||||
export function startFactionWork(this: IPlayer, faction: Faction): void {
|
||||
//Update reputation gain rate to account for faction favor
|
||||
let favorMult = 1 + faction.favor / 100;
|
||||
if (isNaN(favorMult)) {
|
||||
@ -842,15 +838,13 @@ export function startFactionWork(this: IPlayer, router: IRouter, faction: Factio
|
||||
this.workRepGainRate *= BitNodeMultipliers.FactionWorkRepGain;
|
||||
|
||||
this.isWorking = true;
|
||||
this.focus = true;
|
||||
this.workType = CONSTANTS.WorkTypeFaction;
|
||||
this.currentWorkFactionName = faction.name;
|
||||
|
||||
this.timeNeededToCompleteWork = CONSTANTS.MillisecondsPer20Hours;
|
||||
router.toWork();
|
||||
}
|
||||
|
||||
export function startFactionHackWork(this: IPlayer, router: IRouter, faction: Faction): void {
|
||||
export function startFactionHackWork(this: IPlayer, faction: Faction): void {
|
||||
this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkHacking);
|
||||
|
||||
this.workHackExpGainRate = 0.15 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;
|
||||
@ -859,10 +853,10 @@ export function startFactionHackWork(this: IPlayer, router: IRouter, faction: Fa
|
||||
this.factionWorkType = CONSTANTS.FactionWorkHacking;
|
||||
this.currentWorkFactionDescription = "carrying out hacking contracts";
|
||||
|
||||
this.startFactionWork(router, faction);
|
||||
this.startFactionWork(faction);
|
||||
}
|
||||
|
||||
export function startFactionFieldWork(this: IPlayer, router: IRouter, faction: Faction): void {
|
||||
export function startFactionFieldWork(this: IPlayer, faction: Faction): void {
|
||||
this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkField);
|
||||
|
||||
this.workHackExpGainRate = 0.1 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;
|
||||
@ -876,10 +870,10 @@ export function startFactionFieldWork(this: IPlayer, router: IRouter, faction: F
|
||||
this.factionWorkType = CONSTANTS.FactionWorkField;
|
||||
this.currentWorkFactionDescription = "carrying out field missions";
|
||||
|
||||
this.startFactionWork(router, faction);
|
||||
this.startFactionWork(faction);
|
||||
}
|
||||
|
||||
export function startFactionSecurityWork(this: IPlayer, router: IRouter, faction: Faction): void {
|
||||
export function startFactionSecurityWork(this: IPlayer, faction: Faction): void {
|
||||
this.resetWorkStatus(CONSTANTS.WorkTypeFaction, faction.name, CONSTANTS.FactionWorkSecurity);
|
||||
|
||||
this.workHackExpGainRate = 0.05 * this.hacking_exp_mult * BitNodeMultipliers.FactionWorkExpGain;
|
||||
@ -893,7 +887,7 @@ export function startFactionSecurityWork(this: IPlayer, router: IRouter, faction
|
||||
this.factionWorkType = CONSTANTS.FactionWorkSecurity;
|
||||
this.currentWorkFactionDescription = "performing security detail";
|
||||
|
||||
this.startFactionWork(router, faction);
|
||||
this.startFactionWork(faction);
|
||||
}
|
||||
|
||||
export function workForFaction(this: IPlayer, numCycles: number): boolean {
|
||||
|
@ -168,6 +168,13 @@ export function prestigeSourceFile(flume: boolean): void {
|
||||
|
||||
const homeComp = Player.getHomeComputer();
|
||||
|
||||
// Stop a Terminal action if there is one.
|
||||
if (Terminal.action !== null) {
|
||||
Terminal.finishAction(Router, Player, true);
|
||||
}
|
||||
Terminal.clear();
|
||||
LogBoxClearEvents.emit();
|
||||
|
||||
// Delete all servers except home computer
|
||||
prestigeAllServers(); // Must be done before initForeignServers()
|
||||
|
||||
|
48
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
48
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -1985,6 +1985,25 @@ export interface Singularity {
|
||||
* @returns True if the installation was successful.
|
||||
*/
|
||||
installBackdoor(): Promise<void>;
|
||||
|
||||
/**
|
||||
* SF4.2 - Check if the player is focused.
|
||||
* @remarks
|
||||
* RAM cost: 0.1 GB
|
||||
*
|
||||
*
|
||||
* @returns True if the player is focused.
|
||||
*/
|
||||
isFocused(): boolean;
|
||||
|
||||
/**
|
||||
* SF4.2 - Set the players focus.
|
||||
* @remarks
|
||||
* RAM cost: 0.1 GB
|
||||
*
|
||||
* @returns True if the focus was changed.
|
||||
*/
|
||||
setFocus(focus: boolean): boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2831,9 +2850,9 @@ export interface CodingContract {
|
||||
*
|
||||
* @param filename - Filename of the contract.
|
||||
* @param host - Host of the server containing the contract. Optional. Defaults to current server if not provided.
|
||||
* @returns The specified contract’s data;
|
||||
* @returns The specified contract’s data, data type depends on contract type.;
|
||||
*/
|
||||
getData(filename: string, host?: string): string;
|
||||
getData(filename: string, host?: string): any;
|
||||
|
||||
/**
|
||||
* Get the number of attempt remaining.
|
||||
@ -3707,6 +3726,27 @@ interface Stanek {
|
||||
/**
|
||||
* Collection of all functions passed to scripts
|
||||
* @public
|
||||
* @remarks
|
||||
* <b>Basic ns1 usage example:</b>
|
||||
* ```ts
|
||||
* // Basic ns functions can be used directly
|
||||
* getHostname();
|
||||
* // Some related functions are gathered within a common namespace
|
||||
* stock.getPrice();
|
||||
* ```
|
||||
* {@link https://bitburner.readthedocs.io/en/latest/netscript/netscript1.html| ns1 in-game docs}
|
||||
* <hr>
|
||||
* <b>Basic ns2 usage example:</b>
|
||||
* ```ts
|
||||
* export async function main(ns) {
|
||||
* // Basic ns functions can be accessed on the ns object
|
||||
* await ns.getHostname();
|
||||
* // Some related functions are gathered under a sub-property of the ns object
|
||||
* await ns.stock.getPrice();
|
||||
* }
|
||||
* ```
|
||||
* {@link https://bitburner.readthedocs.io/en/latest/netscript/netscriptjs.html| ns2 in-game docs}
|
||||
* <hr>
|
||||
*/
|
||||
export interface NS extends Singularity {
|
||||
/**
|
||||
@ -3906,7 +3946,7 @@ export interface NS extends Singularity {
|
||||
* ```ts
|
||||
* //For example, assume the following returns 0.01:
|
||||
* hackAnalyze("foodnstuff");
|
||||
* //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N*0.01% of its total money.
|
||||
* //This means that if hack the foodnstuff server, then you will steal 1% of its total money. If you hack using N threads, then you will steal N*0.01 times its total money.
|
||||
* ```
|
||||
* @param host - Hostname of the target server.
|
||||
* @returns The percentage of money you will steal from the target server with a single hack.
|
||||
@ -4584,7 +4624,7 @@ export interface NS extends Singularity {
|
||||
* RAM cost: 0.1 GB
|
||||
*
|
||||
* Returns the server’s instrinsic “growth parameter”. This growth
|
||||
* parameter is a number between 1 and 100 that represents how
|
||||
* parameter is a number between 0 and 100 that represents how
|
||||
* quickly the server’s money grows. This parameter affects the
|
||||
* percentage by which the server’s money is increased when using the
|
||||
* grow function. A higher growth parameter will result in a
|
||||
|
@ -178,7 +178,7 @@ export const defaultSettings: IDefaultSettings = {
|
||||
Locale: "en",
|
||||
MaxLogCapacity: 50,
|
||||
MaxPortCapacity: 50,
|
||||
MaxTerminalCapacity: 200,
|
||||
MaxTerminalCapacity: 500,
|
||||
SaveGameOnFileSave: true,
|
||||
SuppressBuyAugmentationConfirmation: false,
|
||||
SuppressFactionInvites: false,
|
||||
|
@ -169,6 +169,45 @@ export function getAllParentDirectories(path: string): string {
|
||||
return t_path.slice(0, lastSlash + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a destination that only contains a directory part, returns the
|
||||
* path to the source filename inside the new destination directory.
|
||||
* Otherwise, returns the path to the destination file.
|
||||
* @param destination The destination path or file name
|
||||
* @param source The source path
|
||||
* @param cwd The current working directory
|
||||
* @returns A file path which may be absolute or relative
|
||||
*/
|
||||
export function getDestinationFilepath(destination: string, source: string, cwd: string) {
|
||||
const dstDir = evaluateDirectoryPath(destination, cwd);
|
||||
// If evaluating the directory for this destination fails, we have a filename or full path.
|
||||
if (dstDir === null) {
|
||||
return destination;
|
||||
} else {
|
||||
// Append the filename to the directory provided.
|
||||
let t_path = removeTrailingSlash(dstDir);
|
||||
const fileName = getFileName(source);
|
||||
return t_path + "/" + fileName;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a filepath, returns the file name (e.g. without directory parts)
|
||||
* For example:
|
||||
* /home/var/test.js -> test.js
|
||||
* ./var/test.js -> test.js
|
||||
* test.js -> test.js
|
||||
*/
|
||||
export function getFileName(path: string): string {
|
||||
const t_path = path;
|
||||
const lastSlash = t_path.lastIndexOf("/");
|
||||
if (lastSlash === -1) {
|
||||
return t_path;
|
||||
}
|
||||
|
||||
return t_path.slice(lastSlash + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a file path refers to a file in the root directory.
|
||||
*/
|
||||
|
@ -254,9 +254,8 @@ export class Terminal implements ITerminal {
|
||||
const expGain = calculateHackingExpGain(server, player);
|
||||
server.weaken(CONSTANTS.ServerWeakenAmount);
|
||||
this.print(
|
||||
`'${server.hostname}' security level weakened to ${server.hackDifficulty}. Gained ${numeralWrapper.formatExp(
|
||||
expGain,
|
||||
)} hacking exp.`,
|
||||
`'${server.hostname}' security level weakened to ${server.hackDifficulty.toFixed(3)} ` +
|
||||
`and Gained ${numeralWrapper.formatExp(expGain)} hacking exp.`,
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ import { IRouter } from "../../ui/Router";
|
||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||
import { BaseServer } from "../../Server/BaseServer";
|
||||
import { isScriptFilename } from "../../Script/isScriptFilename";
|
||||
import { getDestinationFilepath, areFilesEqual } from "../DirectoryHelpers";
|
||||
|
||||
export function cp(
|
||||
terminal: ITerminal,
|
||||
@ -16,9 +17,23 @@ export function cp(
|
||||
terminal.error("Incorrect usage of cp command. Usage: cp [src] [dst]");
|
||||
return;
|
||||
}
|
||||
const src = args[0] + "";
|
||||
const dst = args[1] + "";
|
||||
if (src === dst) {
|
||||
// Convert a relative path source file to the absolute path.
|
||||
const src = terminal.getFilepath(args[0] + "");
|
||||
if (src === null) {
|
||||
terminal.error("src cannot be a directory");
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the destination based on the source file and the current directory
|
||||
const t_dst = getDestinationFilepath(args[1] + "", src, terminal.cwd());
|
||||
if (t_dst === null) {
|
||||
terminal.error("error parsing dst file");
|
||||
return;
|
||||
}
|
||||
|
||||
// Convert a relative path destination file to the absolute path.
|
||||
const dst = terminal.getFilepath(t_dst);
|
||||
if (areFilesEqual(src, dst)) {
|
||||
terminal.error("src and dst cannot be the same");
|
||||
return;
|
||||
}
|
||||
@ -50,7 +65,7 @@ export function cp(
|
||||
|
||||
const tRes = server.writeToTextFile(dst, txtFile.text);
|
||||
if (!tRes.success) {
|
||||
terminal.error("scp failed");
|
||||
terminal.error("cp failed");
|
||||
return;
|
||||
}
|
||||
if (tRes.overwritten) {
|
||||
@ -71,13 +86,13 @@ export function cp(
|
||||
}
|
||||
}
|
||||
if (sourceScript == null) {
|
||||
terminal.error("cp() failed. No such script exists");
|
||||
terminal.error("cp failed. No such script exists");
|
||||
return;
|
||||
}
|
||||
|
||||
const sRes = server.writeToScriptFile(dst, sourceScript.code);
|
||||
if (!sRes.success) {
|
||||
terminal.error(`scp failed`);
|
||||
terminal.error(`cp failed`);
|
||||
return;
|
||||
}
|
||||
if (sRes.overwritten) {
|
||||
|
@ -5,6 +5,7 @@ import { BaseServer } from "../../Server/BaseServer";
|
||||
import { isScriptFilename } from "../../Script/isScriptFilename";
|
||||
import { TextFile } from "../../TextFile";
|
||||
import { Script } from "../../Script/Script";
|
||||
import { getDestinationFilepath, areFilesEqual } from "../DirectoryHelpers";
|
||||
|
||||
export function mv(
|
||||
terminal: ITerminal,
|
||||
@ -20,7 +21,7 @@ export function mv(
|
||||
|
||||
try {
|
||||
const source = args[0] + "";
|
||||
const dest = args[1] + "";
|
||||
const t_dest = args[1] + "";
|
||||
|
||||
if (!isScriptFilename(source) && !source.endsWith(".txt")) {
|
||||
terminal.error(`'mv' can only be used on scripts and text files (.txt)`);
|
||||
@ -34,9 +35,19 @@ export function mv(
|
||||
}
|
||||
|
||||
const sourcePath = terminal.getFilepath(source);
|
||||
const destPath = terminal.getFilepath(dest);
|
||||
// Get the destination based on the source file and the current directory
|
||||
const dest = getDestinationFilepath(t_dest, source, terminal.cwd());
|
||||
if (dest === null) {
|
||||
terminal.error("error parsing dst file");
|
||||
return;
|
||||
}
|
||||
|
||||
const destFile = terminal.getFile(player, dest);
|
||||
const destPath = terminal.getFilepath(dest);
|
||||
if (areFilesEqual(sourcePath, destPath)) {
|
||||
terminal.error(`Source and destination files are the same file`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 'mv' command only works on scripts and txt files.
|
||||
// Also, you can't convert between different file types
|
||||
@ -55,7 +66,7 @@ export function mv(
|
||||
|
||||
if (destFile != null) {
|
||||
// Already exists, will be overwritten, so we'll delete it
|
||||
const status = server.removeFile(destPath);
|
||||
const status = server.removeFile(dest);
|
||||
if (!status.res) {
|
||||
terminal.error(`Something went wrong...please contact game dev (probably a bug)`);
|
||||
return;
|
||||
|
@ -20,7 +20,11 @@ export function runProgram(
|
||||
const programName = args[0] + "";
|
||||
|
||||
if (!player.hasProgram(programName)) {
|
||||
terminal.error("No such executable on home computer (Only programs that exist on your home computer can be run)");
|
||||
terminal.error(
|
||||
`No such (exe, script, js, ns, or cct) file! (Only programs that exist on your home computer or scripts on ${
|
||||
player.getCurrentServer().hostname
|
||||
} can be run)`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,7 @@ export function scp(
|
||||
): void {
|
||||
try {
|
||||
if (args.length !== 2) {
|
||||
terminal.error("Incorrect usage of scp command. Usage: scp [file] [destination hostname/ip]");
|
||||
terminal.error("Incorrect usage of scp command. Usage: scp [file] [destination hostname]");
|
||||
return;
|
||||
}
|
||||
const scriptname = terminal.getFilepath(args[0] + "");
|
||||
|
@ -41,7 +41,7 @@ export function ScriptProduction(): React.ReactElement {
|
||||
<TableBody>
|
||||
<TableRow>
|
||||
<TableCell component="th" scope="row" classes={{ root: classes.cell }}>
|
||||
<Typography variant="body2">Total production:</Typography>
|
||||
<Typography variant="body2">Total production since last Augment Installation:</Typography>
|
||||
</TableCell>
|
||||
<TableCell align="left" classes={{ root: classes.cell }}>
|
||||
<Typography variant="body2">
|
||||
|
@ -443,8 +443,11 @@ export function InteractiveTutorialRoot(): React.ReactElement {
|
||||
<Typography color={"primary"}>Tutorial</Typography>
|
||||
</ListItem>
|
||||
<Typography>
|
||||
in the main navigation menu to look at the documentation. If you are an experienced JavaScript developer, I
|
||||
would highly suggest you check out the section on NetscriptJS/Netscript 2.0, it's faster and more powerful.
|
||||
in the main navigation menu to look at the documentation.
|
||||
<br />
|
||||
<br />
|
||||
If you know even a little bit of programming it is highly recommended you use NS2 instead. You will enjoy
|
||||
the game much more.
|
||||
<br />
|
||||
<br />
|
||||
For now, let's move on to something else!
|
||||
|
Loading…
Reference in New Issue
Block a user