It is possible for a player to qualify for an aug through a faction and
not the gang, e.g. when the gang is newly formed and still getting up to
speed. So, we need to consider both gang qualifications and faction
qualifications when constructing the sleeve augmentation list.
After destroying a BitNode, the `resetIndustryResearchTrees` reset all
industries to the _base_ research tree, leaving the product industries
without the `uPgrade` researches in the graph. So corporations started
in the next BitNode were unable to expand product capacity.
This fixes that reset function to use the correct product industry tree.
Just realized that I checked for exactly equal (as would be likely when operating internally), but really, it should treat anything greater than or equal to as a zero growth scenario (just better protection from a wider range of potential issues)
implemented numCycleForGrowthByMultiplier (fully compatible with old growthAnalyze - though still slightly wrong, it does so in a way that could be seen as beneficial and is compatible with existing scripts)
Also some fixes to numCycleForGrowthByHackAmt (wrong parameter order)
* NOTE: the prehackMoney parameter can be removed and server.moneyMax used in its place. The return value would then give a thread count
* that would slowly grow the server more than it is hacked until reaching moneyMax where it would return the correct number of threads.
Spanning {node.name} across all three table columns in the Hacknet Node UI uses a bit less screen real estate, so that on larger font sizes you don't end up with e.g. "hacknet- " on one line and "node-11" on the next.
- Run in `Editor.beforeMount`, as well as when the
options modal is closed
- Recursively validates all token colors and
replaces them with bright red if they're invalid
- Ensure that customTheme is redefined whenever the options modal
is closed, regardless of saved or not
- Reset the pending value for the theme editor whenever modal is clsoed