This commit is contained in:
Olivier Gagnon 2021-08-10 20:54:43 -04:00
parent e18aa08eeb
commit 1e3af43ab3
7 changed files with 38 additions and 6 deletions

@ -8,6 +8,14 @@ v0.52.1 - 2021-07-10 bugfixing (hydroflame)
**Misc.** **Misc.**
* Fix game crash/corruption when quitting a job while working for it unfocused. * Fix game crash/corruption when quitting a job while working for it unfocused.
* Fix typo in corporation Market Data.
* Fix typo in docs for hackPercent.
* The tutorial encourages the players to connect to home before creating `n00dles.script`
* The dark web `buy` command now accepts `-1` (one) and `--list` instead of just
`-l`. Helps some confused players.
* Character overview screen no longer hidden on the corporation screen.
* Infiltration difficulty display is now more explicit (It's a big arrow instead
of just one word.)
v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community) v0.52.0 - 2021-06-13 Infiltration 2.0 (hydroflame & community)
-------------------------------------------------------------- --------------------------------------------------------------

@ -15,7 +15,7 @@ hackPercent() Netscript Function
Player can be acquired with the :doc:`getPlayer<../../basicfunctions/getPlayer>` function. Player can be acquired with the :doc:`getPlayer<../../basicfunctions/getPlayer>` function.
This function calculates the percentage of money hacked from a server. This function calculates the percentage of money hacked from a server.
Multiply this by thread count to know calculate the percentage for more than 1 thread. Multiply this by thread count to calculate the percentage for more than 1 thread.
Examples: Examples:

@ -23,7 +23,7 @@ export const CorporationUnlockUpgrades: IMap<any[]> = {
"3": [3, 5e9, "Market Data - Competition", "3": [3, 5e9, "Market Data - Competition",
"Mine and analyze market data to determine how much competition there is on the market " + "Mine and analyze market data to determine how much competition there is on the market " +
"for all resources. The competition attribute, which affects sales, will be displayed for " + "for all resources. The competition attribute, which affects sales, will be displayed for " +
"for every material and product."], "every material and product."],
"4": [4, 10e9, "VeChain", "4": [4, 10e9, "VeChain",
"Use AI and blockchain technology to identify where you can improve your supply chain systems. " + "Use AI and blockchain technology to identify where you can improve your supply chain systems. " +
"This upgrade will allow you to view a wide array of useful statistics about your " + "This upgrade will allow you to view a wide array of useful statistics about your " +

@ -35,7 +35,7 @@ export function executeDarkwebTerminalCommand(commandArray: string[]): void {
return; return;
} }
const arg = commandArray[1]; const arg = commandArray[1];
if (arg == "-l") { if (arg == "-l" || arg == "-1" || arg == "--list") {
listAllDarkwebItems(); listAllDarkwebItems();
} else { } else {
buyDarkwebItem(arg); buyDarkwebItem(arg);

@ -21,6 +21,25 @@ function diffStr(d: number): string {
return "impossible"; return "impossible";
} }
function arrowPart(color: string, length: number): JSX.Element {
let arrow = "";
if(length <= 0) length = 0;
else if(length > 13) length = 13;
else {
length--;
arrow = ">";
}
return <span style={{color: color}}>{"=".repeat(length)}{arrow}{" ".repeat(13-arrow.length-length)}</span>
}
function coloredArrow(difficulty: number): JSX.Element {
if(difficulty === 0) {
return <span style={{color: 'white'}}>{'>'}{" ".repeat(38)}</span>
} else {
return <>{arrowPart('white', difficulty*13)}{arrowPart('orange', (difficulty-1)*13)}{arrowPart('red', (difficulty-2)*13)}</>
}
}
export function Intro(props: IProps): React.ReactElement { export function Intro(props: IProps): React.ReactElement {
return (<> return (<>
<Grid container spacing={3}> <Grid container spacing={3}>
@ -28,7 +47,13 @@ export function Intro(props: IProps): React.ReactElement {
<h1>Infiltrating {props.Location}</h1> <h1>Infiltrating {props.Location}</h1>
</Grid> </Grid>
<Grid item xs={10}> <Grid item xs={10}>
<h2>Difficulty: {diffStr(props.Difficulty)}, Maximum level: {props.MaxLevel}</h2> <h2>Maximum level: {props.MaxLevel}</h2>
</Grid>
<Grid item xs={10}>
<pre>[{coloredArrow(props.Difficulty)}]</pre>
<pre> ^ ^ ^ ^</pre>
<pre> Trivial Normal Hard Impossible</pre>
</Grid> </Grid>
<Grid item xs={10}> <Grid item xs={10}>
<p>Infiltration is a series of short minigames that get <p>Infiltration is a series of short minigames that get

@ -259,7 +259,7 @@ function iTutorialEvaluateStep() {
Engine.loadTerminalContent(); Engine.loadTerminalContent();
iTutorialSetText("Hacking is the core mechanic of the game and is necessary for progressing. However, " + iTutorialSetText("Hacking is the core mechanic of the game and is necessary for progressing. However, " +
"you don't want to be hacking manually the entire time. You can automate your hacking " + "you don't want to be hacking manually the entire time. You can automate your hacking " +
"by writing scripts!<br><br>To create a new script or edit an existing one, you can use the <code class='interactive-tutorial-command'>nano</code> " + "by writing scripts!<br><br>First go to your home server with the <code class='interactive-tutorial-command'>home</code> command.<br><br>To create a new script or edit an existing one, you can use the <code class='interactive-tutorial-command'>nano</code> " +
"command. Scripts must end with the <code class='interactive-tutorial-command'>.script</code> extension. Let's make a script now by " + "command. Scripts must end with the <code class='interactive-tutorial-command'>.script</code> extension. Let's make a script now by " +
"entering <code class='interactive-tutorial-command'>nano n00dles.script</code> after the hack command finishes running (Sidenote: Pressing ctrl + c" + "entering <code class='interactive-tutorial-command'>nano n00dles.script</code> after the hack command finishes running (Sidenote: Pressing ctrl + c" +
" will end a command like hack early)"); " will end a command like hack early)");

@ -458,7 +458,6 @@ const Engine = {
loadCorporationContent: function() { loadCorporationContent: function() {
if (Player.corporation instanceof Corporation) { if (Player.corporation instanceof Corporation) {
Engine.hideAllContent(); Engine.hideAllContent();
document.getElementById("character-overview-wrapper").style.visibility = "hidden";
routing.navigateTo(Page.Corporation); routing.navigateTo(Page.Corporation);
Player.corporation.createUI(); Player.corporation.createUI();
} }