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.)
"Made with beginners in mind" might be a bit of an overstatement, but I'm not gonna quibble on the wording. (IMO we are less "let me hold your hand while you learn how to cast your fishing rod" and more "I shoved you into the pond, grab some fish or smth idk")
* Convert purchased server functions to cloud API
- Create `ns.cloud`
- Change `bitnode multipliers` and `server constants` wording for consistency
- change `server`, `ram` and `getting started` docs for consistency
- Added changes to 3.0.0 API Break and `setRemovedFunctions` in NetscriptFunctions.js
Tested by
- running tutorial `purchase-server-8gb.js`, and a more typical player one
- buying manually using vendor (Alpha Ent in Sector 12)
- deleting them all using script, and checked all deleted functions gave correct error
- Imported completed save to ensure auto-transfer of function work
* Revision in line with comments
- changed more `purchased` to `cloud` references
- Added BN mults auto-conversion
* Update getting_started.md
- Corrected function names for new `cloud API`
* Don't show `cloud API` warning
v3.0.0 API break auto-replaces `cloud` functions, not warning suggested.
* API Break correction
- `cloud` affected API break replacement changed to be more descriptive and functional
* Fix typo and add empty lines
* Update many things (check commit's description)
- Comments
- Terminal message
- UI Text
- TSDoc
- md docs
- Improve error messages in src\NetscriptFunctions\Cloud.ts
* DOC: Move all docs into en/ subdirectory
PR #1502 is working on adding a Chinese translation to the docs. In
general, I encouraged this (in #1452) as a path towards getting useful
translated content in the game without requiring a massive
refactor/rearchitecting of everything.
To support this, this takes the first step of moving our docs into an
en/ subdirectory, so that other languages can live alongside. No effort
is made at this time to support or select between alternate languages;
this is a pure-rename refactor.