Files
bitburner-src/markdown/bitburner.ns.grow.md
David Walker b51ed8fd59 BUG: Fix missed cases in offline server handling (#2495)
There were two large holes in the existing offline server handling:

1. It didn't include IPs, so scripts that used IPs instead of hostnames
   would get exceptions thrown for "server not found."
2. Coverage was very low for non-Darknet APIs. Maybe most of them don't
   need to be covered, but many obvious ones like "ps", "killall" and
   "hasRootAccess" were missing. IMO the only reliable answer is one
   that enforces *all* are covered via the type system.

To accomplish the second part, helpers.getServer() was changed to return
null when a server is offline. This intentionally breaks a lot of its
utility, which was to return a server unconditionally. To compensate,
its utility was increased - it now also does unknown argument
processing, allowing it to subsume a common line that all callers were
repeating.

Some callers switched to ctx.workerScript.getServer(), because they
didn't actually need to be using helpers.getServer(). Similarly, a few
callsites switched to GetServerOrThrow(), for the cases where it should
be guaranteed that the server is valid. The rest are returning a
default/failure response when the server is offline. (Except for
contracts, which threw on failure already anyway.)
2026-02-15 10:29:47 -08:00

3.0 KiB

Home > bitburner > NS > grow

NS.grow() method

Spoof money in a server's bank account, increasing the amount available.

Signature:

grow(host?: string, opts?: BasicHGWOptions): Promise<number>;

Parameters

Parameter

Type

Description

host

string

(Optional) Hostname/IP of the target server to grow. Optional. Defaults to current server if not provided.

opts

BasicHGWOptions

(Optional) Optional parameters for configuring function behavior.

Returns:

Promise<number>

The total effective multiplier that was applied to the server's money (after both additive and multiplicative growth).

Remarks

RAM cost: 0.15 GB

Use your hacking skills to increase the amount of money available on a server.

Once the grow is complete, $1 is added to the server's available money for every script thread. This additive growth allows for rescuing a server even after it is emptied.

After this addition, the thread count is also used to determine a multiplier, which the server's money is then multiplied by.

The multiplier scales exponentially with thread count, and its base depends on the server's security level and in inherent "growth" statistic that varies between different servers.

getServerGrowth can be used to check the inherent growth statistic of a server.

growthAnalyze can be used to determine the number of threads needed for a specified multiplicative portion of server growth.

To determine the effect of a single grow, obtain access to the Formulas API and use formulas.hacking.growPercent, or invert growthAnalyze.

To determine how many threads are needed to return a server to max money, obtain access to the Formulas API and use formulas.hacking.growThreads, or NS.growthAnalyze() *if* the server will be at the same security in the future.

Like hack, grow can be called on any hackable server, regardless of where the script is running. Hackable servers are any servers not owned by the player.

The grow() command requires root access to the target server, but there is no required hacking level to run the command. It also raises the security level of the target server based on the number of threads. The security increase can be determined using growthAnalyzeSecurity.

Example

let currentMoney = ns.getServerMoneyAvailable("n00dles");
currentMoney *= await ns.grow("n00dles");