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.)
3.0 KiB
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 |
(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");