If the game takes long enough to load, certain counters can become
eligible to run as soon as Engine.start() runs. When this happens,
eventually Router.page() is called, which throws an Error since Router
isn't initialized yet. (Dropping a breakpoint before Engine.start() and
waiting at least 30 seconds is enough to reliably repro, but I have seen
this both live and in tests.)
This fixes it so that Router.page() is valid immediately, returning a
value of Page.LoadingScreen. It also removes the isInitialized field,
since this is now redundant. Trying to switch pages is still an error,
but that doesn't happen without user input, whereas checking the current
page is quite common.
This also consolidates a check for "should we show toasts" behind a
function in Router, making the logic central and equal for a few
usecases. This means (for instance) that the "autosave is disabled"
logic won't run during infiltration. (The toast should have already been
suppressed.)
* Added new types for various file paths, all in the Paths folder.
* TypeSafety and other helper functions related to these types
* Added basic globbing support with * and ?. Currently only implemented for Script/Text, on nano and download terminal commands
* Enforcing the new types throughout the codebase, plus whatever rewrites happened along the way
* Server.textFiles is now a map
* TextFile no longer uses a fn property, now it is filename
* Added a shared ContentFile interface for shared functionality between TextFile and Script.
* related to ContentFile change above, the player is now allowed to move a text file to a script file and vice versa.
* File paths no longer conditionally start with slashes, and all directory names other than root have ending slashes. The player is still able to provide paths starting with / but this now indicates that the player is specifying an absolute path instead of one relative to root.
* Singularized the MessageFilename and LiteratureName enums
* Because they now only accept correct types, server.writeToXFile functions now always succeed (the only reasons they could fail before were invalid filepath).
* Fix several issues with tab completion, which included pretty much a complete rewrite
* Changed the autocomplete display options so there's less chance it clips outside the display area.
* Turned CompletedProgramName into an enum.
* Got rid of programsMetadata, and programs and DarkWebItems are now initialized immediately instead of relying on initializers called from the engine.
* For any executable (program, cct, or script file) pathing can be used directly to execute without using the run command (previously the command had to start with ./ and it wasn't actually using pathing).
Sorry for putting this all in one commit; it all happened at the same time
as a direct conscequence of trying to get icarus.msg to be smarter.
There's a compilation error on MessageHelpers.ts:24, but the game
seems to run fine so I'm committing and coming back to it later.
* Make command `cd` without arguments an alias for `cd /` (#853)
In most shells `cd` without arguments takes you to the home directory
of the current user. I keep trying to do this due to muscle memory
from working in terminals, so I figured I'd make it do something useful.
There is no home directory in the game, but going to / is the closest
thing we have, since that is the starting point for the user in the
game.
* Add new `backdoor` terminal command (#852)
* Add the backdoor command to the terminal
This command will perform a manual hack without rewarding money. It will be used for the story, mainly for faction hacking tests
* Add tab completion for backdoor command
* Add help text for backdoor command
* Change condition syntax to be more consistent with others
* Extract reused code block so it is always called after actions
* Update documentation for new backdoor command
Modified references to manual hack as it isn't for factions anymore
* Remove extra parenthesis
* Rename manuallyHacked to backdoorInstalled
* Fix typo
* Change faction test messages to use backdoor instad of hack
* Rename more instances of manuallyHacked
* fixed typo in helptext of darkweb buy (#858)
* Fix typos and unify descriptions of augmentations (#859)
Made an attempt to...
- give all "+rep% company/faction" the same text
- make all augmentations with a single effect use a single line to describe the effect
- make all effects end with a period
* Made Cashroot starter kit display its tooltip with the money formatted properly and in gold
* fix typo in docs (#860)
* Initial code for Casino Card Deck implementation
* Casino Blackjack Implementation
* Update some tools (eslint, typescript)
* Blackjack code cleanup
* Update README_contribution
* Update ScriptHelpers.js (#861)
expand error message
* More augmentation typo fixes (#862)
* Add Netscript function getCurrentScript (#856)
Add netscript function that returns the current script.
* Added milestones menu to guide new players. (#865)
Milestone menu
* fix typos in milestones (#866)
Co-authored-by: sschmidTU <s.schmid@phonicscore.com>
* Corrupt location title when backdoor is installed (#864)
* Add corruptableText component
* Corrupt location title if backdoor is installed
* Formatting
* Add helper to check value of backdoorInstalled
Helper could be oneline but it would make it less readable
* Fix some formatting
* Add settings option to disable text effects
* Import useState
* getRunningScript (#867)
* Replaced getCurrentScript with getRunningScript
* Bunch of smaller fixes (#904)
Fix#884Fix#879Fix#878Fix#876Fix#874Fix#873Fix#887Fix#891Fix#895
* rework the early servers to be more noob friendly (#903)
* v0.51.6
Co-authored-by: Andreas Eriksson <2691182+AndreasTPC@users.noreply.github.com>
Co-authored-by: Jack <jackdewinter1@gmail.com>
Co-authored-by: Teun Pronk <5228255+Crownie88@users.noreply.github.com>
Co-authored-by: Pimvgd <Pimvgd@gmail.com>
Co-authored-by: Daniel Xie <daniel.xie@flockfreight.com>
Co-authored-by: Simon <33069673+sschmidTU@users.noreply.github.com>
Co-authored-by: sschmidTU <s.schmid@phonicscore.com>