"<i>hack(hostname/ip)</i><br>Core function that is used to try and hack servers to steal money and gain hacking experience. The argument passed in must be a string with "+
"either the IP or hostname of the server you want to hack. The runtime for this command depends on your hacking level and the target server's security level. "+
" A script can hack a server from anywhere. It does not need to be running on the same server to hack that server. "+
"must be a string with either the IP or hostname of the target server. The runtime for this command depends on your hacking level and the target server's security level. "+
"any server, regardless of where the script is running. This command requires root access to the target server, but "+
"there is no required hacking level to run the command. Grants 3 hacking exp when it completes. Works offline at a slower rate<br> Example: weaken('foodnstuff');<br><br>"+
"<i>nuke(hostname/ip)</i><br>Run NUKE.exe on the target server. NUKE.exe must exist on your home computer. Does NOT work while offline <br> Example: nuke('foodnstuff'); <br><br>"+
"<i>brutessh(hostname/ip)</i><br>Run BruteSSH.exe on the target server. BruteSSH.exe must exist on your home computer. Does NOT work while offline <br> Example: brutessh('foodnstuff');<br><br>"+
"<i>ftpcrack(hostname/ip)</i><br>Run FTPCrack.exe on the target server. FTPCrack.exe must exist on your home computer. Does NOT work while offline <br> Example: ftpcrack('foodnstuff');<br><br>"+
"<i>relaysmtp(hostname/ip)</i><br>Run relaySMTP.exe on the target server. relaySMTP.exe must exist on your home computer. Does NOT work while offline <br> Example: relaysmtp('foodnstuff');<br><br>"+
"<i>httpworm(hostname/ip)</i><br>Run HTTPWorm.exe on the target server. HTTPWorm.exe must exist on your home computer. Does NOT work while offline <br> Example: httpworm('foodnstuff');<br><br>"+
"<i>sqlinject(hostname/ip)</i><br>Run SQLInject.exe on the target server. SQLInject.exe must exist on your home computer. Does NOT work while offline <br> Example: sqlinject('foodnstuff');<br><br>"+
"<i>run(script)</i> <br> Run a script as a separate process. The argument that is passed in is the name of the script as a string. This function can only "+
"be used to run scripts located on the same server. Returns true if the script is successfully started, and false otherwise. Requires a significant amount "+
"of RAM to run this command. Does NOT work while offline <br>Example: run('hack-foodnstuff.script'); <br> The example above will try and launch the 'hack-foodnstuff.script' script on "+
"<i>exec(script, hostname/ip)</i><br>Run a script as a separate process on another server. The first argument is the name of the script as a string. The "+
"second argument is a string with the hostname or IP of the 'target server' on which to run the script. The specified script must exist on the target server. Returns "+
"true if the script is successfully started, and false otherwise. Does NOT work while offline<br> "+
"Example: exec('generic-hack.script', 'foodnstuff'); <br> The example above will try to launch the script 'generic-hack.script' on the 'foodnstuff' server.<br><br>"+
"<i>kill(script, [hostname/ip])</i><br> Kills a script on a server. The first argument must be a string with the name of the script. The name is case-sensitive. "+
"The second argument must be a string with the hostname or IP of the target server. The function will try to kill the specified script on the target server. "+
"The second argument is optional. If it is omitted, then the function will try to kill the specified script on the current server (the server running "+
"the script that calls this function). If the script is found on the specified server and is running, then it will be killed and this function "+
"will return true. Otherwise, this function will return false. <br> "+
"Example: kill('foo.script', 'foodnstuff');<br>"+
"Example: kill('foo.script');<br>"+
"The first example above will look for a script called 'foo.script' on the 'foodnstuff' server. If the script exists and is running, then it will "+
"be killed and the function will return true. Otherwise false will be returned. The second example above will do the same thing, except on the "+
"current server (the server running the script that calls the kill() function).<br><br>"+
"<i>killall(hostname/ip)</i><br> Kills all running scripts on the specified server. This function takes a single argument which "+
"must be a string containing the hostname or IP of the target server. This function will always return true. <br><br>"+
"<i>getServerMoneyAvailable(hostname/ip)</i><br> Returns the amount of money available on a server. The argument passed in must be a string with either the "+
"<i>getServerRequiredHackingLevel(hostname/ip)</i><br> Returns the required hacking level of a server. The argument passed in must be a string with either the "+
"hostname or IP or the target server. Does NOT work while offline <br><br>"+
"<i>fileExists(filename, [hostname/ip])</i><br> Returns a boolean (true or false) indicating whether the specified file exists on a server. "+
"The first argument must be a string with the name of the file. A file can either be a script or a program. A script name is case-sensitive, but a "+
"program is not. For example, fileExists('brutessh.exe') will work fine, even though the actual program is named BruteSSH.exe. <br><br> "+
"The second argument is a string with the hostname or IP of the server on which to search for the program. This second argument is optional. "+
"If it is omitted, then the function will search through the current server (the server running the script that calls this function) for the file. <br> "+
"The first example above will return true if the script named 'foo.script' exists on the 'foodnstuff' server, and false otherwise. The second example above will "+
"return true if the current server (the server on which this function runs) contains the FTPCrack.exe program, and false otherwise. <br><br>"+
"<i>isRunning(filename, [hostname/ip])</i><br> Returns a boolean (true or false) indicating whether the specified script is running on a server. "+
"The first argument must be a string with the name of the script. The script name is case sensitive. The second argument is a string with the "+
"hostname or IP of the target server. The function will check whether the script is running on that target server. The second argument is optional. "+
"If it is omitted, then the function will check if the script is running on the current server (the server running the script that calls this function). <br>"+
"The first example above will return true if there is a script called 'foo.script' is running on the 'foodnstuff' server, and false otherwise. The second "+
"example above will return true if there is a script called 'foo.script' running on the current server, and false otherwise. <br><br>"+
"<i>purchaseHacknetNode()</i><br> Purchases a new Hacknet Node. Returns a number with the index of the Hacknet Node. This index is equivalent to the number "+
"at the end of the Hacknet Node's name (e.g The Hacknet Node named 'hacknet-node-4' will have an index of 4). If the player cannot afford to purchase "+
"a new Hacknet Node then the function will return false. Does NOT work offline<br><br>"+
"<u><h1>Hacknet Nodes API</h1></u><br>"+
"Netscript provides the following API for accessing and upgrading your Hacknet Nodes through scripts. This API does NOT work offline.<br><br>"+
"<i>hacknetnodes</i><br> A special variable. This is an array that maps to the Player's Hacknet Nodes. The Hacknet Nodes are accessed through "+
"indexes. These indexes correspond to the number at the end of the name of the Hacknet Node. For example, the first Hacknet Node you purchase "+
"will have the same 'hacknet-node-0' and can be accessed with hacknetnodes[0]. The fourth Hacknet Node you purchase will have the name "+
"'hacknet-node-3' and can be accessed with hacknetnodes[3]. <br><br>"+
"<i>hacknetnodes.length</i><br> Returns the number of Hacknet Nodes that the player owns<br><br>"+
"<i>hacknetnodes[i].level</i><br> Returns the level of the corresponding Hacknet Node<br><br>"+
"<i>hacknetnodes[i].ram</i><br> Returns the amount of RAM on the corresponding Hacknet Node<br><br>"+
"<i>hacknetnodes[i].cores</i><br> Returns the number of cores on the corresponding Hacknet Node<br><br>"+
"<i>hacknetnodes[i].upgradeLevel(n)</i><br> Tries to upgrade the level of the corresponding Hacknet Node n times. The argument n must be a "+
"positive integer. Returns true if the Hacknet Node's level is successfully upgraded n times, and false otherwise.<br><br>"+
"<i>hacknetnodes[i].upgradeRam()</i><br> Tries to upgrade the amount of RAM on the corresponding Hacknet Node. Returns true if the "+
"RAM is successfully upgraded, and false otherwise. <br><br>"+
"<i>hacknetnodes[i].upgradeCore()</i><br> Attempts to purchase an additional core for the corresponding Hacknet Node. Returns true if the "+
"additional core is successfully purchase, and false otherwise. <br><br>"+
"Example: The following is an example of one way a script can be used to automate the purchasing and upgrading of Hacknet Nodes. "+
"This script purchases new Hacknet Nodes until the player has four. Then, it iteratively upgrades each of those four Hacknet Nodes "+
"to a level of at least 75, RAM to at least 8GB, and number of cores to at least 2.<br><br>"+
"This while loop above is an infinite loop (continuously runs until the script is manually stopped) that repeatedly runs the 'hack('foodnstuff')' command. "+
"-Major rebalancing (sorry didn't record specifics. But in general hacking gives more money "+
"and hacknet nodes give less)<br>"+
"-Server growth rate (both natural and manual using grow()) doubled<br>"+
"-Added option to Soft Reset<br>"+
"-Cancelling a full time job early now only results in halved gains for reputation. Exp and money earnings are gained in full<br>"+
"-Added exec() Netscript command, used to run scripts on other servers. <br>"+
"-NEW HACKING MECHANICS: Whenever a server is hacked, its 'security level' is increased by a very small amount. "+
"The security level is denoted by a number between 1-100. A higher security level makes it harder "+
"to hack a server and also decreases the amount of money you steal from it. Two Netscript functions, "+
"weaken() and getServerSecurityLevel() level, were added. The weaken(server) function lowers a server's "+
"security level. See the Netscript documentation for more details<br>"+
"-When donating to factions, the base rate is now $1,000,000 for 1 reputation point. Before, it was "+
"$1,000 for 1 reputation point.<br>"+
"-Monetary costs for all Augmentations increased. They are now about ~3.3 - 3.75 times more expensive than before<br><br>"+
"v0.17.1 <br>"+
"-Fixed issue with purchasing Augmentations that are 'upgrades' and require previous Augmentations to be installed<br>"+
"-Increased the percentage of money stolen from servers when hacking<br><br>"+
"v0.17<br>"+
"-Greatly increased amount of money gained for crimes (by about 400% for most crimes)<br>"+
"-Criminal factions require slightly less negative karma to get invited to<br>"+
"-Increased the percentage of money stolen from servers when hacking<br>"+
"-Increased the starting amount of money available on beginning servers (servers with <50 required hacking))<br>"+
"-Increased the growth rate of servers (both naturally and manually when using the grow() command in a script)<br>"+
"-Added getHostname() command in Netscript that returns the hostname of the server a script is running on<br>"+
"-jQuery preventDefault() called when pressing ctrl+b in script editor<br>"+
"-The Neuroflux Governor augmentation (the one that can be repeatedly leveled up) now increases ALL multipliers by 1%. To balance it out, it's price multiplier when it levels up was increased<br>"+
"-Hacknet Node base production decreased from $1.75/s to $1.65/s<br>"+
"-Fixed issue with nested for loops in Netscript (stupid Javascript references)<br>"+
"-Added 'scp' command to Terminal and Netscript<br>"+
"-Slightly nerfed Hacknet Node Kernel DNI and Hacknet Node Core DNI Augmentations<br>"+
"-Increased TOR Router cost to $200k<br><br>"+
"v0.16<br>"+
"-New Script Editor interface <br>"+
"-Rebalanced hacknet node - Increased base production but halved the multiplier from additional cores. This should boost its early-game production but nerf its late-game production<br>"+
"-Player now starts with 8GB of RAM on home computer<br>"+
"-'scan-analyze' terminal command displays RAM on servers<br>"+
"-Slightly buffed the amount of money the player steals when hacking servers (by about ~8%)<br>"+
"-Time to execute grow() now depends on hacking skill and server security, rather than taking a flat 2 minutes.<br>"+
"-Clicking outside of a pop-up dialog box will now close it<br>"+
"-BruteSSH.exe takes 33% less time to create<br>"+
"-'iron-gym' and 'max-hardware' servers now have 2GB of RAM<br>"+
"-Buffed job salaries across the board<br>"+
"-Updated Tutorial<br>"+
"-Created a Hacknet Node API for Netscript that allows you to access and upgrade your Hacknet Nodes. See the Netscript documentation for more details. WARNING The old upgradeHacknetNode() and getNumHacknetNodes() functions waere removed so any script that has these will no longer work <br><br>"+
"v0.15 <br>"+
"-Slightly reduced production multiplier for Hacknet Node RAM<br>"+
"-Faction pages now scroll<br>"+
"-Slightly increased amount of money gained from hacking<br>"+
"-Added 'alias' command<br>"+
"-Added 'scan-analyze' terminal command - used to get basic hacking info about all immediate network connections<br>"+
"-Fixed bugs with upgradeHacknetNode() and purchaseHacknetNode() commands<br>"+
"-Added getNumHacknetNodes() and hasRootAccess(hostname/ip) commands to Netscript<br>"+
"-Increased Cost of university classes/gym<br>"+
"-You can now see what an Augmentation does and its price even while its locked<br><br>",