2017-08-30 19:44:29 +02:00
let CONSTANTS = {
2018-07-05 06:52:54 +02:00
Version : "0.39.1" ,
2017-07-25 04:51:03 +02:00
2017-05-07 12:04:54 +02:00
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
2017-07-25 04:51:03 +02:00
//the player will have this level assuming no multipliers. Multipliers can cause skills to go above this.
2017-03-31 23:47:06 +02:00
MaxSkillLevel : 975 ,
2017-07-25 04:51:03 +02:00
2017-02-09 23:40:55 +01:00
//How much reputation is needed to join a megacorporation's faction
CorpFactionRepRequirement : 250000 ,
2017-07-25 04:51:03 +02:00
2017-04-27 22:02:58 +02:00
/* Base costs */
2018-01-27 07:52:39 +01:00
BaseCostFor1GBOfRamHome : 32000 ,
BaseCostFor1GBOfRamServer : 55000 , //1 GB of RAM
2017-05-15 18:54:23 +02:00
BaseCostFor1GBOfRamHacknetNode : 30000 ,
2017-07-25 04:51:03 +02:00
2018-06-04 03:09:12 +02:00
TravelCost : 200000 ,
2017-04-27 22:02:58 +02:00
BaseCostForHacknetNode : 1000 ,
2017-05-24 07:05:31 +02:00
BaseCostForHacknetNodeCore : 500000 ,
2017-07-25 04:51:03 +02:00
2017-04-27 22:02:58 +02:00
/* Hacknet Node constants */
2017-07-30 21:11:30 +02:00
HacknetNodeMoneyGainPerLevel : 1.6 ,
2017-07-13 18:54:29 +02:00
HacknetNodePurchaseNextMult : 1.85 , //Multiplier when purchasing an additional hacknet node
2017-08-01 21:03:45 +02:00
HacknetNodeUpgradeLevelMult : 1.04 , //Multiplier for cost when upgrading level
HacknetNodeUpgradeRamMult : 1.28 , //Multiplier for cost when upgrading RAM
HacknetNodeUpgradeCoreMult : 1.48 , //Multiplier for cost when buying another core
2017-07-25 04:51:03 +02:00
2017-05-16 05:06:25 +02:00
HacknetNodeMaxLevel : 200 ,
2017-05-16 00:22:17 +02:00
HacknetNodeMaxRam : 64 ,
HacknetNodeMaxCores : 16 ,
2017-07-25 04:51:03 +02:00
2017-06-20 18:11:33 +02:00
/* Faction and Company favor */
2017-08-13 07:01:33 +02:00
FactionReputationToFavorBase : 500 ,
2017-08-03 06:21:15 +02:00
FactionReputationToFavorMult : 1.02 ,
2017-08-13 07:01:33 +02:00
CompanyReputationToFavorBase : 500 ,
2017-08-03 06:21:15 +02:00
CompanyReputationToFavorMult : 1.02 ,
2017-05-07 12:04:54 +02:00
/* Augmentation */
//NeuroFlux Governor cost multiplier as you level up
2017-07-13 18:54:29 +02:00
NeuroFluxGovernorLevelMult : 1.14 ,
2017-07-25 04:51:03 +02:00
2018-03-03 22:05:33 +01:00
/* Netscript Constants */
2017-06-05 17:31:46 +02:00
//RAM Costs for different commands
2018-06-22 21:39:15 +02:00
ScriptBaseRamCost : 1.6 ,
2018-06-14 21:51:06 +02:00
ScriptDomRamCost : 100 ,
2018-06-22 21:39:15 +02:00
ScriptWhileRamCost : 0 ,
ScriptForRamCost : 0 ,
ScriptIfRamCost : 0 ,
2017-06-06 03:34:00 +02:00
ScriptHackRamCost : 0.1 ,
2017-06-05 16:31:47 +02:00
ScriptGrowRamCost : 0.15 ,
ScriptWeakenRamCost : 0.15 ,
2017-06-28 06:11:27 +02:00
ScriptScanRamCost : 0.2 ,
2018-01-27 07:52:39 +01:00
ScriptPortProgramRamCost : 0.05 ,
ScriptRunRamCost : 1.0 ,
ScriptExecRamCost : 1.3 ,
2018-02-15 05:26:43 +01:00
ScriptSpawnRamCost : 2.0 ,
2018-01-27 07:52:39 +01:00
ScriptScpRamCost : 0.6 ,
2017-08-13 07:01:33 +02:00
ScriptKillRamCost : 0.5 , //Kill and killall
2017-05-30 01:12:57 +02:00
ScriptHasRootAccessRamCost : 0.05 ,
2017-09-19 20:38:03 +02:00
ScriptGetHostnameRamCost : 0.05 , //getHostname() and getIp()
2017-10-12 04:00:22 +02:00
ScriptGetHackingLevelRamCost : 0.05 , //getHackingLevel()
2017-09-19 20:38:03 +02:00
ScriptGetMultipliersRamCost : 4.0 , //getHackingMultipliers() and getBitNodeMultipliers()
2018-01-27 07:52:39 +01:00
ScriptGetServerRamCost : 0.1 ,
2017-06-05 19:50:32 +02:00
ScriptFileExistsRamCost : 0.1 ,
ScriptIsRunningRamCost : 0.1 ,
2018-07-15 02:25:50 +02:00
ScriptHacknetNodesRamCost : 4.0 , //Base cost for accessing Hacknet Node API
2017-07-25 04:51:03 +02:00
ScriptHNUpgLevelRamCost : 0.4 ,
2017-05-25 14:18:34 +02:00
ScriptHNUpgRamRamCost : 0.6 ,
ScriptHNUpgCoreRamCost : 0.8 ,
2017-07-13 18:54:29 +02:00
ScriptGetStockRamCost : 2.0 ,
ScriptBuySellStockRamCost : 2.5 ,
2018-01-27 07:52:39 +01:00
ScriptPurchaseServerRamCost : 2.25 ,
2017-07-13 18:54:29 +02:00
ScriptRoundRamCost : 0.05 ,
2017-07-22 00:54:55 +02:00
ScriptReadWriteRamCost : 1.0 ,
2017-08-13 07:01:33 +02:00
ScriptArbScriptRamCost : 1.0 , //Functions that apply to all scripts regardless of args
2017-08-30 19:44:29 +02:00
ScriptGetScriptRamCost : 0.1 ,
ScriptGetHackTimeRamCost : 0.05 ,
ScriptSingularityFn1RamCost : 1 ,
ScriptSingularityFn2RamCost : 2 ,
ScriptSingularityFn3RamCost : 3 ,
2017-07-25 04:51:03 +02:00
2018-06-08 17:51:48 +02:00
ScriptBladeburnerApiBaseRamCost : 4 ,
2018-03-03 22:05:33 +01:00
NumNetscriptPorts : 20 ,
2017-05-31 18:45:30 +02:00
//Server constants
2017-08-01 21:03:45 +02:00
ServerBaseGrowthRate : 1.03 , //Unadjusted Growth rate
2017-09-15 16:06:59 +02:00
ServerMaxGrowthRate : 1.0035 , //Maximum possible growth rate (max rate accounting for server security)
2017-06-06 23:22:57 +02:00
ServerFortifyAmount : 0.002 , //Amount by which server's security increases when its hacked/grown
2017-09-15 16:06:59 +02:00
ServerWeakenAmount : 0.05 , //Amount by which server's security decreases when weakened
2017-07-25 04:51:03 +02:00
2017-07-27 04:56:14 +02:00
PurchasedServerLimit : 25 ,
2018-05-23 02:09:04 +02:00
PurchasedServerMaxRam : 1048576 , //2^20
2017-07-27 04:56:14 +02:00
2017-06-01 01:39:03 +02:00
//Augmentation Constants
2017-06-07 04:33:50 +02:00
AugmentationCostMultiplier : 5 , //Used for balancing costs without having to readjust every Augmentation cost
2017-07-03 21:42:11 +02:00
AugmentationRepMultiplier : 2.5 , //Used for balancing rep cost without having to readjust every value
MultipleAugMultiplier : 1.9 ,
2017-07-25 04:51:03 +02:00
2017-04-13 22:21:03 +02:00
//How much a TOR router costs
2017-05-30 04:29:57 +02:00
TorRouterCost : 200000 ,
2017-07-25 04:51:03 +02:00
2017-06-28 22:53:12 +02:00
//Infiltration constants
2018-06-25 04:50:03 +02:00
InfiltrationBribeBaseAmount : 100e3 , //Amount per clearance level
2018-07-04 04:12:46 +02:00
InfiltrationMoneyValue : 5e3 , //Convert "secret" value to money
2017-10-12 04:00:22 +02:00
InfiltrationRepValue : 1.4 , //Convert "secret" value to faction reputation
2017-07-25 04:51:03 +02:00
2017-07-03 21:42:11 +02:00
//Stock market constants
2017-11-09 02:55:21 +01:00
WSEAccountCost : 200e6 ,
TIXAPICost : 5e9 ,
StockMarketCommission : 100e3 ,
2017-07-25 04:51:03 +02:00
2017-07-03 21:42:11 +02:00
//Hospital/Health
2017-11-09 02:55:21 +01:00
HospitalCostPerHp : 100e3 ,
2017-07-25 04:51:03 +02:00
2017-09-15 16:06:59 +02:00
//Intelligence-related constants
IntelligenceCrimeWeight : 0.05 , //Weight for how much int affects crime success rates
IntelligenceInfiltrationWeight : 0.1 , //Weight for how much int affects infiltration success rates
2017-10-02 04:35:22 +02:00
IntelligenceCrimeBaseExpGain : 0.001 ,
2017-10-04 03:50:13 +02:00
IntelligenceProgramBaseExpGain : 500 , //Program required hack level divided by this to determine int exp gain
2017-09-15 16:06:59 +02:00
IntelligenceTerminalHackBaseExpGain : 200 , //Hacking exp divided by this to determine int exp gain
2017-10-15 03:55:41 +02:00
IntelligenceSingFnBaseExpGain : 0.002 ,
2017-10-10 06:56:48 +02:00
IntelligenceClassBaseExpGain : 0.000001 ,
IntelligenceHackingMissionBaseExpGain : 0.03 , //Hacking Mission difficulty multiplied by this to get exp gain
2017-09-19 20:38:03 +02:00
//Hacking Missions
2017-10-02 04:35:22 +02:00
HackingMissionRepToDiffConversion : 10000 , //Faction rep is divided by this to get mission difficulty
2017-10-10 06:56:48 +02:00
HackingMissionRepToRewardConversion : 7 , //Faction rep divided byt his to get mission rep reward
2017-12-03 05:19:49 +01:00
HackingMissionSpamTimeIncrease : 25000 , //How much time limit increase is gained when conquering a Spam Node (ms)
2017-09-26 04:44:33 +02:00
HackingMissionTransferAttackIncrease : 1.05 , //Multiplier by which the attack for all Core Nodes is increased when conquering a Transfer Node
2017-10-10 06:56:48 +02:00
HackingMissionMiscDefenseIncrease : 1.05 , //The amount by which every misc node's defense is multiplied when one is conquered
2017-12-07 04:45:47 +01:00
HackingMissionDifficultyToHacking : 135 , //Difficulty is multiplied by this to determine enemy's "hacking" level (to determine effects of scan/attack, etc)
2017-09-26 04:44:33 +02:00
HackingMissionHowToPlay : "Hacking missions are a minigame that, if won, will reward you with faction reputation.<br><br>" +
"In this game you control a set of Nodes and use them to try and defeat an enemy. Your Nodes " +
2017-09-27 17:13:42 +02:00
"are colored blue, while the enemy's are red. There are also other nodes on the map colored gray " +
2017-09-26 04:44:33 +02:00
"that initially belong to neither you nor the enemy. The goal of the game is " +
2017-12-07 04:45:47 +01:00
"to capture all of the enemy's Database nodes within the time limit. " +
"If you fail to do this, you will lose.<br><br>" +
2017-09-26 04:44:33 +02:00
"Each Node has three stats: Attack, Defense, and HP. There are five different actions that " +
"a Node can take:<br><br> " +
2017-09-27 17:13:42 +02:00
"Attack - Targets an enemy Node and lowers its HP. The effectiveness is determined by the owner's Attack, the Player's " +
2017-12-07 04:45:47 +01:00
"hacking level, and the enemy's defense.<br><br>" +
2017-09-27 17:13:42 +02:00
"Scan - Targets an enemy Node and lowers its Defense. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the " +
2017-12-07 04:45:47 +01:00
"enemy's defense.<br><br>" +
2017-09-27 17:13:42 +02:00
"Weaken - Targets an enemy Node and lowers its Attack. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the enemy's " +
2017-12-07 04:45:47 +01:00
"defense.<br><br>" +
"Fortify - Raises the Node's Defense. The effectiveness is determined by your hacking level.<br><br>" +
2017-09-27 17:13:42 +02:00
"Overflow - Raises the Node's Attack but lowers its Defense. The effectiveness is determined by your hacking level.<br><br>" +
"Note that when determining the effectiveness of the above actions, the TOTAL Attack or Defense of the team is used, not just the " +
2017-10-15 03:55:41 +02:00
"Attack/Defense of the individual Node that is performing the action.<br><br>" +
2017-09-27 17:13:42 +02:00
"To capture a Node, you must lower its HP down to 0.<br><br>" +
2017-09-26 04:44:33 +02:00
"There are six different types of Nodes:<br><br>" +
2017-12-07 04:45:47 +01:00
"CPU Core - These are your main Nodes that are used to perform actions. Capable of performing every action<br><br>" +
"Firewall - Nodes with high defense. These Nodes can 'Fortify'<br><br>" +
2017-09-26 04:44:33 +02:00
"Database - A special type of Node. The player's objective is to conquer all of the enemy's Database Nodes within " +
2017-12-07 04:45:47 +01:00
"the time limit. These Nodes cannot perform any actions<br><br>" +
2017-09-26 04:44:33 +02:00
"Spam - Conquering one of these Nodes will slow the enemy's trace, giving the player additional time to complete " +
2017-12-07 04:45:47 +01:00
"the mission. These Nodes cannot perform any actions<br><br>" +
2017-09-26 04:44:33 +02:00
"Transfer - Conquering one of these nodes will increase the Attack of all of your CPU Cores by a small fixed percentage. " +
2017-12-07 04:45:47 +01:00
"These Nodes are capable of performing every action except the 'Attack' action<br><br>" +
"Shield - Nodes with high defense. These Nodes can 'Fortify'<br><br>" +
"To assign an action to a Node, you must first select one of your Nodes. This can be done by simply clicking on it. Double-clicking " +
"a node will select all of your Nodes of the same type (e.g. select all CPU Core Nodes or all Transfer Nodes). Note that only Nodes " +
"that can perform actions (CPU Core, Transfer, Shield, Firewall) can be selected. Selected Nodes will be denoted with a white highlight. After selecting a Node or multiple Nodes, " +
2017-09-27 17:13:42 +02:00
"select its action using the Action Buttons near the top of the screen. Every action also has a corresponding keyboard " +
2017-10-15 03:55:41 +02:00
"shortcut.<br><br>" +
2017-09-26 04:44:33 +02:00
"For certain actions such as attacking, scanning, and weakening, the Node performing the action must have a target. To target " +
2017-10-02 04:35:22 +02:00
"another node, simply click-and-drag from the 'source' Node to a target. A Node can only have one target, and you can target " +
"any Node that is adjacent to one of your Nodes (immediately above, below, or to the side. NOT diagonal). Furthermore, only CPU Cores and Transfer Nodes " +
2017-12-07 04:45:47 +01:00
"can target, since they are the only ones that can perform the related actions. To remove a target, you can simply click on the line that represents " +
2017-09-27 17:13:42 +02:00
"the connection between one of your Nodes and its target. Alternatively, you can select the 'source' Node and click the 'Drop Connection' button, " +
2017-10-02 05:27:42 +02:00
"or press 'd'.<br><br>" +
"Other Notes:<br><br>" +
2017-10-10 06:56:48 +02:00
"-Whenever a miscellenaous Node (not owned by the player or enemy) is conquered, the defense of all remaining miscellaneous Nodes that " +
"are not actively being targeted will increase by a fixed percentage.<br><br>" +
"-Whenever a Node is conquered, its stats are significantly reduced<br><br>" +
"-Miscellaneous Nodes slowly raise their defense over time<br><br>" +
2017-10-15 03:55:41 +02:00
"-Nodes slowly regenerate health over time." ,
2017-09-26 04:44:33 +02:00
2017-09-15 16:06:59 +02:00
2017-08-13 07:01:33 +02:00
//Gang constants
GangRespectToReputationRatio : 2 , //Respect is divided by this to get rep gain
MaximumGangMembers : 20 ,
GangRecruitCostMultiplier : 2 ,
GangTerritoryUpdateTimer : 150 ,
2017-04-18 06:32:17 +02:00
MillisecondsPer20Hours : 72000000 ,
GameCyclesPer20Hours : 72000000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-19 07:02:40 +02:00
MillisecondsPer10Hours : 36000000 ,
GameCyclesPer10Hours : 36000000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-18 06:32:17 +02:00
MillisecondsPer8Hours : 28800000 ,
GameCyclesPer8Hours : 28800000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-19 23:39:25 +02:00
MillisecondsPer4Hours : 14400000 ,
GameCyclesPer4Hours : 14400000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-05-04 07:27:22 +02:00
MillisecondsPer2Hours : 7200000 ,
GameCyclesPer2Hours : 7200000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-18 06:32:17 +02:00
MillisecondsPerHour : 3600000 ,
GameCyclesPerHour : 3600000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-24 03:43:41 +02:00
MillisecondsPerHalfHour : 1800000 ,
GameCyclesPerHalfHour : 1800000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-05-04 07:27:22 +02:00
MillisecondsPerQuarterHour : 900000 ,
GameCyclesPerQuarterHour : 900000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-05-24 17:32:45 +02:00
MillisecondsPerFiveMinutes : 300000 ,
GameCyclesPerFiveMinutes : 300000 / 200 ,
2017-07-25 04:51:03 +02:00
2017-04-20 10:29:07 +02:00
FactionWorkHacking : "Faction Hacking Work" ,
FactionWorkField : "Faction Field Work" ,
FactionWorkSecurity : "Faction Security Work" ,
2017-07-25 04:51:03 +02:00
2017-04-24 21:10:35 +02:00
WorkTypeCompany : "Working for Company" ,
2017-05-10 19:42:46 +02:00
WorkTypeCompanyPartTime : "Working for Company part-time" ,
2017-04-24 21:10:35 +02:00
WorkTypeFaction : "Working for Faction" ,
WorkTypeCreateProgram : "Working on Create a Program" ,
WorkTypeStudyClass : "Studying or Taking a class at university" ,
2017-05-03 19:52:54 +02:00
WorkTypeCrime : "Committing a crime" ,
2017-07-25 04:51:03 +02:00
2017-04-24 21:10:35 +02:00
ClassStudyComputerScience : "studying Computer Science" ,
ClassDataStructures : "taking a Data Structures course" ,
ClassNetworks : "taking a Networks course" ,
ClassAlgorithms : "taking an Algorithms course" ,
2017-04-25 21:14:01 +02:00
ClassManagement : "taking a Management course" ,
ClassLeadership : "taking a Leadership course" ,
2017-05-10 19:42:46 +02:00
ClassGymStrength : "training your strength at a gym" ,
ClassGymDefense : "training your defense at a gym" ,
ClassGymDexterity : "training your dexterity at a gym" ,
ClassGymAgility : "training your agility at a gym" ,
2017-07-25 04:51:03 +02:00
2017-08-01 21:03:45 +02:00
ClassDataStructuresBaseCost : 40 ,
ClassNetworksBaseCost : 80 ,
ClassAlgorithmsBaseCost : 320 ,
ClassManagementBaseCost : 160 ,
ClassLeadershipBaseCost : 320 ,
2017-07-05 18:49:01 +02:00
ClassGymBaseCost : 120 ,
2017-07-25 04:51:03 +02:00
2017-10-12 04:00:22 +02:00
CrimeSingFnDivider : 2 , //Factor by which exp/profit is reduced when commiting crime through Sing Fn
2017-05-03 19:52:54 +02:00
CrimeShoplift : "shoplift" ,
2017-08-01 21:03:45 +02:00
CrimeRobStore : "rob a store" ,
2017-05-03 19:52:54 +02:00
CrimeMug : "mug someone" ,
2017-08-01 21:03:45 +02:00
CrimeLarceny : "commit larceny" ,
2017-05-03 19:52:54 +02:00
CrimeDrugs : "deal drugs" ,
2017-10-12 04:00:22 +02:00
CrimeBondForgery : "forge corporate bonds" ,
2017-05-03 19:52:54 +02:00
CrimeTraffickArms : "traffick illegal arms" ,
CrimeHomicide : "commit homicide" ,
2017-05-08 18:00:34 +02:00
CrimeGrandTheftAuto : "commit grand theft auto" ,
2017-05-03 19:52:54 +02:00
CrimeKidnap : "kidnap someone for ransom" ,
2017-05-08 18:00:34 +02:00
CrimeAssassination : "assassinate a high-profile target" ,
CrimeHeist : "pull off the ultimate heist" ,
2017-07-25 04:51:03 +02:00
2017-03-31 23:47:06 +02:00
/* Tutorial related things */
2017-07-25 04:51:03 +02:00
TutorialNetworkingText : "Servers are a central part of the game. You start with a single personal server (your home computer) " +
"and you can purchase additional servers as you progress through the game. Connecting to other servers " +
"and hacking them can be a major source of income and experience. Servers can also be used to run " +
"scripts which can automatically hack servers for you. <br><br>" +
2017-06-28 06:11:27 +02:00
"In order to navigate between machines, use the 'scan' or 'scan-analyze' Terminal command to see all servers " +
2017-07-25 04:51:03 +02:00
"that are reachable from your current server. Then, you can use the 'connect [hostname/ip]' " +
"command to connect to one of the available machines. <br><br>" +
2017-04-05 23:09:37 +02:00
"The 'hostname' and 'ifconfig' commands can be used to display the hostname/IP of the " +
"server you are currently connected to." ,
2017-07-25 04:51:03 +02:00
TutorialHackingText : "In the year 2077, currency has become digital and decentralized. People and corporations " +
"store their money on servers. By hacking these servers, you can steal their money and gain " +
"experience. <br><br>" +
"<h1>Gaining root access</h1> <br>" +
"The key to hacking a server is to gain root access to that server. This can be done using " +
"the NUKE virus (NUKE.exe). You start the game with a copy of the NUKE virus on your home " +
"computer. The NUKE virus attacks the target server's open ports using buffer overflow " +
"exploits. When successful, you are granted root administrative access to the machine. <br><br>" +
"Typically, in order for the NUKE virus to succeed, the target server needs to have at least " +
2017-04-05 23:09:37 +02:00
"one of its ports opened. Some servers have no security and will not need any ports opened. Some " +
2017-07-25 04:51:03 +02:00
"will have very high security and will need many ports opened. In order to open ports on another " +
2017-04-05 23:09:37 +02:00
"server, you will need to run programs that attack the server to open specific ports. These programs " +
2017-07-25 04:51:03 +02:00
"can be coded once your hacking skill gets high enough, or they can be purchased if you can find " +
2017-04-13 19:33:34 +02:00
"a seller. <br><br>" +
2017-07-25 04:51:03 +02:00
"In order to determine how many ports need to be opened to successfully NUKE a server, connect to " +
"that server and run the 'analyze' command. This will also show you which ports have already been " +
2017-05-31 19:37:32 +02:00
"opened. <br><br>" +
2017-07-25 04:51:03 +02:00
"Once you have enough ports opened and have ran the NUKE virus to gain root access, the server " +
"can then be hacked by simply calling the 'hack' command through terminal, or by using a script.<br><br>" +
"<h1>Hacking mechanics</h1><br>" +
"When you execute the hack command, either manually through the terminal or automatically through " +
"a script, you attempt to hack the server. This action takes time. The more advanced a server's " +
"security is, the more time it will take. Your hacking skill level also affects the hacking time, " +
"with a higher hacking skill leading to shorter hacking times. Also, running the hack command " +
"manually through terminal is faster than hacking from a script. <br><br>" +
"Your attempt to hack a server will not always succeed. The chance you have to successfully hack a " +
"server is also determined by the server's security and your hacking skill level. Even if your " +
"hacking attempt is unsuccessful, you will still gain experience points. <br><br>" +
"When you successfully hack a server. You steal a certain percentage of that server's total money. This " +
"percentage is determined by the server's security and your hacking skill level. The amount of money " +
2017-04-12 04:05:21 +02:00
"on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will " +
2017-06-06 23:22:57 +02:00
"encounter diminishing returns in your hacking (since you are only hacking a certain percentage). You can " +
"increase the amount of money on a server using a script and the grow() function in Netscript.<br><br>" +
2017-07-25 04:51:03 +02:00
"<h1>Server Security</h1><br>" +
2017-09-19 20:38:03 +02:00
"Each server has a security level, typically between 1 and 100. A higher number means the server has stronger security. " +
"It is possible for a server to have a security level of 100 or higher, in which case hacking that server " +
"will become impossible (0% chance to hack).<br><br>" +
"As mentioned above, a server's security level is an important factor " +
2017-05-31 19:37:32 +02:00
"to consider when hacking. You can check a server's security level using the 'analyze' command, although this " +
2017-07-25 04:51:03 +02:00
"only gives an estimate (with 5% uncertainty). You can also check a server's security in a script, using the " +
"<i>getServerSecurityLevel(server)</i> function in Netscript. See the Netscript documentation for more details. " +
"This function will give you an exact value for a server's security. <br><br>" +
"Whenever a server is hacked manually or through a script, its security level increases by a small amount. Calling " +
"the grow() command in a script will also increase security level of the target server. These actions will " +
"make it harder for you to hack the server, and decrease the amount of money you can steal. You can lower a " +
"server's security level in a script using the <i>weaken(server)</i> function in Netscript. See the Netscript " +
2017-08-18 19:20:51 +02:00
"documentation for more details.<br><br>" +
"A server has a minimum security level that is equal to one third of its starting security, rounded to the " +
"nearest integer. To be more precise:<br><br>" +
"server.minSecurityLevel = Math.max(1, Math.round(server.startingSecurityLevel / 3))<br><br>" +
"This means that a server's security will not fall below this value if you are trying to weaken it." ,
2017-07-25 04:51:03 +02:00
TutorialScriptsText : "Scripts can be used to automate the hacking process. Scripts must be written in the Netscript language. " +
"Documentation about the Netscript language can be found in the 'Netscript Programming Language' " +
2017-06-02 18:49:14 +02:00
"section of this 'Tutorial' page. <br><br> " +
2017-07-25 04:51:03 +02:00
"<strong>It is highly recommended that you have a basic background in programming to start writing scripts. " +
"You by no means need to be an expert. All you need is some familiarity with basic programming " +
"constructs like for/while loops, if statements, " +
"functions, variables, etc. The Netscript programming language most resembles the Javascript language. " +
2017-06-02 19:04:43 +02:00
"Therefore, a good beginner's programming tutorial to read might be <a href='https://www.w3schools.com/js/default.asp' target='_blank'>" +
2017-07-25 04:51:03 +02:00
"this one</a>. Note that while the Netscript language is similar to Javascript, it is not the exact same, so the " +
"syntax will vary a little bit. </strong> <br><br>" +
"Running a script requires RAM. The more complex a script is, the more RAM " +
"it requires to run. Scripts can be run on any server you have root access to. <br><br>" +
"Here are some Terminal commands that are useful when working with scripts: <br><br>" +
"<i>check [script] [args...]</i><br>Prints the logs of the script specified by the name and arguments to Terminal. Arguments should be separated " +
"by a space. Note that scripts are uniquely " +
"identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the argument 'foodnstuff' then in order to 'check' it you must " +
"also add the 'foodnstuff' argument to the check command as so: <br>check foo.script foodnstuff<br><br>" +
"<i>free</i><br>Shows the current server's RAM usage and availability <br><br>" +
"<i>kill [script] [args...]</i><br>Stops a script that is running with the specified script name and arguments. " +
2017-06-17 04:53:57 +02:00
"Arguments should be separated by a space. Note that " +
2017-07-25 04:51:03 +02:00
"scripts are uniquely identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the " +
"argument 1 and 2, then just typing 'kill foo.script' will not work. You have to use 'kill foo.script 1 2'. <br><br>" +
2017-06-17 04:53:57 +02:00
"<i>mem [script] [-t] [n]</i><br>Check how much RAM a script requires to run with n threads<br><br>" +
2017-07-25 04:51:03 +02:00
"<i>nano [script]</i><br>Create/Edit a script. The name of the script must end with the '.script' extension <br><br>" +
"<i>ps</i><br>Displays all scripts that are actively running on the current server<br><br>" +
"<i>rm [script]</i><br>Delete a script<br><br>" +
"<i>run [script] [-t] [n] [args...]</i><br>Run a script with n threads and the specified arguments. Each argument should be separated by a space. " +
"Both the arguments and thread specification are optional. If neither are specified, then the script will be run single-threaded with no arguments.<br>" +
"Examples:<br>run foo.script<br>The command above will run 'foo.script' single-threaded with no arguments." +
"<br>run foo.script -t 10<br>The command above will run 'foo.script' with 10 threads and no arguments." +
2017-06-17 04:53:57 +02:00
"<br>run foo.script foodnstuff sigma-cosmetics 10<br>The command above will run 'foo.script' single-threaded with three arguments: [foodnstuff, sigma-cosmetics, 10]" +
2017-07-25 04:51:03 +02:00
"<br>run foo.script -t 50 foodnstuff<br>The command above will run 'foo.script' with 50 threads and a single argument: [foodnstuff]<br><br>" +
"<i>tail [script] [args...]</i><br>Displays the logs of the script specified by the name and arguments. Note that scripts are uniquely " +
"identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the argument 'foodnstuff' then in order to 'tail' it you must " +
"also add the 'foodnstuff' argument to the tail command as so: <br>tail foo.script foodnstuff<br><br>" +
"<i>top</i><br>Displays all active scripts and their RAM usage <br><br>" +
"<u><h1> Multithreading scripts </h1></u><br>" +
"Scripts can be multithreaded. A multithreaded script runs the script's code once in each thread. The result is that " +
2017-08-18 19:20:51 +02:00
"every call to the hack(), grow(), and weaken() Netscript functions will have its effect multiplied by the number of threads. " +
2017-07-25 04:51:03 +02:00
"For example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would " +
2017-06-11 08:52:52 +02:00
"yield $50,000. <br><br> " +
2017-07-25 04:51:03 +02:00
"When multithreading a script, the total RAM cost can be calculated by simply multiplying the base RAM cost of the script " +
"with the number of threads, where the base cost refers to the amount of RAM required to run the script single-threaded. " +
"In the terminal, you can run the " +
"'mem [scriptname] -t n' command to see how much RAM a script requires with n threads. <br><br>" +
"Every method for running a script has an option for making it multihreaded. To run a script with " +
"n threads from a Terminal: <br>" +
"run [scriptname] -t n<br><br>" +
"Using Netscript commands: <br>" +
2017-06-28 06:11:27 +02:00
"run('scriptname.script', n);<br> " +
2017-07-25 04:51:03 +02:00
"exec('scriptname.script, 'targetServer', n);<br><br>" +
"<u><h1> Notes about how scripts work offline </h1> </u><br>" +
"<strong> The scripts that you write and execute are interpreted in Javascript. For this " +
2017-05-21 23:04:57 +02:00
"reason, it is not possible for these scripts to run while offline (when the game is closed). " +
2017-07-25 04:51:03 +02:00
"It is important to note that for this reason, conditionals such as if/else statements and certain " +
"commands such as purchaseHacknetNode() or nuke() will not work while the game is offline.<br><br>" +
2017-05-21 23:04:57 +02:00
"However, Scripts WILL continue to generate money and hacking exp for you while the game is offline. This " +
2017-07-25 04:51:03 +02:00
"offline production is based off of the scripts' production while the game is online. <br><br>" +
"grow() and weaken() are two Netscript commands that will also be applied when the game is offline, although at a slower rate " +
"compared to if the game was open. This is done by having each script keep track of the " +
"rate at which the grow() and weaken() commands are called when the game is online. These calculated rates are used to determine how many times " +
"these function calls would be made while the game is offline. <br><br> " +
"Also, note that because of the way the Netscript interpreter is implemented, " +
2017-05-15 17:13:21 +02:00
"whenever you reload or re-open the game all of the scripts that you are running will " +
"start running from the BEGINNING of the code. The game does not keep track of where exactly " +
"the execution of a script is when it saves/loads. </strong><br><br>" ,
2018-05-23 02:09:04 +02:00
TutorialNetscriptText : "Netscript is a programming language implemented for this game. There are two versions of Netscript: " +
"Netscript 1.0 and Netscript 2.0 (NetscriptJS).<br><br>" +
"<a href='https://bitburner.readthedocs.io/en/latest/index.html' target='_blank'>Click here for Bitburner's official Netscript documentation</a>" ,
2017-05-07 00:19:18 +02:00
TutorialTravelingText : "There are six major cities in the world that you are able to travel to: <br><br> " +
2017-07-25 04:51:03 +02:00
" Aevum<br>" +
" Chongqing<br>" +
" Sector-12<br>" +
" New Tokyo<br>" +
" Ishima<br>" +
" Volhaven<br><br>" +
"To travel between cities, visit your current city's travel agency through the 'World' page. " +
"From the travel agency you can travel to any other city. Doing so costs money. <br><br>" +
2017-05-08 19:40:53 +02:00
"Each city has its own set of companies and unique locations. Also, certain content is only available to you " +
"if you are in certain cities, so get exploring!" ,
2017-07-25 04:51:03 +02:00
TutorialCompaniesText : "Hacking is not the only way to gain money and experience! Located around the world are many " +
"different companies which you can work for. By working for a company you can earn money, " +
2017-07-03 21:42:11 +02:00
"train your various labor skills, and unlock powerful passive perks. <br><br> " +
2017-07-25 04:51:03 +02:00
"To apply for a job, visit the company you want to work for through the 'World' menu. The company " +
"page will have options that let you apply to positions in the company. There might be several different " +
"positions you can apply for, ranging from software engineer to business analyst to security officer. <br><br> " +
"When you apply for a job, you will get the offer if your stats are high enough. Your first position at " +
"a company will be an entry-level position such as 'intern'. Once you get the job, an button will appear on " +
"the company page that allows you to work for the company. Click this button to start working. <br><br>" +
"Working occurs in 8 hour shifts. Once you start working, you will begin earning money, experience, " +
"and reputation. The rate at which you money and experience depends on the company and your position. " +
2017-07-03 21:42:11 +02:00
"The amount of reputation you gain for your company is based on your job performance, which is affected by " +
"your stats. Different positions value different stats. When you are working, you are unable to perform any " +
2017-07-25 04:51:03 +02:00
"other actions such as using your terminal or visiting other locations (However, note that any scripts you have " +
"running on servers will continue to run as you work!). It is possible to cancel your work shift before the " +
"8 hours is up. However, if you have a full-time job, then cancelling a shift early will result in you gaining " +
2017-07-03 21:42:11 +02:00
"only half of the reputation " +
2017-07-25 04:51:03 +02:00
"that you had earned up to that point. There are also part-time/consultant jobs available where you will not " +
2017-07-03 21:42:11 +02:00
" be penalized if you cancel a work shift early. However, these positions pay less than full-time positions.<br><br>" +
2017-07-25 04:51:03 +02:00
"As you continue to work at a company, you will gain more and more reputation at that company. When your stats " +
"and reputation are high enough, you can get a promotion. You can apply for a promotion on the company page, just like " +
2017-07-03 21:42:11 +02:00
"you applied for the job originally. Higher positions at a company provide better salaries and stat gains.<br><br>" +
2017-07-25 04:51:03 +02:00
"<h1>Infiltrating Companies</h1><br>" +
"Many companies have facilities that you can attempt to infiltrate. By infiltrating, you can steal classified company secrets " +
2017-07-03 21:42:11 +02:00
"and then sell these for money or for faction reputation. To try and infiltrate a company, visit a company through the " +
2017-07-25 04:51:03 +02:00
"'World' menu. There will be an option that says 'Infiltrate Company'. <br><br>" +
"When infiltrating a company, you must progress through clearance levels in the facility. Every clearance level " +
"has some form of security that you must get past. There are several forms of security, ranging from high-tech security systems to " +
"armed guards. For each form of security, there are a variety of options that you can choose to try and bypass the security. Examples " +
"include hacking the security, engaging in combat, assassination, or sneaking past the security. The chance to succeed for each option " +
"is determined in part by your stats. So, for example, trying to hack the security system relies on your hacking skill, whereas trying to " +
"sneak past the security relies on your agility level.<br><br>" +
"The facility has a 'security level' that affects your chance of success when trying to get past a clearance level. " +
"Every time you advance to the next clearance level, the facility's security level will increase by a fixed amount. Furthermore " +
2017-07-03 21:42:11 +02:00
"the options you choose and whether you succeed or fail will affect the security level as well. For example, " +
"if you try to kill a security guard and fail, the security level will increase by a lot. If you choose to sneak past " +
2017-07-25 04:51:03 +02:00
"security and succeed, the security level will not increase at all. <br><br>" +
"Every 5 clearance levels, you will steal classified company secrets that can be sold for money or faction reputation. However, " +
2017-07-03 21:42:11 +02:00
"in order to sell these secrets you must successfully escape the facility using the 'Escape' option. Furthermore, companies have " +
2017-07-25 04:51:03 +02:00
"a max clearance level. If you reach the max clearance level you will automatically escape the facility with all of your " +
2017-07-03 21:42:11 +02:00
"stolen secrets.<br><br>" ,
2017-04-11 15:45:56 +02:00
TutorialFactionsText : "Throughout the game you may receive invitations from factions. There are many different factions, and each faction " +
2017-07-25 04:51:03 +02:00
"has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial " +
"to progressing in the game and unlocking endgame content. <br><br> " +
2017-04-11 15:45:56 +02:00
"It is possible to join multiple factions if you receive invitations from them. However, note that joining a faction " +
2017-07-25 04:51:03 +02:00
"may prevent you from joining other rival factions. <br><br> " +
"The 'Factions' link on the menu brings up a list of all factions that you have joined. " +
"You can select a Faction on this list to go to that Faction page. This page displays general " +
"information about the Faction and also lets you perform work for the faction. " +
"Working for a Faction is similar to working for a company except that you don't get paid a salary. " +
"You will only earn reputation in your Faction and train your stats. Also, cancelling work early " +
"when working for a Faction does NOT result in reduced experience/reputation earnings. <br><br>" +
2017-05-08 19:40:53 +02:00
"Earning reputation for a Faction unlocks powerful Augmentations. Purchasing and installing these Augmentations will " +
"upgrade your abilities. The Augmentations that are available to unlock vary from faction to faction." ,
2017-07-25 04:51:03 +02:00
TutorialAugmentationsText : "Advances in science and medicine have lead to powerful new technologies that allow people to augment themselves " +
"beyond normal human capabilities. There are many different types of Augmentations, ranging from cybernetic to " +
"genetic to biological. Acquiring these Augmentations enhances the user's physical and mental faculties. <br><br>" +
"Because of how powerful these Augmentations are, the technology behind them is kept private and secret by the " +
"corporations and organizations that create them. Therefore, the only way for the player to obtain Augmentations is " +
"through Factions. After joining a Faction and earning enough reputation in it, you will be able to purchase " +
"its Augmentations. Different Factions offer different Augmentations. Augmentations must be purchased in order to be installed, " +
2017-05-08 19:40:53 +02:00
"and they are fairly expensive. <br><br>" +
2017-07-25 04:51:03 +02:00
"When you purchase an Augmentation, the price of purchasing another Augmentation increases by 90%. This multiplier stacks for " +
"each Augmentation you purchase. You will not gain the benefits of your purchased Augmentations until you install them. You can " +
"choose to install Augmentations through the 'Augmentations' menu tab. Once you install your purchased Augmentations, " +
"their costs are reset back to the original price.<br><br>" +
"Unfortunately, installing Augmentations has side effects. You will lose most of the progress you've made, including your " +
2017-05-08 19:40:53 +02:00
"skills, stats, and money. You will have to start over, but you will have all of the Augmentations you have installed to " +
2017-07-25 04:51:03 +02:00
"help you progress. <br><br> " +
"To summarize, here is a list of everything you will LOSE when you install an Augmentation: <br><br>" +
"Stats/Skills<br>" +
"Money<br>" +
"Scripts on all servers EXCEPT your home computer<br>" +
"Purchased servers<br>" +
"Hacknet Nodes<br>" +
"Company/faction reputation<br>" +
"Jobs and Faction memberships<br>" +
2017-05-08 19:40:53 +02:00
"Programs<br>" +
2017-07-25 04:51:03 +02:00
"Stocks<br>" +
"TOR router<br><br>" +
"Here is everything you will KEEP when you install an Augmentation: <br><br>" +
2017-05-08 19:40:53 +02:00
"Every Augmentation you have installed<br>" +
2017-07-25 04:51:03 +02:00
"Scripts on your home computer<br>" +
2017-10-10 06:56:48 +02:00
"RAM and CPU Core Upgrades on your home computer<br>" +
2017-07-04 21:34:17 +02:00
"World Stock Exchange account and TIX API Access<br>" ,
2017-07-25 04:51:03 +02:00
LatestUpdate :
2018-07-09 01:53:24 +02:00
"v0.40.0<br>" +
2018-07-12 07:01:52 +02:00
"* Added getCurrentAction() to Bladeburner API<br>" +
"* getSkillLevel() in Bladeburner API now returns an error if no argument is passed in (as opposed to an object with all skill levels). This may break scripts<br>" +
2018-07-09 01:53:24 +02:00
"* Minimum Netscript execution time reduced from 15ms to 10ms (configurable in Options)<br>" +
2018-07-12 07:01:52 +02:00
"* HP is now reset (restored) when Augmenting<br>" +
2018-07-09 01:53:24 +02:00
"* Bug Fix: Infiltration buttons can no longer be clicked through NetscriptJS<br>"
2017-06-12 17:32:50 +02:00
}
2017-08-30 19:44:29 +02:00
export { CONSTANTS } ;