diff --git a/css/menupages.css b/css/menupages.css
index de547aef3..ab4555611 100644
--- a/css/menupages.css
+++ b/css/menupages.css
@@ -295,15 +295,17 @@
color: #66ff33;
}
-#augmentations-list > li {
- margin: 6px;
+#augmentations-list li {
width: 80%;
+ background-color: #333;
}
-#augmentations-list > li h2{
+#augmentations-list h2,
+#augmentations-list p {
+ margin: 4px;
color: #66ff33;
- padding-top: 10px;
- padding-left: 10px;
+ padding: 8px;
+ width: 80%;
background-color: #333;
text-decoration: none;
}
diff --git a/index.html b/index.html
index 4986c4732..1b2bd4c6d 100644
--- a/index.html
+++ b/index.html
@@ -537,7 +537,7 @@
Purchase 256GB Server - $100,000,000 Purchase 512GB Server - $250,000,000 Purchase 1TB Server - $750,000,000
- Purchase TOR Router - $2,000,000
+ Purchase TOR Router - $100,000 Purchase RAM for Home computer
diff --git a/src/Augmentations.js b/src/Augmentations.js
index 79b7b65dc..ea80cf5c5 100644
--- a/src/Augmentations.js
+++ b/src/Augmentations.js
@@ -55,7 +55,7 @@ initAugmentations = function() {
Targeting1.setRequirements(8000, 10000000);
Targeting1.setInfo("This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
"balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
- "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies. \n\n" +
+ "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
"This augmentation increases the player's dexterity by 10%.");
Targeting1.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
@@ -64,7 +64,7 @@ initAugmentations = function() {
var Targeting2 = new Augmentation("Augmented Targeting II");
Targeting2.setRequirements(30000, 20000000);
Targeting2.setInfo("This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination. \n\nThis upgrade increases the player's dexterity " +
+ "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
"by an additional 20%.");
Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
@@ -73,7 +73,7 @@ initAugmentations = function() {
var Targeting3 = new Augmentation("Augmented Targeting III");
Targeting3.setRequirements(80000, 50000000);
Targeting3.setInfo("This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination. \n\nThis upgrade increases the player's dexterity " +
+ "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
"by an additional 50%.");
Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
"KuaiGong International", "Blade Industries", "The Covenant"]);
@@ -82,7 +82,7 @@ initAugmentations = function() {
var SyntheticHeart = new Augmentation("Synthetic Heart");
SyntheticHeart.setRequirements(400000, 500000000);
SyntheticHeart.setInfo("This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
- "at much higher efficiencies than a normal human heart.\n\n This augmentation increases the player's agility " +
+ "at much higher efficiencies than a normal human heart.
This augmentation increases the player's agility " +
"and strength by 100%");
SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
"NWO", "The Covenant", "Daedalus", "Illuminati"]);
@@ -92,7 +92,7 @@ initAugmentations = function() {
SynfibrilMuscle.setRequirements(300000, 400000000);
SynfibrilMuscle.setInfo("The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
"the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
- "Scientists have named these artificially enhanced units 'synfibrils'.\n\n This augmentation increases the player's " +
+ "Scientists have named these artificially enhanced units 'synfibrils'.
This augmentation increases the player's " +
"strength and defense by 50%.");
SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
"NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
@@ -101,7 +101,7 @@ initAugmentations = function() {
var CombatRib1 = new Augmentation("Combat Rib I");
CombatRib1.setRequirements(12000, 15000000);
CombatRib1.setInfo("The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
- "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.\n\n" +
+ "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
"This augmentation increases the player's strength and defense by 10%.");
CombatRib1.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
@@ -110,7 +110,7 @@ initAugmentations = function() {
var CombatRib2 = new Augmentation("Combat Rib II");
CombatRib2.setRequirements(40000, 40000000);
CombatRib2.setInfo("This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream\n\n. This upgrade increases the player's strength and defense by an additional 20%.")
+ "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 20%.")
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
"OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
AddToAugmentations(CombatRib2);
@@ -118,7 +118,7 @@ initAugmentations = function() {
var CombatRib3 = new Augmentation("Combat Rib III");
CombatRib3.setRequirements(120000, 100000000);
CombatRib3.setInfo("This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream\n\n. This upgrade increases the player's strength and defense by an additional 30%.");
+ "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 30%.");
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
"KuaiGong International", "Blade Industries", "The Covenant"]);
AddToAugmentations(CombatRib3);
@@ -126,7 +126,7 @@ initAugmentations = function() {
var NanofiberWeave = new Augmentation("Nanofiber Weave");
NanofiberWeave.setRequirements(150000, 250000000);
NanofiberWeave.setInfo("Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
- "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.\n\n" +
+ "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
"This augmentation increases the player's strength and defense by 30%.");
NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
"Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
@@ -138,7 +138,7 @@ initAugmentations = function() {
"The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
"that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
"at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
- "mitigate damage from any fire-related or electrical traumas.\n\n" +
+ "mitigate damage from any fire-related or electrical traumas.
" +
"This augmentation increases the player's defense by 150%.");
SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
"The Covenant"]);
@@ -147,7 +147,7 @@ initAugmentations = function() {
var WiredReflexes = new Augmentation("Wired Reflexes");
WiredReflexes.setRequirements(3000, 6000000);
WiredReflexes.setInfo("Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
- "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.\n\n" +
+ "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
"This augmentation increases the player's agility by 5%.");
WiredReflexes.addToFactions(["Tian Di Hui", "Sector-12", "Volhaven", "Aevum", "Ishima",
"The Syndicate", "The Dark Army", "Speakers for the Dead"]);
@@ -156,7 +156,7 @@ initAugmentations = function() {
var GrapheneBoneLacings = new Augmentation("Graphene Bone Lacings");
GrapheneBoneLacings.setRequirements(750000, 1000000000);
GrapheneBoneLacings.setInfo("A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
- "their density and tensile strength.\n\n" +
+ "their density and tensile strength.
" +
"This augmentation increases the player's strength and defense by 100%.");
GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
AddToAugmentations(GrapheneBoneLacings);
@@ -166,7 +166,7 @@ initAugmentations = function() {
BionicSpine.setInfo("An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
"Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
"stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
- "greatly improved senses and reaction speeds.\n\n" +
+ "greatly improved senses and reaction speeds.
" +
"This augmentation increases all of the player's combat stats by 20%.");
BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
"OmniTek Incorporated", "Blade Industries"]);
@@ -175,14 +175,14 @@ initAugmentations = function() {
var GrapheneBionicSpine = new Augmentation("Graphene Bionic Spine Upgrade");
GrapheneBionicSpine.setRequirements(650000, 1000000000);
GrapheneBionicSpine.setInfo("An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.\n\n" +
+ "material to make it much stronger and lighter.
" +
"This augmentation increases all of the player's combat stats by 100%.");
GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
AddToAugmentations(GrapheneBionicSpine);
var BionicLegs = new Augmentation("Bionic Legs");
BionicLegs.setRequirements(100000, 60000000);
- BionicLegs.setInfo("Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs. \n\n" +
+ BionicLegs.setInfo("Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
"This augmentation increases the player's agility by 50%.");
BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
"OmniTek Incorporated", "Blade Industries"]);
@@ -191,7 +191,7 @@ initAugmentations = function() {
var GrapheneBionicLegs = new Augmentation("Graphene Bionic Legs Upgrade");
GrapheneBionicLegs.setRequirements(400000, 900000000);
GrapheneBionicLegs.setInfo("An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.\n\n" +
+ "material to make it much stronger and lighter.
" +
"This augmentation increases the player's agility by an additional 150%.");
GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
AddToAugmentations(GrapheneBionicLegs);
@@ -201,7 +201,7 @@ initAugmentations = function() {
SpeechProcessor.setRequirements(25000, 15000000);
SpeechProcessor.setInfo("A cochlear implant with an embedded computer that analyzes incoming speech. " +
"The embedded computer processes characteristics of incoming speech, such as tone " +
- "and inflection, to pick up on subtle cues and aid in social interaction.\n\n" +
+ "and inflection, to pick up on subtle cues and aid in social interaction.
" +
"This augmentation increases the player's charisma by 20%.");
SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
"Ishima", "Volhaven"]);
@@ -211,7 +211,7 @@ initAugmentations = function() {
TITN41Injection.setRequirements(40000, 75000000);
TITN41Injection.setInfo("TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
"control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
- "outgoing and socialable. \n\n" +
+ "outgoing and socialable.
" +
"This augmentation increases the player's charisma and charisma experience gain rate by 15%");
TITN41Injection.addToFactions(["Silhouette"]);
@@ -221,7 +221,7 @@ initAugmentations = function() {
"and interactions. The system uses a wide variety of factors such as facial expression, body " +
"language, and the voice's tone/inflection to determine the best course of action during social" +
"situations. The implant also uses deep learning software to continuously learn new behavior" +
- "patterns and how to best respond.\n\n" +
+ "patterns and how to best respond.
" +
"This augmentation increases the player's charisma and charisma experience gain rate by 50%.");
EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
"OmniTek Incorporated", "Four Sigma"]);
@@ -231,7 +231,7 @@ initAugmentations = function() {
var BitWire = new Augmentation("BitWire");
BitWire.setRequirements(4000, 3000000);
BitWire.setInfo("A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
- "capabilities. \n\n This augmentation increases the player's hacking skill by 5%");
+ "capabilities.
This augmentation increases the player's hacking skill by 5%");
BitWire.addToFactions(["CyberSec", "BitRunners", "NiteSec"]);
AddToAugmentations(BitWire);
@@ -241,10 +241,10 @@ initAugmentations = function() {
"The network is meant to mimick the way a biological brain solves a problem, which each " +
"nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
"nanoprocessors are programmed to perform computations much faster than organic neurons, " +
- "allowing its user to solve much more complex problems at a much faster rate.\n\n" +
- "This augmentation:\n" +
- "Increases the player's hacking speed by 2%\n" +
- "Increases the amount of money the player's gains from hacking by 10%\n" +
+ "allowing its user to solve much more complex problems at a much faster rate.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2% " +
+ "Increases the amount of money the player's gains from hacking by 10% " +
"Inreases the player's hacking skill by 10%");
ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
AddToAugmentations(ArtificialBioNeuralNetwork);
@@ -252,7 +252,7 @@ initAugmentations = function() {
var ArtificialSynapticPotentiation = new Augmentation("Artificial Synaptic Potentiation");
ArtificialSynapticPotentiation.setRequirements(20000, 80000000);
ArtificialSynapticPotentiation.setInfo("The body is injected with a chemical that artificially induces synaptic potentiation, " +
- "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.\n\n" +
+ "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
"This augmentation increases the player's hacking speed and hacking chance by 1%.");
ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
AddToAugmentations(ArtificialSynapticPotentiation);
@@ -262,10 +262,10 @@ initAugmentations = function() {
EnhancedMyelinSheathing.setInfo("Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
"This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
"system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
- "counterparts, leading to greater processing speeds and better brain function.\n\n" +
- "This augmentation:\n" +
- "Increases the player's hacking speed by 1%\n" +
- "Increases the player's hacking skill by 5%\n" +
+ "counterparts, leading to greater processing speeds and better brain function.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 1% " +
+ "Increases the player's hacking skill by 5% " +
"Increases the player's hacking experience gain rate by 5%");
EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
AddToAugmentations(EnhancedMyelinSheathing);
@@ -273,7 +273,7 @@ initAugmentations = function() {
var SynapticEnhancement = new Augmentation("Synaptic Enhancement Implant");
SynapticEnhancement.setRequirements(4000, 2000000);
SynapticEnhancement.setInfo("A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
- "induce stronger synaptic activity. This improves the the user's cognitive abilities.\n\n" +
+ "induce stronger synaptic activity. This improves the the user's cognitive abilities.
" +
"This augmentation increases the player's hacking speed by 1%.");
SynapticEnhancement.addToFactions(["CyberSec"]);
AddToAugmentations(SynapticEnhancement);
@@ -281,7 +281,7 @@ initAugmentations = function() {
var NeuralRetentionEnhancement = new Augmentation("Neural-Retention Enhancement");
NeuralRetentionEnhancement.setRequirements(80000, 100000000);
NeuralRetentionEnhancement.setInfo("Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
- "circuits, strengthening its ability to retain information.\n\n" +
+ "circuits, strengthening its ability to retain information.
" +
"This augmentation increases the player's hacking experience gain rate by 40%.");
NeuralRetentionEnhancement.addToFactions(["CyberSec", "NiteSec"]);
AddToAugmentations(NeuralRetentionEnhancement);
@@ -290,7 +290,7 @@ initAugmentations = function() {
DataJack.setRequirements(200000, 75000000);
DataJack.setInfo("A brain implant that provides an interface for direct, wireless communication between a computer's main " +
"memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
- "and delete it.\n\n" +
+ "and delete it.
" +
"This augmentation increases the amount of money the player gains from hacking by 20%");
DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
AddToAugmentations(DataJack);
@@ -301,7 +301,7 @@ initAugmentations = function() {
"to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
"processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
"not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
- "control the traffic on a network.\n\n" +
+ "control the traffic on a network.
" +
"This augmentation increases the player's hacking skill by 2%");
ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
@@ -310,12 +310,12 @@ initAugmentations = function() {
var ENMCore = new Augmentation("Embedded Netburner Module Core Implant");
ENMCore.setRequirements(250000, 500000000);
ENMCore.setInfo("The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgrade allows the Embedded Netburner Module to generate its own data on a network.\n\n" +
- "This augmentation:\n" +
- "Increases the player's hacking speed by 2%\n" +
- "Increases the amount of money the player gains from hacking by 10%\n" +
- "Increases the player's chance of successfully performing a hack by 2%\n" +
- "Increases the player's hacking experience gain rate by 10%\n" +
+ "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2% " +
+ "Increases the amount of money the player gains from hacking by 10% " +
+ "Increases the player's chance of successfully performing a hack by 2% " +
+ "Increases the player's hacking experience gain rate by 10% " +
"Increases the player's hacking skill by 1%");
ENMCore.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
@@ -326,12 +326,12 @@ initAugmentations = function() {
ENMCoreV2.setInfo("The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
"This upgraded firmware allows the Embedded Netburner Module to control the information on " +
"a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
- "packets.\n\n" +
- "This augmentation: \n" +
- "Increases the player's hacking speed by 5%\n" +
- "Increases the amount of money the player gains from hacking by 50%\n" +
- "Increases the player's chance of successfully performing a hack by 5%\n" +
- "Increases the player's hacking experience gain rate by 50%\n" +
+ "packets.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 5% " +
+ "Increases the amount of money the player gains from hacking by 50% " +
+ "Increases the player's chance of successfully performing a hack by 5% " +
+ "Increases the player's hacking experience gain rate by 50% " +
"Increases the player's hacking skill by 5%");
ENMCoreV2.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
"Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
@@ -341,12 +341,12 @@ initAugmentations = function() {
ENMCoreV3.setRequirements(750000, 1250000000);
ENMCoreV3.setInfo("The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
"This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
- "any device on a network.\n\n" +
- "This augmentation:\n" +
- "Increases the player's hacking speed by 5%\n" +
- "Increases the amount of money the player gains from hacking by 50%\n" +
- "Increases the player's chance of successfully performing a hack by 10%\n" +
- "Increases the player's hacking experience gain rate by 100%\n" +
+ "any device on a network.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 5% " +
+ "Increases the amount of money the player gains from hacking by 50% " +
+ "Increases the player's chance of successfully performing a hack by 10% " +
+ "Increases the player's hacking experience gain rate by 100% " +
"Increases the player's hacking skill by 10%");
ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
"Daedalus", "The Covenant", "Illuminati"]);
@@ -355,7 +355,7 @@ initAugmentations = function() {
var ENMAnalyzeEngine = new Augmentation("Embedded Netburner Module Analyze Engine");
ENMAnalyzeEngine.setRequirements(700000, 1000000000);
ENMAnalyzeEngine.setInfo("Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
- "that vastly outperforms the Netburner Module's native single-core processor.\n\n" +
+ "that vastly outperforms the Netburner Module's native single-core processor.
" +
"This augmentation increases the player's hacking speed by 10%.");
ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
"Daedalus", "The Covenant", "Illuminati"]);
@@ -365,9 +365,9 @@ initAugmentations = function() {
ENMDMA.setRequirements(750000, 1100000000);
ENMDMA.setInfo("This implant installs a Direct Memory Access (DMA) controller into the " +
"Embedded Netburner Module. This allows the Module to send and receive data " +
- "directly to and from the main memory of devices on a network.\n\n" +
- "This augmentation: \n" +
- "Increases the amount of money the player gains from hacking by 50%\n" +
+ "directly to and from the main memory of devices on a network.
" +
+ "This augmentation: " +
+ "Increases the amount of money the player gains from hacking by 50% " +
"Increases the player's chance of successfully performing a hack by 20%");
ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
"Daedalus", "The Covenant", "Illuminati"]);
@@ -376,10 +376,10 @@ initAugmentations = function() {
var Neuralstimulator = new Augmentation("Neuralstimulator");
Neuralstimulator.setRequirements(120000, 600000000);
Neuralstimulator.setInfo("A cranial implant that intelligently stimulates certain areas of the brain " +
- "in order to improve cognitive functions\n\n" +
- "This augmentation:\n" +
- "Increases the player's hacking speed by 1%\n" +
- "Increases the player's chance of successfully performing a hack by 10%\n" +
+ "in order to improve cognitive functions
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 1% " +
+ "Increases the player's chance of successfully performing a hack by 10% " +
"Increases the player's hacking experience gain rate by 20%");
Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
"Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
@@ -391,7 +391,7 @@ initAugmentations = function() {
NuoptimalInjectorImplant.setRequirements(12000, 30000000);
NuoptimalInjectorImplant.setInfo("This torso implant automatically injects nootropic supplements into " +
"the bloodstream to improve memory, increase focus, and provide other " +
- "cognitive enhancements.\n\n" +
+ "cognitive enhancements.
" +
"This augmentation increases the amount of reputation the player gains " +
"when working for a company by 10%.");
NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
@@ -402,9 +402,9 @@ initAugmentations = function() {
SpeechEnhancement.setRequirements(5000, 4000000);
SpeechEnhancement.setInfo("An advanced neural implant that improves your speaking abilities, making " +
"you more convincing and likable in conversations and overall improving your " +
- "social interactions.\n\n" +
- "This augmentation:\n" +
- "Increases the player's charisma by 5%\n" +
+ "social interactions.
" +
+ "This augmentation: " +
+ "Increases the player's charisma by 5% " +
"Increases the amount of reputation the player gains when working for a company by 5%");
SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
"Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
@@ -413,10 +413,10 @@ initAugmentations = function() {
var FocusWire = new Augmentation("FocusWire"); //Stops procrastination
FocusWire.setRequirements(100000, 200000000);
FocusWire.setInfo("A cranial implant that stops procrastination by blocking specific neural pathways " +
- "in the brain.\n\n" +
- "This augmentation: \n" +
- "Increases all experience gains by 10%\n" +
- "Increases the amount of money the player gains from working by 5%\n" +
+ "in the brain.
" +
+ "This augmentation: " +
+ "Increases all experience gains by 10% " +
+ "Increases the amount of money the player gains from working by 5% " +
"Increases the amount of reputation the player gains when working for a company by 5%");
FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
AddToAugmentations(FocusWire)
@@ -425,9 +425,9 @@ initAugmentations = function() {
PCDNI.setRequirements(400000, 650000000);
PCDNI.setInfo("Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
"computers. Connecting to a computer through this jack allows you to interface with " +
- "it using the brain's electrochemical signals.\n\n" +
- "This augmentation:\n" +
- "Increases the amount of reputation the player gains when working for a company by 10%\n" +
+ "it using the brain's electrochemical signals.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 10% " +
"Increases the player's hacking skill by 10%");
PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
AddToAugmentations(PCDNI);
@@ -436,9 +436,9 @@ initAugmentations = function() {
PCDNIOptimizer.setRequirements(500000, 875000000);
PCDNIOptimizer.setInfo("This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
"improves the performance of the interface and gives the user more control options " +
- "to the connected computer.\n\n" +
- "This augmentation:\n" +
- "Increases the amount of reputation the player gains when working for a company by 20%\n" +
+ "to the connected computer.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 20% " +
"Increases the player's hacking skill by 20%");
PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
AddToAugmentations(PCDNIOptimizer);
@@ -448,10 +448,10 @@ initAugmentations = function() {
PCDNINeuralNetwork.setInfo("This is an additional installation that upgrades the functionality of the " +
"PC Direct-Neural Interface augmentation. When connected to a computer, " +
"The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
- "processing power to aid the computer in computational tasks.\n\n" +
- "This augmentation:\n" +
- "Increases the amount of reputation the player gains when working for a company by 10%\n" +
- "Increases the player's hacking skill by 10%\n" +
+ "processing power to aid the computer in computational tasks.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 10% " +
+ "Increases the player's hacking skill by 10% " +
"Increases the player's hacking speed by 2%");
PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
AddToAugmentations(PCDNINeuralNetwork);
@@ -462,9 +462,9 @@ initAugmentations = function() {
HacknetNodeCPUUpload.setRequirements(15000, 12000000);
HacknetNodeCPUUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's CPU into " +
"the brain. This allows the user to engineer custom hardware and software " +
- "for the Hacknet Node that provides better performance.\n\n" +
- "This augmentation:\n" +
- "Increases the amount of money produced by Hacknet Nodes by 15%\n" +
+ "for the Hacknet Node that provides better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 15% " +
"Decreases the cost of purchasing a Hacknet Node Core by 10%");
HacknetNodeCPUUpload.addToFactions(["Netburners"]);
AddToAugmentations(HacknetNodeCPUUpload);
@@ -473,9 +473,9 @@ initAugmentations = function() {
HacknetNodeCacheUpload.setRequirements(6000, 6000000);
HacknetNodeCacheUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
"into the brain. This allows the user to engineer custom cache hardware for the " +
- "Hacknet Node that offers better performance.\n\n" +
- "This augmentation:\n " +
- "Increases the amount of money produced by Hacknet Nodes by 10%\n" +
+ "Hacknet Node that offers better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 10% " +
"Decreases the cost of leveling up a Hacknet Node by 10%");
HacknetNodeCacheUpload.addToFactions(["Netburners"]);
AddToAugmentations(HacknetNodeCacheUpload);
@@ -484,9 +484,9 @@ initAugmentations = function() {
HacknetNodeNICUpload.setRequirements(2000, 2000000);
HacknetNodeNICUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
"into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
- "offers better performance.\n\n" +
- "This augmentation:\n" +
- "Increases the amount of money produced by Hacknet Nodes by 5%\n" +
+ "offers better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 5% " +
"Decreases the cost of purchasing a Hacknet Node by 5%");
HacknetNodeNICUpload.addToFactions(["Netburners"]);
AddToAugmentations(HacknetNodeNICUpload);
@@ -495,7 +495,7 @@ initAugmentations = function() {
HacknetNodeKernelDNI.setRequirements(25000, 30000000);
HacknetNodeKernelDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
"Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
- "electrochemical signals.\n\n" +
+ "electrochemical signals.
" +
"This augmentation increases the amount of money produced by Hacknet Nodes by 50%.");
HacknetNodeKernelDNI.addToFactions(["Netburners"]);
AddToAugmentations(HacknetNodeKernelDNI);
@@ -504,7 +504,7 @@ initAugmentations = function() {
HacknetNodeCoreDNI.setRequirements(40000, 50000000);
HacknetNodeCoreDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
"to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
- "the mind's electrochemical signals.\n\n" +
+ "the mind's electrochemical signals.
" +
"This augmentation increases the amount of money produced by Hacknet Nodes by 75%.");
HacknetNodeCoreDNI.addToFactions(["Netburners"]);
AddToAugmentations(HacknetNodeCoreDNI);
@@ -515,7 +515,7 @@ initAugmentations = function() {
Neurotrainer1.setInfo("A decentralized cranial implant that improves the brain's ability to learn. It is " +
"installed by releasing millions of nanobots into the human brain, each of which " +
"attaches to a different neural pathway to enhance the brain's ability to retain " +
- "and retrieve information.\n\n" +
+ "and retrieve information.
" +
"This augmentation increases the player's experience gain rate for all stats by 5%");
Neurotrainer1.addToFactions(["CyberSec"]);
AddToAugmentations(Neurotrainer1);
@@ -524,7 +524,7 @@ initAugmentations = function() {
Neurotrainer2.setRequirements(16000, 20000000);
Neurotrainer2.setInfo("A decentralized cranial implant that improves the brain's ability to learn. This " +
"is a more powerful version of the Neurotrainer I augmentation, but it does not " +
- "require Neurotrainer I to be installed as a prerequisite.\n\n" +
+ "require Neurotrainer I to be installed as a prerequisite.
" +
"This augmentation increases the player's experience gain rate for all stats by 10%");
Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
AddToAugmentations(Neurotrainer2);
@@ -533,7 +533,7 @@ initAugmentations = function() {
Neurotrainer3.setRequirements(40000, 100000000);
Neurotrainer3.setInfo("A decentralized cranial implant that improves the brain's ability to learn. This " +
"is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
- "but it does not require either of them to be installed as a prerequisite.\n\n" +
+ "but it does not require either of them to be installed as a prerequisite.
" +
"This augmentation increases the player's experience gain rate for all stats by 20%");
Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
AddToAugmentations(Neurotrainer3);
@@ -541,10 +541,10 @@ initAugmentations = function() {
var Hypersight = new Augmentation("HyperSight Corneal Implant");
Hypersight.setInfo("A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
"Embedded circuitry within the implant provides the ability to detect heat and movement " +
- "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.\n\n" +
- "This augmentation: \n" +
- "Increases the player's dexterity by 50%\n" +
- "Increases the player's hacking speed by 1%" +
+ "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
+ "This augmentation: " +
+ "Increases the player's dexterity by 50% " +
+ "Increases the player's hacking speed by 1% " +
"Increases the amount of money the player gains from hacking by 10%");
Hypersight.setRequirements(120000, 650000000);
Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
diff --git a/src/Constants.js b/src/Constants.js
index 34161cee4..e800e1f53 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -35,7 +35,7 @@ CONSTANTS = {
MaxLogCapacity: 20,
//How much a TOR router costs
- TorRouterCost: 2000000,
+ TorRouterCost: 100000,
MillisecondsPer20Hours: 72000000,
GameCyclesPer20Hours: 72000000 / 200,
diff --git a/src/CreateProgram.js b/src/CreateProgram.js
index d190fbb51..ee17fbf38 100644
--- a/src/CreateProgram.js
+++ b/src/CreateProgram.js
@@ -31,7 +31,7 @@ function displayCreateProgramContent() {
if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) {
portHackALink.style.display = "block";
portHackALink.addEventListener("click", function() {
- createProgram(Programs.PortHackProgram);
+ createProgram(Programs.PortHackProgram, CONSTANTS.MillisecondsPerQuarterHour);
});
}
diff --git a/src/DarkWeb.js b/src/DarkWeb.js
index 8502c04f4..0841c02cb 100644
--- a/src/DarkWeb.js
+++ b/src/DarkWeb.js
@@ -1,4 +1,132 @@
/* DarkWeb.js */
-executeDarkwebTerminalCommand = function() {
+//Posts a "help" message if connected to DarkWeb
+checkIfConnectedToDarkweb() {
+ if (SpecialServerIps.hasOwnProperty("Darkweb Server")) {
+ var darkwebIp = SpecialServerIps["Darkweb Server"];
+ if (!isValidIPAddress(darkwebIp) {return;}
+ if (darkwebIp == Player.getCurrentServer().ip) {
+ post("You are now connected to the dark web. From the dark web you can purchase illegal items. " +
+ "Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name] " +
+ "to purchase an item");
+ }
+ }
+}
+
+//Handler for dark web commands. The terminal's executeCommand() function will pass
+//dark web-specific commands into this. It will pass in the raw split command array
+//rather than the command string
+executeDarkwebTerminalCommand = function(commandArray) {
+ if (commandArray.length == 0) {return;}
+ switch (commandArray[0]) {
+ case "buy":
+ if (commandArray.length != 2) {
+ post("Incorrect number of arguments. Usage: ");
+ post("buy -l");
+ post("buy [item name]");
+ }
+ var arg = commandArray[1];
+ if (arg == "-l") {
+ listAllDarkwebItems();
+ } else {
+ buyDarkwebItem(arg);
+ }
+ break;
+ default:
+ post("Command not found");
+ break;
+ }
+}
+
+listAllDarkwebItems = function() {
+ for (var item in DarkWebItems) {
+ if (DarkWebItems.hasOwnProperty(item)) {
+ post(item);
+ }
+ }
+}
+
+buyDarkwebItem = function(itemName) {
+ if (DarkWebItems.BruteSSHProgram.beginsWith(itemName)) {
+ var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
+ if (price > 0 && Player.money >= price) {
+ Player.loseMoney(price);
+ Player.getHomeComputer().programs.push(Programs.BruteSSHProgram);
+ post("You have purchased the BruteSSH.exe program. The new program " +
+ "can be found on your home computer.");
+ } else {
+ post("Not enough money to purchase " + itemName);
+ }
+ } else if (DarkWebItems.FTPCrackProgram.beginsWith(itemName)) {
+ var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
+ if (price > 0 && Player.money >= price) {
+ Player.loseMoney(price);
+ Player.getHomeComputer().programs.push(Programs.FTPCrackProgram);
+ post("You have purchased the BruteSSH.exe program. The new program " +
+ "can be found on your home computer.");
+ } else {
+ post("Not enough money to purchase " + itemName);
+ }
+ } else if (DarkWebItems.RelaySMTPProgram.beginsWith(itemName)) {
+ var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
+ if (price > 0 && Player.money >= price) {
+ Player.loseMoney(price);
+ Player.getHomeComputer().programs.push(Programs.RelaySMTPProgram);
+ post("You have purchased the BruteSSH.exe program. The new program " +
+ "can be found on your home computer.");
+ } else {
+ post("Not enough money to purchase " + itemName);
+ }
+ } else if (DarkWebItems.HTTPWormProgram.beginsWith(itemName)) {
+ var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
+ if (price > 0 && Player.money >= price) {
+ Player.loseMoney(price);
+ Player.getHomeComputer().programs.push(Programs.HTTPWormProgram);
+ post("You have purchased the BruteSSH.exe program. The new program " +
+ "can be found on your home computer.");
+ } else {
+ post("Not enough money to purchase " + itemName);
+ }
+ } else if (DarkWebItems.SQLInjectProgram.beginsWith(itemName)) {
+ var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
+ if (price > 0 && Player.money >= price) {
+ Player.loseMoney(price);
+ Player.getHomeComputer().programs.push(Programs.SQLInjectProgram);
+ post("You have purchased the BruteSSH.exe program. The new program " +
+ "can be found on your home computer.");
+ } else {
+ post("Not enough money to purchase " + itemName);
+ }
+ } else {
+ post("Unrecognized item");
+ }
+}
+
+parseDarkwebItemPrice = function(itemDesc) {
+ var split = itemDesc.split(" - ");
+ if (split.length == 3) {
+ var priceString = split[1];
+ //Check for errors
+ if (priceString.length == 0 || priceString.charAt(0) != '$') {
+ return -1;
+ }
+ //Remove dollar sign and commas
+ priceString = priceString.slice(1);
+ priceString = priceString.replace(/,/g, '');
+
+ //Convert string to numeric
+ var price = parseFloat(priceString);
+ if (isNaN(price)) {return -1;}
+ else {return price;}
+ } else {
+ return -1;
+ }
+}
+
+DarkWebItems = {
+ BruteSSHProgram: Programs.BRUTESSHProgram + " - $50,000 - Opens up SSH Ports",
+ FTPCrackProgram: Programs.FTPCrackProgram + " - $150,000 - Opens up FTP Ports",
+ RelaySMTPProgram: Programs.RelaySMTPProgram + " - $500,000 - Opens up SMTP Ports",
+ HTTPWormProgram: Programs.HTTPWormProgram + " - $3,000,000 - Opens up HTTP Ports",
+ SQLInjectProgram: Programs.SQLInjectProgram + " - $25,000,000 - Opens up SQL Ports",
}
\ No newline at end of file
diff --git a/src/Faction.js b/src/Faction.js
index d4aac8aa3..ea82ad32f 100644
--- a/src/Faction.js
+++ b/src/Faction.js
@@ -747,10 +747,12 @@ displayFactionAugmentations = function(factionName) {
var pElem = document.createElement("p");
aElem.setAttribute("href", "#");
var req = aug.baseRepRequirement * faction.augmentationRepRequirementMult;
- if (faction.playerReputation >= req) {
+ if (aug.owned) {
+ aElem.setAttribute("class", "a-link-button-inactive");
+ pElem.innerHTML = "ALREADY OWNED";
+ } else if (faction.playerReputation >= req) {
aElem.setAttribute("class", "a-link-button");
pElem.innerHTML = "UNLOCKED - $" + formatNumber(aug.baseCost * faction.augmentationPriceMult, 2);
- //TODO Event listener for button to purchase augmentation
} else {
aElem.setAttribute("class", "a-link-button-inactive");
pElem.innerHTML = "LOCKED (Requires " + formatNumber(req, 4) + " faction reputation)";
diff --git a/src/Location.js b/src/Location.js
index 3e5761efb..323295e3b 100644
--- a/src/Location.js
+++ b/src/Location.js
@@ -1501,9 +1501,10 @@ purchaseTorRouter = function() {
var darkweb = new Server();
darkweb.init(createRandomIp(), "darkweb", "", true, false, false, false, 1);
AddToAllServers(darkweb);
+ SpecialServerIps.addIp("Darkweb Server", darkweb.ip);
Player.getHomeComputer().serversOnNetwork.push(darkweb.ip);
- dialogBoxCreate("You have purchased a Tor router!", "You now have access to the dark web from your home computer", "Use the scan/netstat commands to search for the dark web connect.", "");
+ dialogBoxCreate("You have purchased a Tor router!", "You now have access to the dark web from your home computer", "Use the scan/netstat commands to search for the dark web connection.");
}
displayUniversityLocationContent = function(costMult) {
diff --git a/src/Netscript/Evaluator.js b/src/Netscript/Evaluator.js
index a3be6bb68..d619d3a73 100644
--- a/src/Netscript/Evaluator.js
+++ b/src/Netscript/Evaluator.js
@@ -242,7 +242,7 @@ function evaluate(exp, workerScript) {
var hackChance = scriptCalculateHackingChance(server);
var rand = Math.random();
var expGainedOnSuccess = scriptCalculateExpGain(server);
- var expGainedOnFailure = Math.round(expGainedOnSuccess / 4);
+ var expGainedOnFailure = (expGainedOnSuccess / 4);
if (rand < hackChance) { //Success!
var moneyGained = scriptCalculatePercentMoneyHacked(server);
moneyGained = Math.floor(server.moneyAvailable * moneyGained);
@@ -256,16 +256,16 @@ function evaluate(exp, workerScript) {
Player.gainHackingExp(expGainedOnSuccess);
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
- console.log("Script successfully hacked " + server.hostname + " for $" + moneyGained + " and " + expGainedOnSuccess + " exp");
- workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + moneyGained + " and " + expGainedOnSuccess + " exp");
+ console.log("Script successfully hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp");
+ workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp");
resolve("Hack success");
} else {
//Player only gains 25% exp for failure? TODO Can change this later to balance
Player.gainHackingExp(expGainedOnFailure);
workerScript.scriptRef.onlineExpGained += expGainedOnFailure;
- console.log("Script unsuccessful to hack " + server.hostname + ". Gained " + expGainedOnFailure + " exp");
- workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + expGainedOnFailure + " exp");
+ console.log("Script unsuccessful to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp");
+ workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " exp");
resolve("Hack failure");
}
}, hackingTime * 1000);
@@ -368,7 +368,9 @@ function evaluate(exp, workerScript) {
p.then(function(growthPercentage) {
resolve("hackExecuted");
- workerScript.scriptRef.log("Using grow(), the money available on " + server.hostname + " was grown by " + (growthPercentage*100 - 100).toFixed(6) + "%");
+ workerScript.scriptRef.log("Using grow(), the money available on " + server.hostname + " was grown by " + (growthPercentage*100 - 100).toFixed(6) + "%. Gained 1 hacking exp");
+ Player.gainHackingExp(1);
+ workerScript.scriptRef.onlineExpGained += 1;
}, function(e) {
reject(e);
});
@@ -600,7 +602,7 @@ function scriptCalculateHackingTime(server) {
//The same as Player's calculateExpGain() function but takes in the server as an argument
function scriptCalculateExpGain(server) {
- return Math.round(server.hackDifficulty * Player.hacking_exp_mult);
+ return (server.hackDifficulty * Player.hacking_exp_mult);
}
//The same as Player's calculatePercentMoneyHacked() function but takes in the server as an argument
diff --git a/src/Player.js b/src/Player.js
index ef8126a49..4a9e3d80c 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -245,7 +245,7 @@ PlayerObject.prototype.calculatePercentMoneyHacked = function() {
//
// Note: Keep it at an integer for now,
PlayerObject.prototype.calculateExpGain = function() {
- return Math.round(this.getCurrentServer().hackDifficulty * this.hacking_exp_mult);
+ return (this.getCurrentServer().hackDifficulty * this.hacking_exp_mult);
}
//Hack/Analyze a server. Return the amount of time the hack will take. This lets the Terminal object know how long to disable itself for
diff --git a/src/Script.js b/src/Script.js
index ba7677835..7993f9cbc 100644
--- a/src/Script.js
+++ b/src/Script.js
@@ -89,10 +89,10 @@ function Script() {
this.numInstructions = 0;
//Stats to display on the Scripts menu, and used to determine offline progress
- this.offlineRunningTime = 0; //Seconds
+ this.offlineRunningTime = 0.01; //Seconds
this.offlineMoneyMade = 0;
this.offlineExpGained = 0;
- this.onlineRunningTime = 0; //Seconds
+ this.onlineRunningTime = 0.01; //Seconds
this.onlineMoneyMade = 0;
this.onlineExpGained = 0;
@@ -116,9 +116,9 @@ Script.prototype.saveScript = function() {
this.updateRamUsage();
//Clear the stats when the script is updated
- this.offlineRunningTime = 0; //Seconds
+ this.offlineRunningTime = 0.01; //Seconds
this.offlineMoneyMade = 0;
- this.onlineRunningTime = 0; //Seconds
+ this.onlineRunningTime = 0.01; //Seconds
this.onlineMoneyMade = 0;
this.lastUpdate = 0;
}
diff --git a/src/Terminal.js b/src/Terminal.js
index a3351492e..31dad0737 100644
--- a/src/Terminal.js
+++ b/src/Terminal.js
@@ -256,7 +256,7 @@ var Terminal = {
var rand = Math.random();
console.log("Hack success chance: " + hackChance + ", rand: " + rand);
var expGainedOnSuccess = Player.calculateExpGain();
- var expGainedOnFailure = Math.round(expGainedOnSuccess / 4);
+ var expGainedOnFailure = (expGainedOnSuccess / 4);
if (rand < hackChance) { //Success!
var moneyGained = Player.calculatePercentMoneyHacked();
moneyGained = Math.floor(Player.getCurrentServer().moneyAvailable * moneyGained);
@@ -269,11 +269,11 @@ var Terminal = {
Player.gainHackingExp(expGainedOnSuccess)
- post("Hack successful! Gained $" + moneyGained + " and " + expGainedOnSuccess + " hacking EXP");
+ post("Hack successful! Gained $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " hacking EXP");
} else { //Failure
//Player only gains 25% exp for failure? TODO Can change this later to balance
Player.gainHackingExp(expGainedOnFailure)
- post("Failed to hack " + Player.getCurrentServer().hostname + ". Gained " + expGainedOnFailure + " hacking EXP");
+ post("Failed to hack " + Player.getCurrentServer().hostname + ". Gained " + formatNumber(expGainedOnFailure, 4) + " hacking EXP");
}
}
@@ -348,9 +348,7 @@ var Terminal = {
var commandArray = command.split(" ");
- if (commandArray.length == 0) {
- return;
- }
+ if (commandArray.length == 0) {return;}
switch (commandArray[0]) {
case "analyze":
@@ -368,6 +366,9 @@ var Terminal = {
document.getElementById("terminal-input-td").innerHTML = '';
$('input[class=terminal-input]').prop('disabled', true);
break;
+ case "buy":
+ executeDarkwebTerminalCommand(commandArray);
+ break;
case "clear":
case "cls":
if (commandArray.length != 1) {
@@ -392,6 +393,9 @@ var Terminal = {
Player.currentServer = Player.getCurrentServer().getServerOnNetwork(i).ip;
Player.getCurrentServer().isConnectedTo = true;
post("Connected to " + ip);
+ if (Player.getCurrentServer().hostname == "darkweb") {
+ checkIfConnectedToDarkweb(); //Posts a 'help' message if connecting to dark web
+ }
return;
}
}