mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-18 21:53:50 +01:00
commit
ee0fa26461
@ -145,7 +145,8 @@ background-color: #555;
|
|||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
#active-scripts-text {
|
#active-scripts-text,
|
||||||
|
#active-scripts-total-prod {
|
||||||
width: 70%;
|
width: 70%;
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
|
15
index.html
15
index.html
@ -166,6 +166,7 @@
|
|||||||
<div id="active-scripts-container">
|
<div id="active-scripts-container">
|
||||||
<p id="active-scripts-text"> This page displays a list of all scripts that are currently running across every machine. It also gives
|
<p id="active-scripts-text"> This page displays a list of all scripts that are currently running across every machine. It also gives
|
||||||
information about their production </p>
|
information about their production </p>
|
||||||
|
<p id="active-scripts-total-prod"> Total online production rate: </p>
|
||||||
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
<ul class="active-scripts-list" id="active-scripts-list" style="list-style: none;">
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -759,7 +760,19 @@
|
|||||||
<br>
|
<br>
|
||||||
<a id="save-game-link" class="a-link-button" style="display:block;"> Save Game </a>
|
<a id="save-game-link" class="a-link-button" style="display:block;"> Save Game </a>
|
||||||
<a id="delete-game-link" class="a-link-button" style="display:block;"> Delete Game </a>
|
<a id="delete-game-link" class="a-link-button" style="display:block;"> Delete Game </a>
|
||||||
<a id="debug-delete-scripts-link" class="a-link-button" style="display:block;"> (DEBUG) Delete Active Scripts </a>
|
<a id="debug-delete-scripts-link" class="a-link-button tooltip" style="display:block;">
|
||||||
|
(DEBUG) Delete Active Scripts
|
||||||
|
<span class="tooltiptext">
|
||||||
|
Debug option used to forcefully kill all active running scripts, in case there is a bug or some unexpected issue with the game. After
|
||||||
|
using this, save the game and then reload the page.
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a id="debug-soft-reset" class="a-link-button tooltip" style="display:block;">
|
||||||
|
(DEBUG) Soft Reset
|
||||||
|
<span class="tooltiptext">
|
||||||
|
Perform a soft reset. Resets everything as if you had just purchased an Augmentation
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Augmentation.prototype.setInfo = function(inf) {
|
|||||||
|
|
||||||
Augmentation.prototype.setRequirements = function(rep, cost) {
|
Augmentation.prototype.setRequirements = function(rep, cost) {
|
||||||
this.baseRepRequirement = rep;
|
this.baseRepRequirement = rep;
|
||||||
this.baseCost = cost;
|
this.baseCost = cost * CONSTANTS.AugmentationCostMultiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Takes in an array of faction names and adds this augmentation to all of those factions
|
//Takes in an array of faction names and adds this augmentation to all of those factions
|
||||||
@ -98,6 +98,13 @@ AugmentationNames = {
|
|||||||
ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
|
ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
|
||||||
ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
|
ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
|
||||||
Neuralstimulator: "Neuralstimulator",
|
Neuralstimulator: "Neuralstimulator",
|
||||||
|
NeuralAccelerator: "Neural Accelerator",
|
||||||
|
CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I",
|
||||||
|
CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II",
|
||||||
|
CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III",
|
||||||
|
CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV",
|
||||||
|
CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V",
|
||||||
|
NeuronalDensification: "Neuronal Densification",
|
||||||
NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
|
NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
|
||||||
SpeechEnhancement: "Speech Enhancement",
|
SpeechEnhancement: "Speech Enhancement",
|
||||||
FocusWire: "FocusWire",
|
FocusWire: "FocusWire",
|
||||||
@ -150,7 +157,7 @@ initAugmentations = function() {
|
|||||||
var HemoRecirculator = new Augmentation(AugmentationNames.HemoRecirculator);
|
var HemoRecirculator = new Augmentation(AugmentationNames.HemoRecirculator);
|
||||||
HemoRecirculator.setInfo("A heart implant that greatly increases the body's ability to effectively use and pump " +
|
HemoRecirculator.setInfo("A heart implant that greatly increases the body's ability to effectively use and pump " +
|
||||||
"blood. <br><br> This augmentation increases all of the player's combat stats by 15%.")
|
"blood. <br><br> This augmentation increases all of the player's combat stats by 15%.")
|
||||||
HemoRecirculator.setRequirements(4000, 8000000);
|
HemoRecirculator.setRequirements(4000, 9000000);
|
||||||
HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
|
HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
|
||||||
if (augmentationExists(AugmentationNames.HemoRecirculator)) {
|
if (augmentationExists(AugmentationNames.HemoRecirculator)) {
|
||||||
HemoRecirculator.owned = Augmentations[AugmentationNames.HemoRecirculator].owned;
|
HemoRecirculator.owned = Augmentations[AugmentationNames.HemoRecirculator].owned;
|
||||||
@ -159,7 +166,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(HemoRecirculator);
|
AddToAugmentations(HemoRecirculator);
|
||||||
|
|
||||||
var Targeting1 = new Augmentation(AugmentationNames.Targeting1);
|
var Targeting1 = new Augmentation(AugmentationNames.Targeting1);
|
||||||
Targeting1.setRequirements(2000, 2500000);
|
Targeting1.setRequirements(2000, 3000000);
|
||||||
Targeting1.setInfo("This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
|
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 " +
|
"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. <br><br>" +
|
"directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies. <br><br>" +
|
||||||
@ -173,7 +180,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(Targeting1);
|
AddToAugmentations(Targeting1);
|
||||||
|
|
||||||
var Targeting2 = new Augmentation(AugmentationNames.Targeting2);
|
var Targeting2 = new Augmentation(AugmentationNames.Targeting2);
|
||||||
Targeting2.setRequirements(3500, 7500000);
|
Targeting2.setRequirements(3500, 8500000);
|
||||||
Targeting2.setInfo("This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
|
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. <br><br>This upgrade increases the player's dexterity " +
|
"and enhances the user's balance and hand-eye coordination. <br><br>This upgrade increases the player's dexterity " +
|
||||||
"by an additional 30%.");
|
"by an additional 30%.");
|
||||||
@ -186,7 +193,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(Targeting2);
|
AddToAugmentations(Targeting2);
|
||||||
|
|
||||||
var Targeting3 = new Augmentation(AugmentationNames.Targeting3);
|
var Targeting3 = new Augmentation(AugmentationNames.Targeting3);
|
||||||
Targeting3.setRequirements(11000, 20000000);
|
Targeting3.setRequirements(11000, 23000000);
|
||||||
Targeting3.setInfo("This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
|
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. <br><br>This upgrade increases the player's dexterity " +
|
"and enhances the user's balance and hand-eye coordination. <br><br>This upgrade increases the player's dexterity " +
|
||||||
"by an additional 50%.");
|
"by an additional 50%.");
|
||||||
@ -199,7 +206,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(Targeting3);
|
AddToAugmentations(Targeting3);
|
||||||
|
|
||||||
var SyntheticHeart = new Augmentation(AugmentationNames.SyntheticHeart);
|
var SyntheticHeart = new Augmentation(AugmentationNames.SyntheticHeart);
|
||||||
SyntheticHeart.setRequirements(300000, 500000000);
|
SyntheticHeart.setRequirements(300000, 575000000);
|
||||||
SyntheticHeart.setInfo("This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
|
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.<br><br> This augmentation increases the player's agility " +
|
"at much higher efficiencies than a normal human heart.<br><br> This augmentation increases the player's agility " +
|
||||||
"and strength by 100%");
|
"and strength by 100%");
|
||||||
@ -212,7 +219,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SyntheticHeart);
|
AddToAugmentations(SyntheticHeart);
|
||||||
|
|
||||||
var SynfibrilMuscle = new Augmentation(AugmentationNames.SynfibrilMuscle);
|
var SynfibrilMuscle = new Augmentation(AugmentationNames.SynfibrilMuscle);
|
||||||
SynfibrilMuscle.setRequirements(175000, 200000000);
|
SynfibrilMuscle.setRequirements(175000, 225000000);
|
||||||
SynfibrilMuscle.setInfo("The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
|
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. " +
|
"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'.<br><br> This augmentation increases the player's " +
|
"Scientists have named these artificially enhanced units 'synfibrils'.<br><br> This augmentation increases the player's " +
|
||||||
@ -226,7 +233,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SynfibrilMuscle)
|
AddToAugmentations(SynfibrilMuscle)
|
||||||
|
|
||||||
var CombatRib1 = new Augmentation(AugmentationNames.CombatRib1);
|
var CombatRib1 = new Augmentation(AugmentationNames.CombatRib1);
|
||||||
CombatRib1.setRequirements(2500, 4000000);
|
CombatRib1.setRequirements(2500, 4500000);
|
||||||
CombatRib1.setInfo("The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
|
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.<br><br>" +
|
"and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.<br><br>" +
|
||||||
"This augmentation increases the player's strength and defense by 15%.");
|
"This augmentation increases the player's strength and defense by 15%.");
|
||||||
@ -239,7 +246,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(CombatRib1);
|
AddToAugmentations(CombatRib1);
|
||||||
|
|
||||||
var CombatRib2 = new Augmentation(AugmentationNames.CombatRib2);
|
var CombatRib2 = new Augmentation(AugmentationNames.CombatRib2);
|
||||||
CombatRib2.setRequirements(7000, 10000000);
|
CombatRib2.setRequirements(7000, 12000000);
|
||||||
CombatRib2.setInfo("This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
|
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<br><br>. This upgrade increases the player's strength and defense by an additional 25%.")
|
"drugs into the bloodstream<br><br>. This upgrade increases the player's strength and defense by an additional 25%.")
|
||||||
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
|
||||||
@ -251,7 +258,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(CombatRib2);
|
AddToAugmentations(CombatRib2);
|
||||||
|
|
||||||
var CombatRib3 = new Augmentation(AugmentationNames.CombatRib3);
|
var CombatRib3 = new Augmentation(AugmentationNames.CombatRib3);
|
||||||
CombatRib3.setRequirements(12000, 18000000);
|
CombatRib3.setRequirements(12000, 22000000);
|
||||||
CombatRib3.setInfo("This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
|
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<br><br>. This upgrade increases the player's strength and defense by an additional 35%.");
|
"drugs into the bloodstream<br><br>. This upgrade increases the player's strength and defense by an additional 35%.");
|
||||||
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
|
||||||
@ -263,7 +270,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(CombatRib3);
|
AddToAugmentations(CombatRib3);
|
||||||
|
|
||||||
var NanofiberWeave = new Augmentation(AugmentationNames.NanofiberWeave);
|
var NanofiberWeave = new Augmentation(AugmentationNames.NanofiberWeave);
|
||||||
NanofiberWeave.setRequirements(14000, 15000000);
|
NanofiberWeave.setRequirements(14000, 20000000);
|
||||||
NanofiberWeave.setInfo("Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
|
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.<br><br>" +
|
"This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.<br><br>" +
|
||||||
"This augmentation increases the player's strength and defense by 40%.");
|
"This augmentation increases the player's strength and defense by 40%.");
|
||||||
@ -276,7 +283,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(NanofiberWeave);
|
AddToAugmentations(NanofiberWeave);
|
||||||
|
|
||||||
var SubdermalArmor = new Augmentation(AugmentationNames.SubdermalArmor);
|
var SubdermalArmor = new Augmentation(AugmentationNames.SubdermalArmor);
|
||||||
SubdermalArmor.setRequirements(350000, 550000000);
|
SubdermalArmor.setRequirements(350000, 650000000);
|
||||||
SubdermalArmor.setInfo("The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
|
SubdermalArmor.setInfo("The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
|
||||||
"The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
|
"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 " +
|
"that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
|
||||||
@ -292,7 +299,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SubdermalArmor);
|
AddToAugmentations(SubdermalArmor);
|
||||||
|
|
||||||
var WiredReflexes = new Augmentation(AugmentationNames.WiredReflexes);
|
var WiredReflexes = new Augmentation(AugmentationNames.WiredReflexes);
|
||||||
WiredReflexes.setRequirements(400, 400000);
|
WiredReflexes.setRequirements(500, 500000);
|
||||||
WiredReflexes.setInfo("Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
|
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.<br><br>" +
|
"supercharging the body's ability to send signals through neurons. This results in increased reflex speed.<br><br>" +
|
||||||
"This augmentation increases the player's agility and dexterity by 10%.");
|
"This augmentation increases the player's agility and dexterity by 10%.");
|
||||||
@ -305,7 +312,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(WiredReflexes);
|
AddToAugmentations(WiredReflexes);
|
||||||
|
|
||||||
var GrapheneBoneLacings = new Augmentation(AugmentationNames.GrapheneBoneLacings);
|
var GrapheneBoneLacings = new Augmentation(AugmentationNames.GrapheneBoneLacings);
|
||||||
GrapheneBoneLacings.setRequirements(450000, 750000000);
|
GrapheneBoneLacings.setRequirements(450000, 850000000);
|
||||||
GrapheneBoneLacings.setInfo("A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
|
GrapheneBoneLacings.setInfo("A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
|
||||||
"their density and tensile strength.<br><br>" +
|
"their density and tensile strength.<br><br>" +
|
||||||
"This augmentation increases the player's strength and defense by 125%.");
|
"This augmentation increases the player's strength and defense by 125%.");
|
||||||
@ -317,7 +324,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(GrapheneBoneLacings);
|
AddToAugmentations(GrapheneBoneLacings);
|
||||||
|
|
||||||
var BionicSpine = new Augmentation(AugmentationNames.BionicSpine);
|
var BionicSpine = new Augmentation(AugmentationNames.BionicSpine);
|
||||||
BionicSpine.setRequirements(18000, 22000000);
|
BionicSpine.setRequirements(18000, 25000000);
|
||||||
BionicSpine.setInfo("An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
|
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 " +
|
"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 " +
|
"stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
|
||||||
@ -332,7 +339,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(BionicSpine);
|
AddToAugmentations(BionicSpine);
|
||||||
|
|
||||||
var GrapheneBionicSpine = new Augmentation(AugmentationNames.GrapheneBionicSpine);
|
var GrapheneBionicSpine = new Augmentation(AugmentationNames.GrapheneBionicSpine);
|
||||||
GrapheneBionicSpine.setRequirements(650000, 1000000000);
|
GrapheneBionicSpine.setRequirements(650000, 1200000000);
|
||||||
GrapheneBionicSpine.setInfo("An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
|
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.<br><br>" +
|
"material to make it much stronger and lighter.<br><br>" +
|
||||||
"This augmentation increases all of the player's combat stats by 100%.");
|
"This augmentation increases all of the player's combat stats by 100%.");
|
||||||
@ -344,7 +351,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(GrapheneBionicSpine);
|
AddToAugmentations(GrapheneBionicSpine);
|
||||||
|
|
||||||
var BionicLegs = new Augmentation(AugmentationNames.BionicLegs);
|
var BionicLegs = new Augmentation(AugmentationNames.BionicLegs);
|
||||||
BionicLegs.setRequirements(60000, 60000000);
|
BionicLegs.setRequirements(60000, 75000000);
|
||||||
BionicLegs.setInfo("Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs. <br><br>" +
|
BionicLegs.setInfo("Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs. <br><br>" +
|
||||||
"This augmentation increases the player's agility by 75%.");
|
"This augmentation increases the player's agility by 75%.");
|
||||||
BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
|
||||||
@ -356,7 +363,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(BionicLegs);
|
AddToAugmentations(BionicLegs);
|
||||||
|
|
||||||
var GrapheneBionicLegs = new Augmentation(AugmentationNames.GrapheneBionicLegs);
|
var GrapheneBionicLegs = new Augmentation(AugmentationNames.GrapheneBionicLegs);
|
||||||
GrapheneBionicLegs.setRequirements(300000, 750000000);
|
GrapheneBionicLegs.setRequirements(300000, 900000000);
|
||||||
GrapheneBionicLegs.setInfo("An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
|
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.<br><br>" +
|
"material to make it much stronger and lighter.<br><br>" +
|
||||||
"This augmentation increases the player's agility by an additional 200%.");
|
"This augmentation increases the player's agility by an additional 200%.");
|
||||||
@ -369,7 +376,7 @@ initAugmentations = function() {
|
|||||||
|
|
||||||
//Labor stat augmentations
|
//Labor stat augmentations
|
||||||
var SpeechProcessor = new Augmentation(AugmentationNames.SpeechProcessor); //Cochlear imlant?
|
var SpeechProcessor = new Augmentation(AugmentationNames.SpeechProcessor); //Cochlear imlant?
|
||||||
SpeechProcessor.setRequirements(3000, 7500000);
|
SpeechProcessor.setRequirements(3000, 10000000);
|
||||||
SpeechProcessor.setInfo("A cochlear implant with an embedded computer that analyzes incoming speech. " +
|
SpeechProcessor.setInfo("A cochlear implant with an embedded computer that analyzes incoming speech. " +
|
||||||
"The embedded computer processes characteristics of incoming speech, such as tone " +
|
"The embedded computer processes characteristics of incoming speech, such as tone " +
|
||||||
"and inflection, to pick up on subtle cues and aid in social interactions.<br><br>" +
|
"and inflection, to pick up on subtle cues and aid in social interactions.<br><br>" +
|
||||||
@ -383,7 +390,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SpeechProcessor);
|
AddToAugmentations(SpeechProcessor);
|
||||||
|
|
||||||
TITN41Injection = new Augmentation(AugmentationNames.TITN41Injection);
|
TITN41Injection = new Augmentation(AugmentationNames.TITN41Injection);
|
||||||
TITN41Injection.setRequirements(10000, 30000000);
|
TITN41Injection.setRequirements(10000, 38000000);
|
||||||
TITN41Injection.setInfo("TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
|
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 " +
|
"control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
|
||||||
"outgoing and socialable. <br><br>" +
|
"outgoing and socialable. <br><br>" +
|
||||||
@ -396,7 +403,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(TITN41Injection);
|
AddToAugmentations(TITN41Injection);
|
||||||
|
|
||||||
var EnhancedSocialInteractionImplant = new Augmentation(AugmentationNames.EnhancedSocialInteractionImplant);
|
var EnhancedSocialInteractionImplant = new Augmentation(AugmentationNames.EnhancedSocialInteractionImplant);
|
||||||
EnhancedSocialInteractionImplant.setRequirements(150000, 200000000);
|
EnhancedSocialInteractionImplant.setRequirements(150000, 250000000);
|
||||||
EnhancedSocialInteractionImplant.setInfo("A cranial implant that greatly assists in the user's ability to analyze social situations " +
|
EnhancedSocialInteractionImplant.setInfo("A cranial implant that greatly assists in the user's ability to analyze social situations " +
|
||||||
"and interactions. The system uses a wide variety of factors such as facial expression, body " +
|
"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" +
|
"language, and the voice's tone/inflection to determine the best course of action during social" +
|
||||||
@ -416,7 +423,7 @@ initAugmentations = function() {
|
|||||||
BitWire.setRequirements(1500, 2000000);
|
BitWire.setRequirements(1500, 2000000);
|
||||||
BitWire.setInfo("A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
|
BitWire.setInfo("A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
|
||||||
"capabilities. <br><br> This augmentation increases the player's hacking skill by 10%");
|
"capabilities. <br><br> This augmentation increases the player's hacking skill by 10%");
|
||||||
BitWire.addToFactions(["CyberSec", "BitRunners", "NiteSec"]);
|
BitWire.addToFactions(["CyberSec", "NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.BitWire)) {
|
if (augmentationExists(AugmentationNames.BitWire)) {
|
||||||
BitWire.owned = Augmentations[AugmentationNames.BitWire].owned;
|
BitWire.owned = Augmentations[AugmentationNames.BitWire].owned;
|
||||||
delete Augmentations[AugmentationNames.BitWire];
|
delete Augmentations[AugmentationNames.BitWire];
|
||||||
@ -424,7 +431,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(BitWire);
|
AddToAugmentations(BitWire);
|
||||||
|
|
||||||
var ArtificialBioNeuralNetwork = new Augmentation(AugmentationNames.ArtificialBioNeuralNetwork);
|
var ArtificialBioNeuralNetwork = new Augmentation(AugmentationNames.ArtificialBioNeuralNetwork);
|
||||||
ArtificialBioNeuralNetwork.setRequirements(110000, 500000000);
|
ArtificialBioNeuralNetwork.setRequirements(110000, 600000000);
|
||||||
ArtificialBioNeuralNetwork.setInfo("A network consisting of millions of nanoprocessors is embedded into the brain. " +
|
ArtificialBioNeuralNetwork.setInfo("A network consisting of millions of nanoprocessors is embedded into the brain. " +
|
||||||
"The network is meant to mimick the way a biological brain solves a problem, which each " +
|
"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 " +
|
"nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
|
||||||
@ -442,7 +449,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ArtificialBioNeuralNetwork);
|
AddToAugmentations(ArtificialBioNeuralNetwork);
|
||||||
|
|
||||||
var ArtificialSynapticPotentiation = new Augmentation(AugmentationNames.ArtificialSynapticPotentiation);
|
var ArtificialSynapticPotentiation = new Augmentation(AugmentationNames.ArtificialSynapticPotentiation);
|
||||||
ArtificialSynapticPotentiation.setRequirements(2500, 14000000);
|
ArtificialSynapticPotentiation.setRequirements(2500, 16000000);
|
||||||
ArtificialSynapticPotentiation.setInfo("The body is injected with a chemical that artificially induces synaptic potentiation, " +
|
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.<br><br>" +
|
"otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.<br><br>" +
|
||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
@ -457,7 +464,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ArtificialSynapticPotentiation);
|
AddToAugmentations(ArtificialSynapticPotentiation);
|
||||||
|
|
||||||
var EnhancedMyelinSheathing = new Augmentation(AugmentationNames.EnhancedMyelinSheathing);
|
var EnhancedMyelinSheathing = new Augmentation(AugmentationNames.EnhancedMyelinSheathing);
|
||||||
EnhancedMyelinSheathing.setRequirements(40000, 225000000);
|
EnhancedMyelinSheathing.setRequirements(40000, 275000000);
|
||||||
EnhancedMyelinSheathing.setInfo("Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
|
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 " +
|
"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 " +
|
"system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
|
||||||
@ -474,7 +481,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(EnhancedMyelinSheathing);
|
AddToAugmentations(EnhancedMyelinSheathing);
|
||||||
|
|
||||||
var SynapticEnhancement = new Augmentation(AugmentationNames.SynapticEnhancement);
|
var SynapticEnhancement = new Augmentation(AugmentationNames.SynapticEnhancement);
|
||||||
SynapticEnhancement.setRequirements(800, 1100000);
|
SynapticEnhancement.setRequirements(800, 1500000);
|
||||||
SynapticEnhancement.setInfo("A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
|
SynapticEnhancement.setInfo("A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
|
||||||
"induce stronger synaptic activity. This improves the user's cognitive abilities.<br><br>" +
|
"induce stronger synaptic activity. This improves the user's cognitive abilities.<br><br>" +
|
||||||
"This augmentation increases the player's hacking speed by 3%.");
|
"This augmentation increases the player's hacking speed by 3%.");
|
||||||
@ -486,7 +493,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SynapticEnhancement);
|
AddToAugmentations(SynapticEnhancement);
|
||||||
|
|
||||||
var NeuralRetentionEnhancement = new Augmentation(AugmentationNames.NeuralRetentionEnhancement);
|
var NeuralRetentionEnhancement = new Augmentation(AugmentationNames.NeuralRetentionEnhancement);
|
||||||
NeuralRetentionEnhancement.setRequirements(8000, 40000000);
|
NeuralRetentionEnhancement.setRequirements(8000, 50000000);
|
||||||
NeuralRetentionEnhancement.setInfo("Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
|
NeuralRetentionEnhancement.setInfo("Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
|
||||||
"circuits, strengthening its ability to retain information.<br><br>" +
|
"circuits, strengthening its ability to retain information.<br><br>" +
|
||||||
"This augmentation increases the player's hacking experience gain rate by 40%.");
|
"This augmentation increases the player's hacking experience gain rate by 40%.");
|
||||||
@ -498,7 +505,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(NeuralRetentionEnhancement);
|
AddToAugmentations(NeuralRetentionEnhancement);
|
||||||
|
|
||||||
var DataJack = new Augmentation(AugmentationNames.DataJack);
|
var DataJack = new Augmentation(AugmentationNames.DataJack);
|
||||||
DataJack.setRequirements(45000, 75000000);
|
DataJack.setRequirements(45000, 90000000);
|
||||||
DataJack.setInfo("A brain implant that provides an interface for direct, wireless communication between a computer's main " +
|
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 " +
|
"memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
|
||||||
"and delete it.<br><br>" +
|
"and delete it.<br><br>" +
|
||||||
@ -511,7 +518,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(DataJack);
|
AddToAugmentations(DataJack);
|
||||||
|
|
||||||
var ENM = new Augmentation(AugmentationNames.ENM);
|
var ENM = new Augmentation(AugmentationNames.ENM);
|
||||||
ENM.setRequirements(6000, 40000000);
|
ENM.setRequirements(6000, 50000000);
|
||||||
ENM.setInfo("A thin device embedded inside the arm containing a wireless module capable of connecting " +
|
ENM.setInfo("A thin device embedded inside the arm containing a wireless module capable of connecting " +
|
||||||
"to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
|
"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 " +
|
"processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
|
||||||
@ -527,7 +534,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENM);
|
AddToAugmentations(ENM);
|
||||||
|
|
||||||
var ENMCore = new Augmentation(AugmentationNames.ENMCore);
|
var ENMCore = new Augmentation(AugmentationNames.ENMCore);
|
||||||
ENMCore.setRequirements(100000, 400000000);
|
ENMCore.setRequirements(100000, 500000000);
|
||||||
ENMCore.setInfo("The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
|
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.<br><br>" +
|
"This upgrade allows the Embedded Netburner Module to generate its own data on a network.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
@ -545,7 +552,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENMCore);
|
AddToAugmentations(ENMCore);
|
||||||
|
|
||||||
var ENMCoreV2 = new Augmentation(AugmentationNames.ENMCoreV2);
|
var ENMCoreV2 = new Augmentation(AugmentationNames.ENMCoreV2);
|
||||||
ENMCoreV2.setRequirements(400000, 800000000);
|
ENMCoreV2.setRequirements(400000, 900000000);
|
||||||
ENMCoreV2.setInfo("The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
|
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 " +
|
"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 " +
|
"a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
|
||||||
@ -565,7 +572,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENMCoreV2);
|
AddToAugmentations(ENMCoreV2);
|
||||||
|
|
||||||
var ENMCoreV3 = new Augmentation(AugmentationNames.ENMCoreV3);
|
var ENMCoreV3 = new Augmentation(AugmentationNames.ENMCoreV3);
|
||||||
ENMCoreV3.setRequirements(700000, 1200000000);
|
ENMCoreV3.setRequirements(700000, 1500000000);
|
||||||
ENMCoreV3.setInfo("The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
|
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 " +
|
"This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
|
||||||
"any device on a network.<br><br>" +
|
"any device on a network.<br><br>" +
|
||||||
@ -584,7 +591,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENMCoreV3);
|
AddToAugmentations(ENMCoreV3);
|
||||||
|
|
||||||
var ENMAnalyzeEngine = new Augmentation(AugmentationNames.ENMAnalyzeEngine);
|
var ENMAnalyzeEngine = new Augmentation(AugmentationNames.ENMAnalyzeEngine);
|
||||||
ENMAnalyzeEngine.setRequirements(250000, 1000000000);
|
ENMAnalyzeEngine.setRequirements(250000, 1200000000);
|
||||||
ENMAnalyzeEngine.setInfo("Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
|
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.<br><br>" +
|
"that vastly outperforms the Netburner Module's native single-core processor.<br><br>" +
|
||||||
"This augmentation increases the player's hacking speed by 10%.");
|
"This augmentation increases the player's hacking speed by 10%.");
|
||||||
@ -597,7 +604,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENMAnalyzeEngine);
|
AddToAugmentations(ENMAnalyzeEngine);
|
||||||
|
|
||||||
var ENMDMA = new Augmentation(AugmentationNames.ENMDMA);
|
var ENMDMA = new Augmentation(AugmentationNames.ENMDMA);
|
||||||
ENMDMA.setRequirements(400000, 1100000000);
|
ENMDMA.setRequirements(400000, 1400000000);
|
||||||
ENMDMA.setInfo("This implant installs a Direct Memory Access (DMA) controller into the " +
|
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 " +
|
"Embedded Netburner Module. This allows the Module to send and receive data " +
|
||||||
"directly to and from the main memory of devices on a network.<br><br>" +
|
"directly to and from the main memory of devices on a network.<br><br>" +
|
||||||
@ -613,7 +620,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(ENMDMA);
|
AddToAugmentations(ENMDMA);
|
||||||
|
|
||||||
var Neuralstimulator = new Augmentation(AugmentationNames.Neuralstimulator);
|
var Neuralstimulator = new Augmentation(AugmentationNames.Neuralstimulator);
|
||||||
Neuralstimulator.setRequirements(20000, 500000000);
|
Neuralstimulator.setRequirements(20000, 600000000);
|
||||||
Neuralstimulator.setInfo("A cranial implant that intelligently stimulates certain areas of the brain " +
|
Neuralstimulator.setInfo("A cranial implant that intelligently stimulates certain areas of the brain " +
|
||||||
"in order to improve cognitive functions<br><br>" +
|
"in order to improve cognitive functions<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
@ -629,9 +636,123 @@ initAugmentations = function() {
|
|||||||
}
|
}
|
||||||
AddToAugmentations(Neuralstimulator);
|
AddToAugmentations(Neuralstimulator);
|
||||||
|
|
||||||
|
var NeuralAccelerator = new Augmentation(AugmentationNames.NeuralAccelerator);
|
||||||
|
NeuralAccelerator.setRequirements(80000, 350000000);
|
||||||
|
NeuralAccelerator.setInfo("A microprocessor that accelerates the processing " +
|
||||||
|
"speed of biological neural networks. This is a cranial implant that is embedded inside the brain. <br><br>" +
|
||||||
|
"This augmentation: <br>" +
|
||||||
|
"Increases the player's hacking skill by 20%<br>" +
|
||||||
|
"Increases the player's hacking experience gain rate by 20%<br>" +
|
||||||
|
"Increases the amount of money the player gains from hacking by 20%");
|
||||||
|
NeuralAccelerator.addToFactions(["BitRunners"]);
|
||||||
|
if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
|
||||||
|
NeuralAccelerator.owned = Augmentations[AugmentationNames.NeuralAccelerator].owned;
|
||||||
|
delete Augmentations[AugmentationNames.NeuralAccelerator];
|
||||||
|
}
|
||||||
|
AddToAugmentations(NeuralAccelerator);
|
||||||
|
|
||||||
|
var CranialSignalProcessorsG1 = new Augmentation(AugmentationNames.CranialSignalProcessorsG1);
|
||||||
|
CranialSignalProcessorsG1.setRequirements(4000, 18000000);
|
||||||
|
CranialSignalProcessorsG1.setInfo("The first generation of Cranial Signal Processors. Cranial Signal Processors " +
|
||||||
|
"are a set of specialized microprocessors that are attached to " +
|
||||||
|
"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
|
||||||
|
"so that the brain doesn't have to. <br><br>" +
|
||||||
|
"This augmentation: <br>" +
|
||||||
|
"Increases the player's hacking speed by 1%<br>" +
|
||||||
|
"Increases the player's hacking skill by 10%");
|
||||||
|
CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
|
||||||
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
|
||||||
|
CranialSignalProcessorsG1.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG1].owned;
|
||||||
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
|
||||||
|
}
|
||||||
|
AddToAugmentations(CranialSignalProcessorsG1);
|
||||||
|
|
||||||
|
var CranialSignalProcessorsG2 = new Augmentation(AugmentationNames.CranialSignalProcessorsG2);
|
||||||
|
CranialSignalProcessorsG2.setRequirements(7500, 25000000);
|
||||||
|
CranialSignalProcessorsG2.setInfo("The second generation of Cranial Signal Processors. Cranial Signal Processors " +
|
||||||
|
"are a set of specialized microprocessors that are attached to " +
|
||||||
|
"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
|
||||||
|
"so that the brain doesn't have to. <br><br>" +
|
||||||
|
"This augmentation: <br>" +
|
||||||
|
"Increases the player's hacking speed by 2%<br>" +
|
||||||
|
"Increases the player's chance of successfully performing a hack by 5%<br>" +
|
||||||
|
"Increases the player's hacking skill by 10%");
|
||||||
|
CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
|
||||||
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
|
||||||
|
CranialSignalProcessorsG2.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG2].owned;
|
||||||
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
|
||||||
|
}
|
||||||
|
AddToAugmentations(CranialSignalProcessorsG2);
|
||||||
|
|
||||||
|
var CranialSignalProcessorsG3 = new Augmentation(AugmentationNames.CranialSignalProcessorsG3);
|
||||||
|
CranialSignalProcessorsG3.setRequirements(20000, 110000000);
|
||||||
|
CranialSignalProcessorsG3.setInfo("The third generation of Cranial Signal Processors. Cranial Signal Processors " +
|
||||||
|
"are a set of specialized microprocessors that are attached to " +
|
||||||
|
"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
|
||||||
|
"so that the brain doesn't have to. <br><br>" +
|
||||||
|
"This augmentation:<br>" +
|
||||||
|
"Increases the player's hacking speed by 2%<br>" +
|
||||||
|
"Increases the amount of money the player gains from hacking by 20%<br>" +
|
||||||
|
"Increases the player's hacking skill by 10%");
|
||||||
|
CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
|
||||||
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
|
||||||
|
CranialSignalProcessorsG3.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG3].owned;
|
||||||
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
|
||||||
|
}
|
||||||
|
AddToAugmentations(CranialSignalProcessorsG3);
|
||||||
|
|
||||||
|
var CranialSignalProcessorsG4 = new Augmentation(AugmentationNames.CranialSignalProcessorsG4);
|
||||||
|
CranialSignalProcessorsG4.setRequirements(50000, 220000000);
|
||||||
|
CranialSignalProcessorsG4.setInfo("The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
|
||||||
|
"are a set of specialized microprocessors that are attached to " +
|
||||||
|
"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
|
||||||
|
"so that the brain doesn't have to. <br><br>" +
|
||||||
|
"This augmentation: <br>" +
|
||||||
|
"Increases the player's hacking speed by 2%<br>" +
|
||||||
|
"Increases the amount of money the player gains from hacking by 25%<br>" +
|
||||||
|
"Increases the amount of money the player can inject into servers using grow() by 25%");
|
||||||
|
CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
|
||||||
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
|
||||||
|
CranialSignalProcessorsG4.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG4].owned;
|
||||||
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
|
||||||
|
}
|
||||||
|
AddToAugmentations(CranialSignalProcessorsG4);
|
||||||
|
|
||||||
|
var CranialSignalProcessorsG5 = new Augmentation(AugmentationNames.CranialSignalProcessorsG5);
|
||||||
|
CranialSignalProcessorsG5.setRequirements(100000, 450000000);
|
||||||
|
CranialSignalProcessorsG5.setInfo("The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
|
||||||
|
"are a set of specialized microprocessors that are attached to " +
|
||||||
|
"neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
|
||||||
|
"so that the brain doesn't have to. <br><br>" +
|
||||||
|
"This augmentation:<br>" +
|
||||||
|
"Increases the player's hacking skill by 60%<br>" +
|
||||||
|
"Increases the amount of money the player can inject into servers using grow() by 50%");
|
||||||
|
CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
|
||||||
|
if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
|
||||||
|
CranialSignalProcessorsG5.owned = Augmentations[AugmentationNames.CranialSignalProcessorsG5].owned;
|
||||||
|
delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
|
||||||
|
}
|
||||||
|
AddToAugmentations(CranialSignalProcessorsG5);
|
||||||
|
|
||||||
|
var NeuronalDensification = new Augmentation(AugmentationNames.NeuronalDensification);
|
||||||
|
NeuronalDensification.setRequirements(75000, 275000000);
|
||||||
|
NeuronalDensification.setInfo("The brain is surgically re-engineered to have increased neuronal density " +
|
||||||
|
"by decreasing the neuron gap junction. Then, the body is genetically modified " +
|
||||||
|
"to enhance the production and capabilities of its neural stem cells. <br><br>" +
|
||||||
|
"This augmentation: <br>" +
|
||||||
|
"Increases the player's hacking skill by 30%<br>" +
|
||||||
|
"Increases the player's hacking experience gain rate by 30%<br>"+
|
||||||
|
"Increases the player's hacking speed by 3%");
|
||||||
|
NeuronalDensification.addToFactions(["Clarke Incorporated"]);
|
||||||
|
if (augmentationExists(AugmentationNames.NeuronalDensification)) {
|
||||||
|
NeuronalDensification.owned = Augmentations[AugmentationNames.NeuronalDensification].owned;
|
||||||
|
delete Augmentations[AugmentationNames.NeuronalDensification];
|
||||||
|
}
|
||||||
|
AddToAugmentations(NeuronalDensification);
|
||||||
|
|
||||||
//Work Augmentations
|
//Work Augmentations
|
||||||
var NuoptimalInjectorImplant = new Augmentation(AugmentationNames.NuoptimalInjectorImplant);
|
var NuoptimalInjectorImplant = new Augmentation(AugmentationNames.NuoptimalInjectorImplant);
|
||||||
NuoptimalInjectorImplant.setRequirements(2000, 2500000);
|
NuoptimalInjectorImplant.setRequirements(2000, 3000000);
|
||||||
NuoptimalInjectorImplant.setInfo("This torso implant automatically injects nootropic supplements into " +
|
NuoptimalInjectorImplant.setInfo("This torso implant automatically injects nootropic supplements into " +
|
||||||
"the bloodstream to improve memory, increase focus, and provide other " +
|
"the bloodstream to improve memory, increase focus, and provide other " +
|
||||||
"cognitive enhancements.<br><br>" +
|
"cognitive enhancements.<br><br>" +
|
||||||
@ -646,7 +767,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(NuoptimalInjectorImplant);
|
AddToAugmentations(NuoptimalInjectorImplant);
|
||||||
|
|
||||||
var SpeechEnhancement = new Augmentation(AugmentationNames.SpeechEnhancement);
|
var SpeechEnhancement = new Augmentation(AugmentationNames.SpeechEnhancement);
|
||||||
SpeechEnhancement.setRequirements(1000, 1750000);
|
SpeechEnhancement.setRequirements(1000, 2500000);
|
||||||
SpeechEnhancement.setInfo("An advanced neural implant that improves your speaking abilities, making " +
|
SpeechEnhancement.setInfo("An advanced neural implant that improves your speaking abilities, making " +
|
||||||
"you more convincing and likable in conversations and overall improving your " +
|
"you more convincing and likable in conversations and overall improving your " +
|
||||||
"social interactions.<br><br>" +
|
"social interactions.<br><br>" +
|
||||||
@ -662,7 +783,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(SpeechEnhancement);
|
AddToAugmentations(SpeechEnhancement);
|
||||||
|
|
||||||
var FocusWire = new Augmentation(AugmentationNames.FocusWire); //Stops procrastination
|
var FocusWire = new Augmentation(AugmentationNames.FocusWire); //Stops procrastination
|
||||||
FocusWire.setRequirements(30000, 150000000);
|
FocusWire.setRequirements(30000, 180000000);
|
||||||
FocusWire.setInfo("A cranial implant that stops procrastination by blocking specific neural pathways " +
|
FocusWire.setInfo("A cranial implant that stops procrastination by blocking specific neural pathways " +
|
||||||
"in the brain.<br><br>" +
|
"in the brain.<br><br>" +
|
||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
@ -677,7 +798,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(FocusWire)
|
AddToAugmentations(FocusWire)
|
||||||
|
|
||||||
var PCDNI = new Augmentation(AugmentationNames.PCDNI);
|
var PCDNI = new Augmentation(AugmentationNames.PCDNI);
|
||||||
PCDNI.setRequirements(150000, 650000000);
|
PCDNI.setRequirements(150000, 750000000);
|
||||||
PCDNI.setInfo("Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
|
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 " +
|
"computers. Connecting to a computer through this jack allows you to interface with " +
|
||||||
"it using the brain's electrochemical signals.<br><br>" +
|
"it using the brain's electrochemical signals.<br><br>" +
|
||||||
@ -707,7 +828,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(PCDNIOptimizer);
|
AddToAugmentations(PCDNIOptimizer);
|
||||||
|
|
||||||
var PCDNINeuralNetwork = new Augmentation(AugmentationNames.PCDNINeuralNetwork);
|
var PCDNINeuralNetwork = new Augmentation(AugmentationNames.PCDNINeuralNetwork);
|
||||||
PCDNINeuralNetwork.setRequirements(600000, 1100000000);
|
PCDNINeuralNetwork.setRequirements(600000, 1300000000);
|
||||||
PCDNINeuralNetwork.setInfo("This is an additional installation that upgrades the functionality of the " +
|
PCDNINeuralNetwork.setInfo("This is an additional installation that upgrades the functionality of the " +
|
||||||
"PC Direct-Neural Interface augmentation. When connected to a computer, " +
|
"PC Direct-Neural Interface augmentation. When connected to a computer, " +
|
||||||
"The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
|
"The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
|
||||||
@ -724,7 +845,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(PCDNINeuralNetwork);
|
AddToAugmentations(PCDNINeuralNetwork);
|
||||||
|
|
||||||
var ADRPheromone1 = new Augmentation(AugmentationNames.ADRPheromone1);
|
var ADRPheromone1 = new Augmentation(AugmentationNames.ADRPheromone1);
|
||||||
ADRPheromone1.setRequirements(1250, 2000000);
|
ADRPheromone1.setRequirements(1250, 2600000);
|
||||||
ADRPheromone1.setInfo("The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
|
ADRPheromone1.setInfo("The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
|
||||||
"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
|
"an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
|
||||||
"triggers feelings of admiration and approval in other people. <br><br>" +
|
"triggers feelings of admiration and approval in other people. <br><br>" +
|
||||||
@ -740,12 +861,12 @@ initAugmentations = function() {
|
|||||||
|
|
||||||
//HacknetNode Augmentations
|
//HacknetNode Augmentations
|
||||||
var HacknetNodeCPUUpload = new Augmentation(AugmentationNames.HacknetNodeCPUUpload);
|
var HacknetNodeCPUUpload = new Augmentation(AugmentationNames.HacknetNodeCPUUpload);
|
||||||
HacknetNodeCPUUpload.setRequirements(1500, 2000000);
|
HacknetNodeCPUUpload.setRequirements(1500, 2200000);
|
||||||
HacknetNodeCPUUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's CPU into " +
|
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 " +
|
"the brain. This allows the user to engineer custom hardware and software " +
|
||||||
"for the Hacknet Node that provides better performance.<br><br>" +
|
"for the Hacknet Node that provides better performance.<br><br>" +
|
||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the amount of money produced by Hacknet Nodes by 20%<br>" +
|
"Increases the amount of money produced by Hacknet Nodes by 15%<br>" +
|
||||||
"Decreases the cost of purchasing a Hacknet Node Core by 15%");
|
"Decreases the cost of purchasing a Hacknet Node Core by 15%");
|
||||||
HacknetNodeCPUUpload.addToFactions(["Netburners"]);
|
HacknetNodeCPUUpload.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
|
||||||
@ -755,12 +876,12 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(HacknetNodeCPUUpload);
|
AddToAugmentations(HacknetNodeCPUUpload);
|
||||||
|
|
||||||
var HacknetNodeCacheUpload = new Augmentation(AugmentationNames.HacknetNodeCacheUpload);
|
var HacknetNodeCacheUpload = new Augmentation(AugmentationNames.HacknetNodeCacheUpload);
|
||||||
HacknetNodeCacheUpload.setRequirements(1000, 1000000);
|
HacknetNodeCacheUpload.setRequirements(1000, 1100000);
|
||||||
HacknetNodeCacheUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
|
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 " +
|
"into the brain. This allows the user to engineer custom cache hardware for the " +
|
||||||
"Hacknet Node that offers better performance.<br><br>" +
|
"Hacknet Node that offers better performance.<br><br>" +
|
||||||
"This augmentation:<br> " +
|
"This augmentation:<br> " +
|
||||||
"Increases the amount of money produced by Hacknet Nodes by 15%<br>" +
|
"Increases the amount of money produced by Hacknet Nodes by 10%<br>" +
|
||||||
"Decreases the cost of leveling up a Hacknet Node by 15%");
|
"Decreases the cost of leveling up a Hacknet Node by 15%");
|
||||||
HacknetNodeCacheUpload.addToFactions(["Netburners"]);
|
HacknetNodeCacheUpload.addToFactions(["Netburners"]);
|
||||||
if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
|
if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
|
||||||
@ -770,7 +891,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(HacknetNodeCacheUpload);
|
AddToAugmentations(HacknetNodeCacheUpload);
|
||||||
|
|
||||||
var HacknetNodeNICUpload = new Augmentation(AugmentationNames.HacknetNodeNICUpload);
|
var HacknetNodeNICUpload = new Augmentation(AugmentationNames.HacknetNodeNICUpload);
|
||||||
HacknetNodeNICUpload.setRequirements(750, 750000);
|
HacknetNodeNICUpload.setRequirements(750, 900000);
|
||||||
HacknetNodeNICUpload.setInfo("Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
|
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 " +
|
"into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
|
||||||
"offers better performance.<br><br>" +
|
"offers better performance.<br><br>" +
|
||||||
@ -785,7 +906,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(HacknetNodeNICUpload);
|
AddToAugmentations(HacknetNodeNICUpload);
|
||||||
|
|
||||||
var HacknetNodeKernelDNI = new Augmentation(AugmentationNames.HacknetNodeKernelDNI);
|
var HacknetNodeKernelDNI = new Augmentation(AugmentationNames.HacknetNodeKernelDNI);
|
||||||
HacknetNodeKernelDNI.setRequirements(3000, 6000000);
|
HacknetNodeKernelDNI.setRequirements(3000, 8000000);
|
||||||
HacknetNodeKernelDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
|
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 " +
|
"Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
|
||||||
"electrochemical signals.<br><br>" +
|
"electrochemical signals.<br><br>" +
|
||||||
@ -798,7 +919,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(HacknetNodeKernelDNI);
|
AddToAugmentations(HacknetNodeKernelDNI);
|
||||||
|
|
||||||
var HacknetNodeCoreDNI = new Augmentation(AugmentationNames.HacknetNodeCoreDNI);
|
var HacknetNodeCoreDNI = new Augmentation(AugmentationNames.HacknetNodeCoreDNI);
|
||||||
HacknetNodeCoreDNI.setRequirements(5000, 10000000);
|
HacknetNodeCoreDNI.setRequirements(5000, 12000000);
|
||||||
HacknetNodeCoreDNI.setInfo("Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
|
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 " +
|
"to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
|
||||||
"the mind's electrochemical signals.<br><br>" +
|
"the mind's electrochemical signals.<br><br>" +
|
||||||
@ -817,7 +938,7 @@ initAugmentations = function() {
|
|||||||
NeuroFluxGovernor.owned = oldAug.owned;
|
NeuroFluxGovernor.owned = oldAug.owned;
|
||||||
NeuroFluxGovernor.level = oldAug.level;
|
NeuroFluxGovernor.level = oldAug.level;
|
||||||
mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
|
mult = Math.pow(CONSTANTS.NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
|
||||||
NeuroFluxGovernor.setRequirements(300 * mult, 600000 * mult);
|
NeuroFluxGovernor.setRequirements(500 * mult, 750000 * mult);
|
||||||
delete Augmentations[AugmentationNames.NeuroFluxGovernor];
|
delete Augmentations[AugmentationNames.NeuroFluxGovernor];
|
||||||
} else {
|
} else {
|
||||||
NeuroFluxGovernor.setRequirements(250, 500000);
|
NeuroFluxGovernor.setRequirements(250, 500000);
|
||||||
@ -832,7 +953,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(NeuroFluxGovernor);
|
AddToAugmentations(NeuroFluxGovernor);
|
||||||
|
|
||||||
var Neurotrainer1 = new Augmentation(AugmentationNames.Neurotrainer1);
|
var Neurotrainer1 = new Augmentation(AugmentationNames.Neurotrainer1);
|
||||||
Neurotrainer1.setRequirements(400, 600000);
|
Neurotrainer1.setRequirements(400, 800000);
|
||||||
Neurotrainer1.setInfo("A decentralized cranial implant that improves the brain's ability to learn. It is " +
|
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 " +
|
"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 " +
|
"attaches to a different neural pathway to enhance the brain's ability to retain " +
|
||||||
@ -846,7 +967,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(Neurotrainer1);
|
AddToAugmentations(Neurotrainer1);
|
||||||
|
|
||||||
var Neurotrainer2 = new Augmentation(AugmentationNames.Neurotrainer2);
|
var Neurotrainer2 = new Augmentation(AugmentationNames.Neurotrainer2);
|
||||||
Neurotrainer2.setRequirements(4000, 7500000);
|
Neurotrainer2.setRequirements(4000, 8500000);
|
||||||
Neurotrainer2.setInfo("A decentralized cranial implant that improves the brain's ability to learn. This " +
|
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 " +
|
"is a more powerful version of the Neurotrainer I augmentation, but it does not " +
|
||||||
"require Neurotrainer I to be installed as a prerequisite.<br><br>" +
|
"require Neurotrainer I to be installed as a prerequisite.<br><br>" +
|
||||||
@ -859,7 +980,7 @@ initAugmentations = function() {
|
|||||||
AddToAugmentations(Neurotrainer2);
|
AddToAugmentations(Neurotrainer2);
|
||||||
|
|
||||||
var Neurotrainer3 = new Augmentation(AugmentationNames.Neurotrainer3);
|
var Neurotrainer3 = new Augmentation(AugmentationNames.Neurotrainer3);
|
||||||
Neurotrainer3.setRequirements(10000, 22000000);
|
Neurotrainer3.setRequirements(10000, 25000000);
|
||||||
Neurotrainer3.setInfo("A decentralized cranial implant that improves the brain's ability to learn. This " +
|
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, " +
|
"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.<br><br>" +
|
"but it does not require either of them to be installed as a prerequisite.<br><br>" +
|
||||||
@ -879,7 +1000,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's dexterity by 50%<br>" +
|
"Increases the player's dexterity by 50%<br>" +
|
||||||
"Increases the player's hacking speed by 3%<br>" +
|
"Increases the player's hacking speed by 3%<br>" +
|
||||||
"Increases the amount of money the player gains from hacking by 10%");
|
"Increases the amount of money the player gains from hacking by 10%");
|
||||||
Hypersight.setRequirements(60000, 450000000);
|
Hypersight.setRequirements(60000, 550000000);
|
||||||
Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
|
Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.Hypersight)) {
|
if (augmentationExists(AugmentationNames.Hypersight)) {
|
||||||
Hypersight.owned = Augmentations[AugmentationNames.Hypersight].owned;
|
Hypersight.owned = Augmentations[AugmentationNames.Hypersight].owned;
|
||||||
@ -894,7 +1015,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Increases the player's agility by 5% <br>" +
|
"Increases the player's agility by 5% <br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 10%");
|
"Increases the amount of money the player gains from crimes by 10%");
|
||||||
LuminCloaking1.setRequirements(600, 750000);
|
LuminCloaking1.setRequirements(600, 1000000);
|
||||||
LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
|
LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.LuminCloaking1)) {
|
if (augmentationExists(AugmentationNames.LuminCloaking1)) {
|
||||||
LuminCloaking1.owned = Augmentations[AugmentationNames.LuminCloaking1].owned;
|
LuminCloaking1.owned = Augmentations[AugmentationNames.LuminCloaking1].owned;
|
||||||
@ -911,7 +1032,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's agility by 10% <br>" +
|
"Increases the player's agility by 10% <br>" +
|
||||||
"Increases the player's defense by 10% <br>" +
|
"Increases the player's defense by 10% <br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 25%");
|
"Increases the amount of money the player gains from crimes by 25%");
|
||||||
LuminCloaking2.setRequirements(2000, 4000000);
|
LuminCloaking2.setRequirements(2000, 5000000);
|
||||||
LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
|
LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.LuminCloaking2)) {
|
if (augmentationExists(AugmentationNames.LuminCloaking2)) {
|
||||||
LuminCloaking2.owned = Augmentations[AugmentationNames.LuminCloaking2].owned;
|
LuminCloaking2.owned = Augmentations[AugmentationNames.LuminCloaking2].owned;
|
||||||
@ -926,7 +1047,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's dexterity by 10%<br>" +
|
"Increases the player's dexterity by 10%<br>" +
|
||||||
"Increases the player's dexterity experience gain rate by 15%<br>" +
|
"Increases the player's dexterity experience gain rate by 15%<br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 25%");
|
"Increases the amount of money the player gains from crimes by 25%");
|
||||||
SmartSonar.setRequirements(9000, 10000000);
|
SmartSonar.setRequirements(9000, 12000000);
|
||||||
SmartSonar.addToFactions(["Slum Snakes"]);
|
SmartSonar.addToFactions(["Slum Snakes"]);
|
||||||
if (augmentationExists(AugmentationNames.SmartSonar)) {
|
if (augmentationExists(AugmentationNames.SmartSonar)) {
|
||||||
SmartSonar.owned = Augmentations[AugmentationNames.SmartSonar].owned;
|
SmartSonar.owned = Augmentations[AugmentationNames.SmartSonar].owned;
|
||||||
@ -941,7 +1062,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Increases all of the player's stats by 10%<br>" +
|
"Increases all of the player's stats by 10%<br>" +
|
||||||
"Increases the player's experience gain rate for all stats by 10%");
|
"Increases the player's experience gain rate for all stats by 10%");
|
||||||
PowerRecirculator.setRequirements(10000, 30000000);
|
PowerRecirculator.setRequirements(10000, 33000000);
|
||||||
PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
|
PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
|
||||||
if (augmentationExists(AugmentationNames.PowerRecirculator)) {
|
if (augmentationExists(AugmentationNames.PowerRecirculator)) {
|
||||||
PowerRecirculator.owned = Augmentations[AugmentationNames.PowerRecirculator].owned;
|
PowerRecirculator.owned = Augmentations[AugmentationNames.PowerRecirculator].owned;
|
||||||
@ -963,7 +1084,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking speed by 10%<br>" +
|
"Increases the player's hacking speed by 10%<br>" +
|
||||||
"Increases the player's chance of successfully performing a hack by 30%<br>" +
|
"Increases the player's chance of successfully performing a hack by 30%<br>" +
|
||||||
"Increases the amount of money the player gains from hacking by 100%");
|
"Increases the amount of money the player gains from hacking by 100%");
|
||||||
QLink.setRequirements(750000, 1000000000);
|
QLink.setRequirements(750000, 1200000000);
|
||||||
QLink.addToFactions(["Illuminati"]);
|
QLink.addToFactions(["Illuminati"]);
|
||||||
if (augmentationExists(AugmentationNames.QLink)) {
|
if (augmentationExists(AugmentationNames.QLink)) {
|
||||||
QLink.owned = Augmentations[AugmentationNames.QLink].owned;
|
QLink.owned = Augmentations[AugmentationNames.QLink].owned;
|
||||||
@ -983,7 +1104,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Increases all of the player's combat stats by 75%<br>" +
|
"Increases all of the player's combat stats by 75%<br>" +
|
||||||
"Increases the player's hacking skill by 25%");
|
"Increases the player's hacking skill by 25%");
|
||||||
SPTN97.setRequirements(500000, 850000000);
|
SPTN97.setRequirements(500000, 950000000);
|
||||||
SPTN97.addToFactions(["The Covenant"]);
|
SPTN97.addToFactions(["The Covenant"]);
|
||||||
if (augmentationExists(AugmentationNames.SPTN97)) {
|
if (augmentationExists(AugmentationNames.SPTN97)) {
|
||||||
SPTN97.owned = Augmentations[AugmentationNames.SPTN97].owned;
|
SPTN97.owned = Augmentations[AugmentationNames.SPTN97].owned;
|
||||||
@ -996,7 +1117,7 @@ initAugmentations = function() {
|
|||||||
HiveMind.setInfo("A brain implant developed by ECorp. They do not reveal what " +
|
HiveMind.setInfo("A brain implant developed by ECorp. They do not reveal what " +
|
||||||
"exactly the implant does, but they promise that it will greatly " +
|
"exactly the implant does, but they promise that it will greatly " +
|
||||||
"enhance your abilities.");
|
"enhance your abilities.");
|
||||||
HiveMind.setRequirements(600000, 925000000);
|
HiveMind.setRequirements(600000, 1000000000);
|
||||||
HiveMind.addToFactions(["ECorp"]);
|
HiveMind.addToFactions(["ECorp"]);
|
||||||
if (augmentationExists(AugmentationNames.HiveMind)) {
|
if (augmentationExists(AugmentationNames.HiveMind)) {
|
||||||
HiveMind.owned = Augmentations[AugmentationNames.HiveMind].owned;
|
HiveMind.owned = Augmentations[AugmentationNames.HiveMind].owned;
|
||||||
@ -1013,7 +1134,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases all of the player's combat stats by 40%<br>" +
|
"Increases all of the player's combat stats by 40%<br>" +
|
||||||
"Increases all of the player's combat stat experience gain rate by 40%");
|
"Increases all of the player's combat stat experience gain rate by 40%");
|
||||||
CordiARCReactor.setRequirements(450000, 900000000);
|
CordiARCReactor.setRequirements(450000, 975000000);
|
||||||
CordiARCReactor.addToFactions(["MegaCorp"]);
|
CordiARCReactor.addToFactions(["MegaCorp"]);
|
||||||
if (augmentationExists(AugmentationNames.CordiARCReactor)) {
|
if (augmentationExists(AugmentationNames.CordiARCReactor)) {
|
||||||
CordiARCReactor.owned = Augmentations[AugmentationNames.CordiARCReactor].owned;
|
CordiARCReactor.owned = Augmentations[AugmentationNames.CordiARCReactor].owned;
|
||||||
@ -1031,7 +1152,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's charisma experience gain rate by 50%<br>" +
|
"Increases the player's charisma experience gain rate by 50%<br>" +
|
||||||
"Increases the amount of reputation the player gains for a company by 25%<br>" +
|
"Increases the amount of reputation the player gains for a company by 25%<br>" +
|
||||||
"Increases the amount of reputation the player gains for a faction by 25%");
|
"Increases the amount of reputation the player gains for a faction by 25%");
|
||||||
SmartJaw.setRequirements(150000, 400000000);
|
SmartJaw.setRequirements(150000, 500000000);
|
||||||
SmartJaw.addToFactions(["Bachman & Associates"]);
|
SmartJaw.addToFactions(["Bachman & Associates"]);
|
||||||
if (augmentationExists(AugmentationNames.SmartJaw)) {
|
if (augmentationExists(AugmentationNames.SmartJaw)) {
|
||||||
SmartJaw.owned = Augmentations[AugmentationNames.SmartJaw].owned;
|
SmartJaw.owned = Augmentations[AugmentationNames.SmartJaw].owned;
|
||||||
@ -1046,7 +1167,7 @@ initAugmentations = function() {
|
|||||||
"body's skin and bone cells, granting them the ability to repair " +
|
"body's skin and bone cells, granting them the ability to repair " +
|
||||||
"and restructure themselves. <br><br>" +
|
"and restructure themselves. <br><br>" +
|
||||||
"This augmentation increases the player's strength and defense by 75%");
|
"This augmentation increases the player's strength and defense by 75%");
|
||||||
Neotra.setRequirements(225000, 500000000);
|
Neotra.setRequirements(225000, 550000000);
|
||||||
Neotra.addToFactions(["Blade Industries"]);
|
Neotra.addToFactions(["Blade Industries"]);
|
||||||
if (augmentationExists(AugmentationNames.Neotra)) {
|
if (augmentationExists(AugmentationNames.Neotra)) {
|
||||||
Neotra.owned = Augmentations[AugmentationNames.Neotra].owned;
|
Neotra.owned = Augmentations[AugmentationNames.Neotra].owned;
|
||||||
@ -1062,7 +1183,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Increases all of the player's stats by 25%<br>" +
|
"Increases all of the player's stats by 25%<br>" +
|
||||||
"Increases the player's experience gain rate for all stats by 20%");
|
"Increases the player's experience gain rate for all stats by 20%");
|
||||||
Xanipher.setRequirements(350000, 700000000);
|
Xanipher.setRequirements(350000, 800000000);
|
||||||
Xanipher.addToFactions(["NWO"]);
|
Xanipher.addToFactions(["NWO"]);
|
||||||
if (augmentationExists(AugmentationNames.Xanipher)) {
|
if (augmentationExists(AugmentationNames.Xanipher)) {
|
||||||
Xanipher.owned = Augmentations[AugmentationNames.Xanipher].owned;
|
Xanipher.owned = Augmentations[AugmentationNames.Xanipher].owned;
|
||||||
@ -1076,7 +1197,7 @@ initAugmentations = function() {
|
|||||||
"of negligible senescence, preventing the body from " +
|
"of negligible senescence, preventing the body from " +
|
||||||
"deteriorating with age. <br><br>" +
|
"deteriorating with age. <br><br>" +
|
||||||
"This augmentation increases all of the player's stats by 20%");
|
"This augmentation increases all of the player's stats by 20%");
|
||||||
nextSENS.setRequirements(175000, 300000000);
|
nextSENS.setRequirements(175000, 375000000);
|
||||||
nextSENS.addToFactions(["Clarke Incorporated"]);
|
nextSENS.addToFactions(["Clarke Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.nextSENS)) {
|
if (augmentationExists(AugmentationNames.nextSENS)) {
|
||||||
nextSENS.owned = Augmentations[AugmentationNames.nextSENS].owned;
|
nextSENS.owned = Augmentations[AugmentationNames.nextSENS].owned;
|
||||||
@ -1092,7 +1213,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation:<br>" +
|
"This augmentation:<br>" +
|
||||||
"Increases the player's hacking skill by 30%<br>" +
|
"Increases the player's hacking skill by 30%<br>" +
|
||||||
"Increases the player's hacking experience gain rate by 30%");
|
"Increases the player's hacking experience gain rate by 30%");
|
||||||
OmniTekInfoLoad.setRequirements(250000, 400000000)
|
OmniTekInfoLoad.setRequirements(250000, 550000000)
|
||||||
OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
|
OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
|
||||||
if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
|
if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
|
||||||
OmniTekInfoLoad.owned = Augmentations[AugmentationNames.OmniTekInfoLoad].owned;
|
OmniTekInfoLoad.owned = Augmentations[AugmentationNames.OmniTekInfoLoad].owned;
|
||||||
@ -1110,7 +1231,7 @@ initAugmentations = function() {
|
|||||||
"skin cells, allowing users to generate their own energy " +
|
"skin cells, allowing users to generate their own energy " +
|
||||||
"and nutrition using solar power. <br><br>" +
|
"and nutrition using solar power. <br><br>" +
|
||||||
"This augmentation increases the player's strength, defense, and agility by 50%");
|
"This augmentation increases the player's strength, defense, and agility by 50%");
|
||||||
PhotosyntheticCells.setRequirements(225000, 425000000);
|
PhotosyntheticCells.setRequirements(225000, 525000000);
|
||||||
PhotosyntheticCells.addToFactions(["KuaiGong International"]);
|
PhotosyntheticCells.addToFactions(["KuaiGong International"]);
|
||||||
if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
|
if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
|
||||||
PhotosyntheticCells.owned = Augmentations[AugmentationNames.PhotosyntheticCells].owned;
|
PhotosyntheticCells.owned = Augmentations[AugmentationNames.PhotosyntheticCells].owned;
|
||||||
@ -1129,7 +1250,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's chance of successfully performing a hack by 10%<br>" +
|
"Increases the player's chance of successfully performing a hack by 10%<br>" +
|
||||||
"Increases the player's hacking speed by 5%<br>" +
|
"Increases the player's hacking speed by 5%<br>" +
|
||||||
"Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset");
|
"Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset");
|
||||||
Neurolink.setRequirements(350000, 750000000);
|
Neurolink.setRequirements(350000, 850000000);
|
||||||
Neurolink.addToFactions(["BitRunners"]);
|
Neurolink.addToFactions(["BitRunners"]);
|
||||||
if (augmentationExists(AugmentationNames.Neurolink)) {
|
if (augmentationExists(AugmentationNames.Neurolink)) {
|
||||||
Neurolink.owned = Augmentations[AugmentationNames.Neurolink].owned;
|
Neurolink.owned = Augmentations[AugmentationNames.Neurolink].owned;
|
||||||
@ -1148,7 +1269,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's hacking skill by 10%<br>" +
|
"Increases the player's hacking skill by 10%<br>" +
|
||||||
"Increases the player's hacking speed by 2%<br>" +
|
"Increases the player's hacking speed by 2%<br>" +
|
||||||
"Increases the amount of money the player gains from hacking by 10%");
|
"Increases the amount of money the player gains from hacking by 10%");
|
||||||
TheBlackHand.setRequirements(40000, 90000000);
|
TheBlackHand.setRequirements(40000, 100000000);
|
||||||
TheBlackHand.addToFactions(["The Black Hand"]);
|
TheBlackHand.addToFactions(["The Black Hand"]);
|
||||||
if (augmentationExists(AugmentationNames.TheBlackHand)) {
|
if (augmentationExists(AugmentationNames.TheBlackHand)) {
|
||||||
TheBlackHand.owned = Augmentations[AugmentationNames.TheBlackHand].owned;
|
TheBlackHand.owned = Augmentations[AugmentationNames.TheBlackHand].owned;
|
||||||
@ -1164,7 +1285,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Improves the player's hacking skill by 10%<br>" +
|
"Improves the player's hacking skill by 10%<br>" +
|
||||||
"Improves the player's hacking experience gain rate by 20%");
|
"Improves the player's hacking experience gain rate by 20%");
|
||||||
CRTX42AA.setRequirements(18000, 35000000);
|
CRTX42AA.setRequirements(18000, 45000000);
|
||||||
CRTX42AA.addToFactions(["NiteSec"]);
|
CRTX42AA.addToFactions(["NiteSec"]);
|
||||||
if (augmentationExists(AugmentationNames.CRTX42AA)) {
|
if (augmentationExists(AugmentationNames.CRTX42AA)) {
|
||||||
CRTX42AA.owned = Augmentations[AugmentationNames.CRTX42AA].owned;
|
CRTX42AA.owned = Augmentations[AugmentationNames.CRTX42AA].owned;
|
||||||
@ -1178,7 +1299,7 @@ initAugmentations = function() {
|
|||||||
"The result is that these neurons never die and continuously " +
|
"The result is that these neurons never die and continuously " +
|
||||||
"regenerate and strengthen themselves. <br><br>" +
|
"regenerate and strengthen themselves. <br><br>" +
|
||||||
"This augmentation increases the player's hacking experience gain rate by 75%");
|
"This augmentation increases the player's hacking experience gain rate by 75%");
|
||||||
Neuregen.setRequirements(15000, 60000000);
|
Neuregen.setRequirements(15000, 75000000);
|
||||||
Neuregen.addToFactions(["Chongqing"]);
|
Neuregen.addToFactions(["Chongqing"]);
|
||||||
if (augmentationExists(AugmentationNames.Neuregen)) {
|
if (augmentationExists(AugmentationNames.Neuregen)) {
|
||||||
Neuregen.owned = Augmentations[AugmentationNames.Neuregen].owned;
|
Neuregen.owned = Augmentations[AugmentationNames.Neuregen].owned;
|
||||||
@ -1194,7 +1315,7 @@ initAugmentations = function() {
|
|||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Lets the player start with $1,000,000 after a reset<br>" +
|
"Lets the player start with $1,000,000 after a reset<br>" +
|
||||||
"Lets the player start with the BruteSSH.exe program after a reset");
|
"Lets the player start with the BruteSSH.exe program after a reset");
|
||||||
CashRoot.setRequirements(4000, 20000000);
|
CashRoot.setRequirements(4000, 25000000);
|
||||||
CashRoot.addToFactions(["Sector-12"]);
|
CashRoot.addToFactions(["Sector-12"]);
|
||||||
if (augmentationExists(AugmentationNames.CashRoot)) {
|
if (augmentationExists(AugmentationNames.CashRoot)) {
|
||||||
CashRoot.owned = Augmentations[AugmentationNames.CashRoot].owned;
|
CashRoot.owned = Augmentations[AugmentationNames.CashRoot].owned;
|
||||||
@ -1210,7 +1331,7 @@ initAugmentations = function() {
|
|||||||
"energy in the form of heat.<br><br>" +
|
"energy in the form of heat.<br><br>" +
|
||||||
"This augmentation: <br>" +
|
"This augmentation: <br>" +
|
||||||
"Increases the player's experience gain rate for all combat stats by 20%");
|
"Increases the player's experience gain rate for all combat stats by 20%");
|
||||||
NutriGen.setRequirements(2500, 400000);
|
NutriGen.setRequirements(2500, 500000);
|
||||||
NutriGen.addToFactions(["New Tokyo"]);
|
NutriGen.addToFactions(["New Tokyo"]);
|
||||||
if (augmentationExists(AugmentationNames.NutriGen)) {
|
if (augmentationExists(AugmentationNames.NutriGen)) {
|
||||||
NutriGen.owned = Augmentations[AugmentationNames.NutriGen].owned;
|
NutriGen.owned = Augmentations[AugmentationNames.NutriGen].owned;
|
||||||
@ -1230,7 +1351,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's crime success rate by 25%<br>" +
|
"Increases the player's crime success rate by 25%<br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 10%<br>" +
|
"Increases the amount of money the player gains from crimes by 10%<br>" +
|
||||||
"Increases the player's dexterity by 10%");
|
"Increases the player's dexterity by 10%");
|
||||||
INFRARet.setRequirements(3000, 5000000);
|
INFRARet.setRequirements(3000, 6000000);
|
||||||
INFRARet.addToFactions(["Ishima"]);
|
INFRARet.addToFactions(["Ishima"]);
|
||||||
if (augmentationExists(AugmentationNames.INFRARet)) {
|
if (augmentationExists(AugmentationNames.INFRARet)) {
|
||||||
INFRARet.owned = Augmentations[AugmentationNames.INFRARet].owned;
|
INFRARet.owned = Augmentations[AugmentationNames.INFRARet].owned;
|
||||||
@ -1244,7 +1365,7 @@ initAugmentations = function() {
|
|||||||
"millions of nanobots capable of projecting high-density muon beams, " +
|
"millions of nanobots capable of projecting high-density muon beams, " +
|
||||||
"creating an energy barrier around the user. <br><br>" +
|
"creating an energy barrier around the user. <br><br>" +
|
||||||
"This augmentation increases the player's defense by 50%");
|
"This augmentation increases the player's defense by 50%");
|
||||||
DermaForce.setRequirements(6000, 8000000);
|
DermaForce.setRequirements(6000, 10000000);
|
||||||
DermaForce.addToFactions(["Volhaven"]);
|
DermaForce.addToFactions(["Volhaven"]);
|
||||||
if (augmentationExists(AugmentationNames.DermaForce)) {
|
if (augmentationExists(AugmentationNames.DermaForce)) {
|
||||||
DermaForce.owned = Augmentations[AugmentationNames.DermaForce].owned;
|
DermaForce.owned = Augmentations[AugmentationNames.DermaForce].owned;
|
||||||
@ -1261,7 +1382,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's strength and defense by 50%<br>" +
|
"Increases the player's strength and defense by 50%<br>" +
|
||||||
"Increases the player's crime success rate by 10%<br>" +
|
"Increases the player's crime success rate by 10%<br>" +
|
||||||
"Increases the amount of money the player gains from crimes by 20%");
|
"Increases the amount of money the player gains from crimes by 20%");
|
||||||
GrapheneBrachiBlades.setRequirements(90000, 400000000);
|
GrapheneBrachiBlades.setRequirements(90000, 500000000);
|
||||||
GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
|
GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
|
if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
|
||||||
GrapheneBrachiBlades.owned = Augmentations[AugmentationNames.GrapheneBrachiBlades].owned;
|
GrapheneBrachiBlades.owned = Augmentations[AugmentationNames.GrapheneBrachiBlades].owned;
|
||||||
@ -1275,7 +1396,7 @@ initAugmentations = function() {
|
|||||||
"prosthetic arms with an advanced graphene material " +
|
"prosthetic arms with an advanced graphene material " +
|
||||||
"to make them much stronger and lighter. <br><br>" +
|
"to make them much stronger and lighter. <br><br>" +
|
||||||
"This augmentation increases the player's strength and dexterity by 100%");
|
"This augmentation increases the player's strength and dexterity by 100%");
|
||||||
GrapheneBionicArms.setRequirements(200000, 600000000);
|
GrapheneBionicArms.setRequirements(200000, 750000000);
|
||||||
GrapheneBionicArms.addToFactions(["The Dark Army"]);
|
GrapheneBionicArms.addToFactions(["The Dark Army"]);
|
||||||
if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
|
if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
|
||||||
GrapheneBionicArms.owned = Augmentations[AugmentationNames.GrapheneBionicArms].owned;
|
GrapheneBionicArms.owned = Augmentations[AugmentationNames.GrapheneBionicArms].owned;
|
||||||
@ -1290,7 +1411,7 @@ initAugmentations = function() {
|
|||||||
"Increases the player's strength and defense by 20%<br>" +
|
"Increases the player's strength and defense by 20%<br>" +
|
||||||
"Increases the player's crime success rate by 10%<br>" +
|
"Increases the player's crime success rate by 10%<br>" +
|
||||||
"Increases thea mount of money the player gains from crimes by 10%");
|
"Increases thea mount of money the player gains from crimes by 10%");
|
||||||
BrachiBlades.setRequirements(5000, 14000000);
|
BrachiBlades.setRequirements(5000, 18000000);
|
||||||
BrachiBlades.addToFactions(["The Syndicate"]);
|
BrachiBlades.addToFactions(["The Syndicate"]);
|
||||||
if (augmentationExists(AugmentationNames.BrachiBlades)) {
|
if (augmentationExists(AugmentationNames.BrachiBlades)) {
|
||||||
BrachiBlades.owned = Augmentations[AugmentationNames.BrachiBlades].owned;
|
BrachiBlades.owned = Augmentations[AugmentationNames.BrachiBlades].owned;
|
||||||
@ -1303,7 +1424,7 @@ initAugmentations = function() {
|
|||||||
BionicArms.setInfo("Cybernetic arms created from plasteel and carbon fibers that completely replace " +
|
BionicArms.setInfo("Cybernetic arms created from plasteel and carbon fibers that completely replace " +
|
||||||
"the user's organic arms. <br><br>" +
|
"the user's organic arms. <br><br>" +
|
||||||
"This augmentation increases the user's strength and dexterity by 50%");
|
"This augmentation increases the user's strength and dexterity by 50%");
|
||||||
BionicArms.setRequirements(25000, 45000000);
|
BionicArms.setRequirements(25000, 55000000);
|
||||||
BionicArms.addToFactions(["Tetrads"]);
|
BionicArms.addToFactions(["Tetrads"]);
|
||||||
if (augmentationExists(AugmentationNames.BionicArms)) {
|
if (augmentationExists(AugmentationNames.BionicArms)) {
|
||||||
BionicArms.owned = Augmentations[AugmentationNames.BionicArms].owned;
|
BionicArms.owned = Augmentations[AugmentationNames.BionicArms].owned;
|
||||||
@ -1319,7 +1440,7 @@ initAugmentations = function() {
|
|||||||
"Increases the amount of money the player earns at a company by 10%<br>" +
|
"Increases the amount of money the player earns at a company by 10%<br>" +
|
||||||
"Increases the amount of reputation the player gains when working for a " +
|
"Increases the amount of reputation the player gains when working for a " +
|
||||||
"company or faction by 20%");
|
"company or faction by 20%");
|
||||||
SNA.setRequirements(2500, 5000000);
|
SNA.setRequirements(2500, 6000000);
|
||||||
SNA.addToFactions(["Tian Di Hui"]);
|
SNA.addToFactions(["Tian Di Hui"]);
|
||||||
if (augmentationExists(AugmentationNames.SNA)) {
|
if (augmentationExists(AugmentationNames.SNA)) {
|
||||||
SNA.owned = Augmentations[AugmentationNames.SNA].owned;
|
SNA.owned = Augmentations[AugmentationNames.SNA].owned;
|
||||||
@ -1477,6 +1598,39 @@ applyAugmentation = function(aug, reapply=false) {
|
|||||||
Player.hacking_chance_mult *= 1.1;
|
Player.hacking_chance_mult *= 1.1;
|
||||||
Player.hacking_exp_mult *= 1.25;
|
Player.hacking_exp_mult *= 1.25;
|
||||||
break;
|
break;
|
||||||
|
case AugmentationNames.NeuralAccelerator:
|
||||||
|
Player.hacking_mult *= 1.2;
|
||||||
|
Player.hacking_exp_mult *= 1.2;
|
||||||
|
Player.hacking_money_mult *= 1.2;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.CranialSignalProcessorsG1:
|
||||||
|
Player.hacking_speed_mult *= 0.99;
|
||||||
|
Player.hacking_mult *= 1.1;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.CranialSignalProcessorsG2:
|
||||||
|
Player.hacking_speed_mult *= 0.98;
|
||||||
|
Player.hacking_chance_mult *= 1.05;
|
||||||
|
Player.hacking_mult *= 1.1;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.CranialSignalProcessorsG3:
|
||||||
|
Player.hacking_speed_mult *= 0.98;
|
||||||
|
Player.hacking_money_mult *= 1.2;
|
||||||
|
Player.hacking_mult *= 1.1;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.CranialSignalProcessorsG4:
|
||||||
|
Player.hacking_speed_mult *= 0.98;
|
||||||
|
Player.hacking_money_mult *= 1.25;
|
||||||
|
Player.hacking_grow_mult *= 1.25;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.CranialSignalProcessorsG5:
|
||||||
|
Player.hacking_mult *= 1.6;
|
||||||
|
Player.hacking_grow_mult *= 1.5;
|
||||||
|
break;
|
||||||
|
case AugmentationNames.NeuronalDensification:
|
||||||
|
Player.hacking_mult *= 1.3;
|
||||||
|
Player.hacking_exp_mult *= 1.3;
|
||||||
|
Player.hacking_speed_mult *= 0.97;
|
||||||
|
break;
|
||||||
|
|
||||||
//Work augmentations
|
//Work augmentations
|
||||||
case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
|
case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
|
||||||
@ -1516,11 +1670,11 @@ applyAugmentation = function(aug, reapply=false) {
|
|||||||
|
|
||||||
//Hacknet Node Augmentations
|
//Hacknet Node Augmentations
|
||||||
case AugmentationNames.HacknetNodeCPUUpload:
|
case AugmentationNames.HacknetNodeCPUUpload:
|
||||||
Player.hacknet_node_money_mult *= 1.2;
|
Player.hacknet_node_money_mult *= 1.15;
|
||||||
Player.hacknet_node_purchase_cost_mult *= 0.85;
|
Player.hacknet_node_purchase_cost_mult *= 0.85;
|
||||||
break;
|
break;
|
||||||
case AugmentationNames.HacknetNodeCacheUpload:
|
case AugmentationNames.HacknetNodeCacheUpload:
|
||||||
Player.hacknet_node_money_mult *= 1.15;
|
Player.hacknet_node_money_mult *= 1.10;
|
||||||
Player.hacknet_node_level_cost_mult *= 0.85;
|
Player.hacknet_node_level_cost_mult *= 0.85;
|
||||||
break;
|
break;
|
||||||
case AugmentationNames.HacknetNodeNICUpload:
|
case AugmentationNames.HacknetNodeNICUpload:
|
||||||
@ -1539,7 +1693,7 @@ applyAugmentation = function(aug, reapply=false) {
|
|||||||
Player.hacking_chance_mult *= 1.01;
|
Player.hacking_chance_mult *= 1.01;
|
||||||
Player.hacking_speed_mult *= 0.99;
|
Player.hacking_speed_mult *= 0.99;
|
||||||
Player.hacking_money_mult *= 1.01;
|
Player.hacking_money_mult *= 1.01;
|
||||||
//Player.hacking_grow_mult *= 1.01;
|
Player.hacking_grow_mult *= 1.01;
|
||||||
Player.hacking_mult *= 1.01;
|
Player.hacking_mult *= 1.01;
|
||||||
|
|
||||||
Player.strength_mult *= 1.01;
|
Player.strength_mult *= 1.01;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
CONSTANTS = {
|
CONSTANTS = {
|
||||||
Version: "0.17.7",
|
Version: "0.18",
|
||||||
|
|
||||||
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
|
//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
|
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
|
||||||
@ -18,11 +18,11 @@ CONSTANTS = {
|
|||||||
BaseCostForHacknetNodeCore: 500000,
|
BaseCostForHacknetNodeCore: 500000,
|
||||||
|
|
||||||
/* Hacknet Node constants */
|
/* Hacknet Node constants */
|
||||||
HacknetNodeMoneyGainPerLevel: 1.65,
|
HacknetNodeMoneyGainPerLevel: 1.5,
|
||||||
HacknetNodePurchaseNextMult: 1.38, //Multiplier when purchasing an additional hacknet node
|
HacknetNodePurchaseNextMult: 1.39, //Multiplier when purchasing an additional hacknet node
|
||||||
HacknetNodeUpgradeLevelMult: 1.04, //Multiplier for cost when upgrading level
|
HacknetNodeUpgradeLevelMult: 1.04, //Multiplier for cost when upgrading level
|
||||||
HacknetNodeUpgradeRamMult: 1.24, //Multiplier for cost when upgrading RAM
|
HacknetNodeUpgradeRamMult: 1.26, //Multiplier for cost when upgrading RAM
|
||||||
HacknetNodeUpgradeCoreMult: 1.48, //Multiplier for cost when buying another core
|
HacknetNodeUpgradeCoreMult: 1.49, //Multiplier for cost when buying another core
|
||||||
|
|
||||||
HacknetNodeMaxLevel: 200,
|
HacknetNodeMaxLevel: 200,
|
||||||
HacknetNodeMaxRam: 64,
|
HacknetNodeMaxRam: 64,
|
||||||
@ -42,6 +42,7 @@ CONSTANTS = {
|
|||||||
ScriptIfRamCost: 0.1,
|
ScriptIfRamCost: 0.1,
|
||||||
ScriptHackRamCost: 0.25,
|
ScriptHackRamCost: 0.25,
|
||||||
ScriptGrowRamCost: 0.25,
|
ScriptGrowRamCost: 0.25,
|
||||||
|
ScriptWeakenRamCost: 0.25,
|
||||||
ScriptNukeRamCost: 0.05,
|
ScriptNukeRamCost: 0.05,
|
||||||
ScriptBrutesshRamCost: 0.05,
|
ScriptBrutesshRamCost: 0.05,
|
||||||
ScriptFtpcrackRamCost: 0.05,
|
ScriptFtpcrackRamCost: 0.05,
|
||||||
@ -49,11 +50,13 @@ CONSTANTS = {
|
|||||||
ScriptHttpwormRamCost: 0.05,
|
ScriptHttpwormRamCost: 0.05,
|
||||||
ScriptSqlinjectRamCost: 0.05,
|
ScriptSqlinjectRamCost: 0.05,
|
||||||
ScriptRunRamCost: 0.8,
|
ScriptRunRamCost: 0.8,
|
||||||
|
ScriptExecRamCost: 1.1,
|
||||||
ScriptScpRamCost: 0.5,
|
ScriptScpRamCost: 0.5,
|
||||||
ScriptHasRootAccessRamCost: 0.05,
|
ScriptHasRootAccessRamCost: 0.05,
|
||||||
ScriptGetHostnameRamCost: 0.1,
|
ScriptGetHostnameRamCost: 0.1,
|
||||||
ScriptGetHackingLevelRamCost: 0.1,
|
ScriptGetHackingLevelRamCost: 0.1,
|
||||||
ScriptGetServerMoneyRamCost: 0.1,
|
ScriptGetServerMoneyRamCost: 0.1,
|
||||||
|
ScriptGetServerSecurityRamCost: 0.2,
|
||||||
ScriptOperatorRamCost: 0.01,
|
ScriptOperatorRamCost: 0.01,
|
||||||
ScriptPurchaseHacknetRamCost: 1.5,
|
ScriptPurchaseHacknetRamCost: 1.5,
|
||||||
ScriptHacknetNodesRamCost: 1.0, //Base cost for accessing hacknet nodes array
|
ScriptHacknetNodesRamCost: 1.0, //Base cost for accessing hacknet nodes array
|
||||||
@ -61,8 +64,13 @@ CONSTANTS = {
|
|||||||
ScriptHNUpgRamRamCost: 0.6,
|
ScriptHNUpgRamRamCost: 0.6,
|
||||||
ScriptHNUpgCoreRamCost: 0.8,
|
ScriptHNUpgCoreRamCost: 0.8,
|
||||||
|
|
||||||
//Server growth rate
|
//Server constants
|
||||||
ServerGrowthRate: 1.001,
|
ServerGrowthRate: 1.002, //Growth rate
|
||||||
|
ServerFortifyAmount: 0.001, //Amount by which server's security increases when its hacked
|
||||||
|
ServerWeakenAmount: 0.1, //Amount by which server's security decreases when weakened
|
||||||
|
|
||||||
|
//Augmentation Constants
|
||||||
|
AugmentationCostMultiplier: 3, //Used for balancing costs without having to readjust every Augmentation cost
|
||||||
|
|
||||||
//Maximum number of log entries for a script
|
//Maximum number of log entries for a script
|
||||||
MaxLogCapacity: 40,
|
MaxLogCapacity: 40,
|
||||||
@ -178,7 +186,7 @@ CONSTANTS = {
|
|||||||
TutorialHackingText: "In the year 2077, currency has become digital and decentralized. People and corporations " +
|
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 " +
|
"store their money on servers. By hacking these servers, you can steal their money and gain " +
|
||||||
"experience. <br><br>" +
|
"experience. <br><br>" +
|
||||||
"<strong>Gaining root access</strong> <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 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 " +
|
"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 " +
|
"computer. The NUKE virus attacks the target server's open ports using buffer overflow " +
|
||||||
@ -191,10 +199,10 @@ CONSTANTS = {
|
|||||||
"a seller. <br><br>" +
|
"a seller. <br><br>" +
|
||||||
"In order to determine how many ports need to be opened to successfully NUKE a server, connect to " +
|
"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 " +
|
"that server and run the 'analyze' command. This will also show you which ports have already been " +
|
||||||
"opened. <br>" +
|
"opened. <br><br>" +
|
||||||
"Once you have enough ports opened and have ran the NUKE virus to gain root access, the server " +
|
"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>" +
|
"can then be hacked by simply calling the 'hack' command through terminal, or by using a script.<br><br>" +
|
||||||
"<strong>Hacking mechanics</strong><br>" +
|
"<h1>Hacking mechanics</h1><br>" +
|
||||||
"When you execute the hack command, either manually through the terminal or automatically through " +
|
"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 " +
|
"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, " +
|
"security is, the more time it will take. Your hacking skill level also affects the hacking time, " +
|
||||||
@ -207,7 +215,18 @@ CONSTANTS = {
|
|||||||
"percentage is determined by the server's security and your hacking skill level. The amount of money " +
|
"percentage is determined by the server's security and your hacking skill level. The amount of money " +
|
||||||
"on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will " +
|
"on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will " +
|
||||||
"encounter diminishing returns in your hacking (since you are only hacking a certain percentage). A server " +
|
"encounter diminishing returns in your hacking (since you are only hacking a certain percentage). A server " +
|
||||||
"will regain money at a slow rate over time. ",
|
"will regain money at a slow rate over time. <br><br>" +
|
||||||
|
"<h1>Server Security</h1><br>" +
|
||||||
|
"Each server has a security level, which is denoted by a number between 1 and 100. A higher number means " +
|
||||||
|
"the server has stronger security. As mentioned above, a server's security level is an important factor " +
|
||||||
|
"to consider when hacking. You can check a server's security level using the 'analyze' command, although this " +
|
||||||
|
"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. This 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 " +
|
||||||
|
"documentation for more details",
|
||||||
|
|
||||||
TutorialScriptsText: "Scripts can be used to automate the hacking process. Scripts must be written in the Netscript language. " +
|
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' " +
|
"Documentation about the Netscript language can be found in the 'Netscript Programming Language' " +
|
||||||
@ -267,12 +286,15 @@ CONSTANTS = {
|
|||||||
"<i>hack(hostname/ip)</i><br>Core function that is used to try and hack servers to steal money and gain hacking experience. The argument passed in must be a string with " +
|
"<i>hack(hostname/ip)</i><br>Core function that is used to try and hack servers to steal money and gain hacking experience. The argument passed in must be a string with " +
|
||||||
"either the IP or hostname of the server you want to hack. A script can hack a server from anywhere. It does not need to be running on the same server to hack that server. " +
|
"either the IP or hostname of the server you want to hack. A script can hack a server from anywhere. It does not need to be running on the same server to hack that server. " +
|
||||||
"For example, you can create a script that hacks the 'foodnstuff' server and run it on your home computer. <br>" +
|
"For example, you can create a script that hacks the 'foodnstuff' server and run it on your home computer. <br>" +
|
||||||
"Examples: hack('foodnstuff'); or hack('148.192.0.12');<br><br>" +
|
"Examples: hack('foodnstuff'); or hack('148.192.0.12');<br><br>" +
|
||||||
"<i>sleep(n)</i><br>Suspends the script for n milliseconds. <br>Example: sleep(5000);<br><br>" +
|
"<i>sleep(n)</i><br>Suspends the script for n milliseconds. <br>Example: sleep(5000);<br><br>" +
|
||||||
"<i>grow(hostname/ip)</i><br>Use your hacking skills to increase the amount of money available on a server. The argument passed in " +
|
"<i>grow(hostname/ip)</i><br>Use your hacking skills to increase the amount of money available on a server. The argument passed in " +
|
||||||
"must be a string with either the IP or hostname of the target server. The grow() command requires root access to the target server, but " +
|
"must be a string with either the IP or hostname of the target server. The grow() command requires root access to the target server, but " +
|
||||||
"there is no required hacking level to run the command. The grow() command takes a flat 2 minutes to execute " +
|
"there is no required hacking level to run the command. " +
|
||||||
"and grants 1 hacking exp when it completes. <br> Example: grow('foodnstuff');<br><br>" +
|
"Grants 1 hacking exp when it completes. <br> Example: grow('foodnstuff');<br><br>" +
|
||||||
|
"<i>weaken(hostname/ip)</i><br>Use your hacking skills to attack a server's security, lowering the server's security level. The argument passed " +
|
||||||
|
"in must be a string with either the IP or hostname of the target server. This command requires root access to the target server, but " +
|
||||||
|
"there is no required hacking level to run the command. Grants 5 hacking exp when it completes. <br> Example: weaken('foodnstuff');<br><br>" +
|
||||||
"<i>print(x)</i> <br> Prints a value or a variable to the scripts logs (which can be viewed with the 'tail [script]' terminal command )<br><br>" +
|
"<i>print(x)</i> <br> Prints a value or a variable to the scripts logs (which can be viewed with the 'tail [script]' terminal command )<br><br>" +
|
||||||
"<i>nuke(hostname/ip)</i><br>Run NUKE.exe on the target server. NUKE.exe must exist on your home computer. Does NOT work while offline <br> Example: nuke('foodnstuff'); <br><br>" +
|
"<i>nuke(hostname/ip)</i><br>Run NUKE.exe on the target server. NUKE.exe must exist on your home computer. Does NOT work while offline <br> Example: nuke('foodnstuff'); <br><br>" +
|
||||||
"<i>brutessh(hostname/ip)</i><br>Run BruteSSH.exe on the target server. BruteSSH.exe must exist on your home computer. Does NOT work while offline <br> Example: brutessh('foodnstuff');<br><br>" +
|
"<i>brutessh(hostname/ip)</i><br>Run BruteSSH.exe on the target server. BruteSSH.exe must exist on your home computer. Does NOT work while offline <br> Example: brutessh('foodnstuff');<br><br>" +
|
||||||
@ -284,16 +306,22 @@ CONSTANTS = {
|
|||||||
"be used to run scripts located on the same server. Returns true if the script is successfully started, and false otherwise. Requires a significant amount " +
|
"be used to run scripts located on the same server. Returns true if the script is successfully started, and false otherwise. Requires a significant amount " +
|
||||||
"of RAM to run this command. Does NOT work while offline <br>Example: run('hack-foodnstuff.script'); <br> The example above will try and launch the 'hack-foodnstuff.script' script on " +
|
"of RAM to run this command. Does NOT work while offline <br>Example: run('hack-foodnstuff.script'); <br> The example above will try and launch the 'hack-foodnstuff.script' script on " +
|
||||||
"the current server, if it exists. <br><br>" +
|
"the current server, if it exists. <br><br>" +
|
||||||
|
"<i>exec(script, hostname/ip)</i><br>Run a script as a separate process on another server. The first argument is the name of the script as a string. The " +
|
||||||
|
"second argument is a string with the hostname or IP of the 'target server' on which to run the script. The specified script must exist on the target server. Returns " +
|
||||||
|
"true if the script is successfully started, and false otherwise. Does NOT work while offline<br> " +
|
||||||
|
"Example: exec('generic-hack.script', 'foodnstuff'); <br> The example above will try to launch the script 'generic-hack.script' on the 'foodnstuff' server.<br><br>" +
|
||||||
"<i>scp(script, hostname/ip)</i><br>Copies a script to another server. The first argument is a string with the filename of the script " +
|
"<i>scp(script, hostname/ip)</i><br>Copies a script to another server. The first argument is a string with the filename of the script " +
|
||||||
"to be copied. The second argument is a string with the hostname or IP of the destination server. Returns true if the script is successfully " +
|
"to be copied. The second argument is a string with the hostname or IP of the destination server. Returns true if the script is successfully " +
|
||||||
"copied over and false otherwise. <br> Example: scp('hack-template.script', 'foodnstuff');<br><br>" +
|
"copied over and false otherwise. <br> Example: scp('hack-template.script', 'foodnstuff');<br><br>" +
|
||||||
"<i>hasRootAccess(hostname/ip)</i><br> Returns a boolean (true or false) indicating whether or not the Player has root access to a server. " +
|
"<i>hasRootAccess(hostname/ip)</i><br> Returns a boolean (true or false) indicating whether or not the Player has root access to a server. " +
|
||||||
"The argument passed in must be a string with either the hostname or IP of the target server. Does NOT work while offline.<br> " +
|
"The argument passed in must be a string with either the hostname or IP of the target server. Does NOT work while offline.<br> " +
|
||||||
"Example:<br>if (hasRootAccess('foodnstuff') == false) {<br> nuke('foodnstuff');<br>}<br><br>" +
|
"Example:<br>if (hasRootAccess('foodnstuff') == false) {<br> nuke('foodnstuff');<br>}<br><br>" +
|
||||||
"<i>getHostname()<i><br>Returns a string with the hostname of the server that the script is running on<br><br>" +
|
"<i>getHostname()</i><br>Returns a string with the hostname of the server that the script is running on<br><br>" +
|
||||||
"<i>getHackingLevel() </i><br> Returns the Player's current hacking level. Does NOT work while offline <br><br> " +
|
"<i>getHackingLevel()</i><br> Returns the Player's current hacking level. Does NOT work while offline <br><br> " +
|
||||||
"<i>getServerMoneyAvailable(hostname/ip)</i><br> Returns the amount of money available on a server. The argument passed in must be a string with either the " +
|
"<i>getServerMoneyAvailable(hostname/ip)</i><br> Returns the amount of money available on a server. The argument passed in must be a string with either the " +
|
||||||
"hostname or IP of the target server. Does NOT work while offline <br> Example: getServerMoneyAvailable('foodnstuff');<br><br>" +
|
"hostname or IP of the target server. Does NOT work while offline <br> Example: getServerMoneyAvailable('foodnstuff');<br><br>" +
|
||||||
|
"<i>getServerSecurityLevel(hostname/ip)</i><br>Returns the security level of a server. The argument passed in must be a string with either the " +
|
||||||
|
"hostname or IP of the target server. A server's security is denoted by a number between 1 and 100. Does NOT work while offline.<br><br>" +
|
||||||
"<i>purchaseHacknetNode()</i><br> Purchases a new Hacknet Node. Returns a number with the index of the Hacknet Node. This index is equivalent to the number " +
|
"<i>purchaseHacknetNode()</i><br> Purchases a new Hacknet Node. Returns a number with the index of the Hacknet Node. This index is equivalent to the number " +
|
||||||
"at the end of the Hacknet Node's name (e.g The Hacknet Node named 'hacknet-node-4' will have an index of 4). If the player cannot afford to purchase " +
|
"at the end of the Hacknet Node's name (e.g The Hacknet Node named 'hacknet-node-4' will have an index of 4). If the player cannot afford to purchase " +
|
||||||
"a new Hacknet Node then the function will return false. Does NOT work offline<br><br>" +
|
"a new Hacknet Node then the function will return false. Does NOT work offline<br><br>" +
|
||||||
@ -397,7 +425,7 @@ CONSTANTS = {
|
|||||||
"other actions such as using your terminal or visiting other locations (However, note that any scripts you have " +
|
"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 " +
|
"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 " +
|
"8 hours is up. However, if you have a full-time job, then cancelling a shift early will result in you gaining " +
|
||||||
"only half of all of the money, experience, and reputation " +
|
"only half of the reputation " +
|
||||||
"that you had earned up to that point. There are also part-time/consultant jobs available where you will not " +
|
"that you had earned up to that point. There are also part-time/consultant jobs available where you will not " +
|
||||||
" be penalized if you cancel a work shift early. However, these positions pay less than full-time positions.<br><br>" +
|
" be penalized if you cancel a work shift early. However, these positions pay less than full-time positions.<br><br>" +
|
||||||
"As you continue to work at a company, you will gain more and more reputation at that company. When your stats " +
|
"As you continue to work at a company, you will gain more and more reputation at that company. When your stats " +
|
||||||
|
@ -585,7 +585,7 @@ displayFactionContent = function(factionName) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player.loseMoney(numMoneyDonate);
|
Player.loseMoney(numMoneyDonate);
|
||||||
var repGain = numMoneyDonate / 1000 * Player.faction_rep_mult;
|
var repGain = numMoneyDonate / 1000000 * Player.faction_rep_mult;
|
||||||
faction.playerReputation += repGain;
|
faction.playerReputation += repGain;
|
||||||
dialogBoxCreate("You just donated $" + formatNumber(numMoneyDonate, 2) + " to " +
|
dialogBoxCreate("You just donated $" + formatNumber(numMoneyDonate, 2) + " to " +
|
||||||
faction.name + " to gain " + formatNumber(repGain, 3) + " reputation");
|
faction.name + " to gain " + formatNumber(repGain, 3) + " reputation");
|
||||||
|
@ -49,8 +49,8 @@ HacknetNode.prototype.updateMoneyGainRate = function() {
|
|||||||
var gainPerLevel = CONSTANTS.HacknetNodeMoneyGainPerLevel;
|
var gainPerLevel = CONSTANTS.HacknetNodeMoneyGainPerLevel;
|
||||||
|
|
||||||
this.moneyGainRatePerSecond = (this.level * gainPerLevel) *
|
this.moneyGainRatePerSecond = (this.level * gainPerLevel) *
|
||||||
Math.pow(1.039, this.ram-1) *
|
Math.pow(1.03, this.ram-1) *
|
||||||
((this.numCores + 3) / 4.1) * Player.hacknet_node_money_mult;
|
((this.numCores + 5) / 6) * Player.hacknet_node_money_mult;
|
||||||
if (isNaN(this.moneyGainRatePerSecond)) {
|
if (isNaN(this.moneyGainRatePerSecond)) {
|
||||||
this.moneyGainRatePerSecond = 0;
|
this.moneyGainRatePerSecond = 0;
|
||||||
dialogBoxCreate("Error in calculating Hacknet Node production. Please report to game developer");
|
dialogBoxCreate("Error in calculating Hacknet Node production. Please report to game developer");
|
||||||
@ -77,9 +77,8 @@ HacknetNode.prototype.purchaseLevelUpgrade = function(levels=1) {
|
|||||||
if (cost > Player.money) {return false;}
|
if (cost > Player.money) {return false;}
|
||||||
Player.loseMoney(cost);
|
Player.loseMoney(cost);
|
||||||
if (this.level + levels >= CONSTANTS.HacknetNodeMaxLevel) {
|
if (this.level + levels >= CONSTANTS.HacknetNodeMaxLevel) {
|
||||||
this.level = CONSTANTS.HacknetNodeMaxLevel;
|
var diff = Math.max(0, CONSTANTS.HacknetNodeMaxLevel - this.level);
|
||||||
this.updateMoneyGainRate();
|
return this.purchaseLevelUpgrade(diff);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
this.level += levels;
|
this.level += levels;
|
||||||
this.updateMoneyGainRate();
|
this.updateMoneyGainRate();
|
||||||
@ -373,7 +372,8 @@ updateHacknetNodeDomElement = function(nodeObj) {
|
|||||||
//Max
|
//Max
|
||||||
multiplier = getMaxNumberLevelUpgrades(nodeObj);
|
multiplier = getMaxNumberLevelUpgrades(nodeObj);
|
||||||
} else {
|
} else {
|
||||||
multiplier = hacknetNodePurchaseMultiplier;
|
var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level;
|
||||||
|
multiplier = Math.min(levelsToMax, hacknetNodePurchaseMultiplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
var upgradeLevelCost = nodeObj.calculateLevelUpgradeCost(multiplier);
|
var upgradeLevelCost = nodeObj.calculateLevelUpgradeCost(multiplier);
|
||||||
|
@ -288,6 +288,7 @@ function evaluate(exp, workerScript) {
|
|||||||
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
|
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
|
||||||
console.log("Script successfully hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " 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");
|
workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " exp");
|
||||||
|
server.fortify(CONSTANTS.ServerFortifyAmount);
|
||||||
resolve("Hack success");
|
resolve("Hack success");
|
||||||
} else {
|
} else {
|
||||||
if (env.stopFlag) {reject(workerScript); return;}
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
@ -403,6 +404,52 @@ function evaluate(exp, workerScript) {
|
|||||||
}, function(e) {
|
}, function(e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
} else if (exp.func.value == "weaken") {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
|
if (exp.args.length != 1) {
|
||||||
|
reject("|" + workerScript.serverIp + "|" + workerScript.name + "|weaken() call has incorrect number of arguments. Takes 1 argument");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var ipPromise = evaluate(exp.args[0], workerScript);
|
||||||
|
ipPromise.then(function(ip) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
|
var server = getServer(ip);
|
||||||
|
if (server == null) {
|
||||||
|
reject("|" + workerScript.serverIp + "|" + workerScript.name + "|Invalid IP or hostname passed into weaken() command");
|
||||||
|
workerScript.scriptRef.log("Cannot weaken(). Invalid IP or hostname passed in: " + ip);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//No root access or skill level too low
|
||||||
|
if (server.hasAdminRights == false) {
|
||||||
|
workerScript.scriptRef.log("Cannot weaken this server (" + server.hostname + ") because user does not have root access");
|
||||||
|
reject("|" + workerScript.serverIp + "|" + workerScript.name + "|Script crashed because it did not have root access to " + server.hostname);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var weakenTime = scriptCalculateWeakenTime(server);
|
||||||
|
console.log("Executing weaken() on server " + server.hostname + " in " + formatNumber(weakenTime/1000, 3) + " seconds")
|
||||||
|
workerScript.scriptRef.log("Executing weaken() on server " + server.hostname + " in " + formatNumber(weakenTime/1000, 3) + " seconds");
|
||||||
|
|
||||||
|
var p = new Promise(function(resolve, reject) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
|
setTimeout(function() {
|
||||||
|
server.weaken(CONSTANTS.ServerWeakenAmount);
|
||||||
|
resolve(CONSTANTS.ServerWeakenAmount);
|
||||||
|
}, weakenTime);
|
||||||
|
});
|
||||||
|
|
||||||
|
p.then(function(amt) {
|
||||||
|
workerScript.scriptRef.log("Using weaken(), " + server.hostname + "'s security level was decreased by " + amt + ". Gained 5 hacking exp");
|
||||||
|
Player.gainHackingExp(5);
|
||||||
|
workerScript.scriptRef.onlineExpGained += 5;
|
||||||
|
resolve("hackExecuted");
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
} else if (exp.func.value == "nuke") {
|
} else if (exp.func.value == "nuke") {
|
||||||
if (exp.args.length != 1) {
|
if (exp.args.length != 1) {
|
||||||
reject("|" + workerScript.serverIp + "|" + workerScript.name + "|nuke() call has incorrect number of arguments. Takes 1 argument");
|
reject("|" + workerScript.serverIp + "|" + workerScript.name + "|nuke() call has incorrect number of arguments. Takes 1 argument");
|
||||||
@ -710,6 +757,35 @@ function evaluate(exp, workerScript) {
|
|||||||
}, function(e) {
|
}, function(e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
} else if (exp.func.value == "exec") {
|
||||||
|
if (exp.args.length != 2) {
|
||||||
|
reject(makeRuntimeRejectMsg(workerScript, "exec() call has incorrect number of arguments. Takes 2 arguments"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var scriptNamePromise = evaluate(exp.args[0], workerScript);
|
||||||
|
scriptNamePromise.then(function(scriptname) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
|
var ipPromise = evaluate(exp.args[1], workerScript);
|
||||||
|
ipPromise.then(function(ip) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
|
var server = getServer(ip);
|
||||||
|
if (server == null) {
|
||||||
|
reject(makeRuntimeRejectMsg(workerScript, "Invalid hostname/ip passed into exec() command: " + ip));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var runScriptPromise = runScriptFromScript(server, scriptname, workerScript);
|
||||||
|
runScriptPromise.then(function(res) {
|
||||||
|
resolve(res);
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
} else if (exp.func.value == "scp") {
|
} else if (exp.func.value == "scp") {
|
||||||
if (exp.args.length != 2) {
|
if (exp.args.length != 2) {
|
||||||
reject(makeRuntimeRejectMsg(workerScript, "scp() call has incorrect number of arguments. Takes 2 arguments"));
|
reject(makeRuntimeRejectMsg(workerScript, "scp() call has incorrect number of arguments. Takes 2 arguments"));
|
||||||
@ -717,8 +793,10 @@ function evaluate(exp, workerScript) {
|
|||||||
}
|
}
|
||||||
var scriptNamePromise = evaluate(exp.args[0], workerScript);
|
var scriptNamePromise = evaluate(exp.args[0], workerScript);
|
||||||
scriptNamePromise.then(function(scriptname) {
|
scriptNamePromise.then(function(scriptname) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
var ipPromise = evaluate(exp.args[1], workerScript);
|
var ipPromise = evaluate(exp.args[1], workerScript);
|
||||||
ipPromise.then(function(ip) {
|
ipPromise.then(function(ip) {
|
||||||
|
if (env.stopFlag) {reject(workerScript); return;}
|
||||||
var destServer = getServer(ip);
|
var destServer = getServer(ip);
|
||||||
if (destServer == null) {
|
if (destServer == null) {
|
||||||
reject(makeRuntimeRejectMsg(workerScript, "Invalid hostname/ip passed into scp() command: " + ip));
|
reject(makeRuntimeRejectMsg(workerScript, "Invalid hostname/ip passed into scp() command: " + ip));
|
||||||
@ -802,21 +880,41 @@ function evaluate(exp, workerScript) {
|
|||||||
workerScript.scriptRef.log("Cannot getServerMoneyAvailable(). Invalid IP or hostname passed in: " + ip);
|
workerScript.scriptRef.log("Cannot getServerMoneyAvailable(). Invalid IP or hostname passed in: " + ip);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
workerScript.scriptRef.log("getServerMoneyAvailable() returned " + formatNumber(server.moneyAvailable, 2));
|
workerScript.scriptRef.log("getServerMoneyAvailable() returned " + formatNumber(server.moneyAvailable, 2) + " for " + server.hostname);
|
||||||
resolve(server.moneyAvailable);
|
resolve(server.moneyAvailable);
|
||||||
}, CONSTANTS.CodeInstructionRunTime);
|
}, CONSTANTS.CodeInstructionRunTime);
|
||||||
}, function(e) {
|
}, function(e) {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
|
} else if (exp.func.value == "getServerSecurityLevel") {
|
||||||
|
if (exp.args.length != 1) {
|
||||||
|
reject(makeRuntimeRejectMsg(workerScript, "getServerSecurityLevel() call has incorrect number of arguments. Takes 1 arguments"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var ipPromise = evaluate(exp.args[0], workerScript);
|
||||||
|
ipPromise.then(function(ip) {
|
||||||
|
setTimeout(function() {
|
||||||
|
var server = getServer(ip);
|
||||||
|
if (server == null) {
|
||||||
|
reject(makeRuntimeRejectMsg(workerScript, "Invalid IP or hostname passed into getServerSecurityLevel() command"));
|
||||||
|
workerScript.scriptRef.log("Cannot getServerSecurityLevel(). Invalid IP or hostname passed in: " + ip);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
workerScript.scriptRef.log("getServerSecurityLevel() returned " + formatNumber(server.hackDifficulty, 3) + " for " + server.hostname);
|
||||||
|
resolve(server.hackDifficulty);
|
||||||
|
}, CONSTANTS.CodeInstructionRunTime);
|
||||||
|
}, function(e) {
|
||||||
|
reject(e);
|
||||||
|
});
|
||||||
} else if (exp.func.value == "purchaseHacknetNode") {
|
} else if (exp.func.value == "purchaseHacknetNode") {
|
||||||
if (exp.args.length != 0) {
|
if (exp.args.length != 0) {
|
||||||
reject("|"+workerScript.serverIp+"|"+workerScript.name+"|purchaseHacknetNode() call has incorrect number of arguments. Takes 0 arguments");
|
reject(makeRuntimeRejectMsg(workerScript, "purchaseHacknetNode() call has incorrect number of arguments. Takes 0 arguments"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
var cost = getCostOfNextHacknetNode();
|
var cost = getCostOfNextHacknetNode();
|
||||||
if (isNaN(cost)) {
|
if (isNaN(cost)) {
|
||||||
reject("|"+workerScript.serverIp+"|"+workerScript.name+"|Could not calculate cost in purchaseHacknetNode(). This is a bug please report to game dev");
|
reject(makeRuntimeRejectMsg(workerScript, "Could not calculate cost in purchaseHacknetNode(). This is a bug please report to game dev"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (cost > Player.money) {
|
if (cost > Player.money) {
|
||||||
@ -1203,16 +1301,16 @@ function runScriptFromScript(server, scriptname, workerScript) {
|
|||||||
var ramAvailable = server.maxRam - server.ramUsed;
|
var ramAvailable = server.maxRam - server.ramUsed;
|
||||||
|
|
||||||
if (server.hasAdminRights == false) {
|
if (server.hasAdminRights == false) {
|
||||||
workerScript.scriptRef.log("Cannot run script " + scriptname + " because you do not have root access!");
|
workerScript.scriptRef.log("Cannot run script " + scriptname + " on " + server.hostname + " because you do not have root access!");
|
||||||
resolve(false);
|
resolve(false);
|
||||||
return;
|
return;
|
||||||
} else if (ramUsage > ramAvailable){
|
} else if (ramUsage > ramAvailable){
|
||||||
workerScript.scriptRef.log("Cannot run script " + scriptname + " because there is not enough available RAM!");
|
workerScript.scriptRef.log("Cannot run script " + scriptname + " on " + server.hostname + " because there is not enough available RAM!");
|
||||||
resolve(false);
|
resolve(false);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
//Able to run script
|
//Able to run script
|
||||||
workerScript.scriptRef.log("Running script: " + scriptname + ". May take a few seconds to start up...");
|
workerScript.scriptRef.log("Running script: " + scriptname + " on " + server.hostname + ". May take a few seconds to start up...");
|
||||||
var script = server.scripts[i];
|
var script = server.scripts[i];
|
||||||
server.runningScripts.push(script.filename); //Push onto runningScripts
|
server.runningScripts.push(script.filename); //Push onto runningScripts
|
||||||
addWorkerScript(script, server);
|
addWorkerScript(script, server);
|
||||||
@ -1266,16 +1364,24 @@ function scriptCalculateExpGain(server) {
|
|||||||
function scriptCalculatePercentMoneyHacked(server) {
|
function scriptCalculatePercentMoneyHacked(server) {
|
||||||
var difficultyMult = (100 - server.hackDifficulty) / 100;
|
var difficultyMult = (100 - server.hackDifficulty) / 100;
|
||||||
var skillMult = (Player.hacking_skill - (server.requiredHackingSkill - 1)) / Player.hacking_skill;
|
var skillMult = (Player.hacking_skill - (server.requiredHackingSkill - 1)) / Player.hacking_skill;
|
||||||
var percentMoneyHacked = difficultyMult * skillMult * Player.hacking_money_mult / 425;
|
var percentMoneyHacked = difficultyMult * skillMult * Player.hacking_money_mult / 150;
|
||||||
if (percentMoneyHacked < 0) {return 0;}
|
if (percentMoneyHacked < 0) {return 0;}
|
||||||
if (percentMoneyHacked > 1) {return 1;}
|
if (percentMoneyHacked > 1) {return 1;}
|
||||||
return percentMoneyHacked;
|
return percentMoneyHacked;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Amount of time to execute grow()
|
//Amount of time to execute grow() in milliseconds
|
||||||
function scriptCalculateGrowTime(server) {
|
function scriptCalculateGrowTime(server) {
|
||||||
var difficultyMult = server.requiredHackingSkill * server.hackDifficulty;
|
var difficultyMult = server.requiredHackingSkill * server.hackDifficulty;
|
||||||
var skillFactor = (2.5 * difficultyMult + 500) / (Player.hacking_skill + 50);
|
var skillFactor = (2.5 * difficultyMult + 500) / (Player.hacking_skill + 50);
|
||||||
var growTime = skillFactor * Player.hacking_speed_mult * 16; //This is in seconds
|
var growTime = skillFactor * Player.hacking_speed_mult * 16; //This is in seconds
|
||||||
return growTime * 1000;
|
return growTime * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Amount of time to execute weaken() in milliseconds
|
||||||
|
function scriptCalculateWeakenTime(server) {
|
||||||
|
var difficultyMult = server.requiredHackingSkill * server.hackDifficulty;
|
||||||
|
var skillFactor = (2.5 * difficultyMult + 500) / (Player.hacking_skill + 50);
|
||||||
|
var weakenTime = skillFactor * Player.hacking_speed_mult * 50; //This is in seconds
|
||||||
|
return weakenTime * 1000;
|
||||||
|
}
|
@ -57,6 +57,7 @@ function runScriptsLoop() {
|
|||||||
if (errorTextArray.length != 4) {
|
if (errorTextArray.length != 4) {
|
||||||
console.log("ERROR: Something wrong with Error text in evaluator...");
|
console.log("ERROR: Something wrong with Error text in evaluator...");
|
||||||
console.log("Error text: " + errorText);
|
console.log("Error text: " + errorText);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
var serverIp = errorTextArray[1];
|
var serverIp = errorTextArray[1];
|
||||||
var scriptName = errorTextArray[2];
|
var scriptName = errorTextArray[2];
|
||||||
@ -78,6 +79,7 @@ function runScriptsLoop() {
|
|||||||
if (errorTextArray.length != 4) {
|
if (errorTextArray.length != 4) {
|
||||||
console.log("ERROR: Something wrong with Error text in evaluator...");
|
console.log("ERROR: Something wrong with Error text in evaluator...");
|
||||||
console.log("Error text: " + errorText);
|
console.log("Error text: " + errorText);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
var serverIp = errorTextArray[1];
|
var serverIp = errorTextArray[1];
|
||||||
var scriptName = errorTextArray[2];
|
var scriptName = errorTextArray[2];
|
||||||
@ -87,7 +89,28 @@ function runScriptsLoop() {
|
|||||||
}
|
}
|
||||||
w.running = false;
|
w.running = false;
|
||||||
w.env.stopFlag = true;
|
w.env.stopFlag = true;
|
||||||
}
|
} else if (isScriptErrorMessage(w)) {
|
||||||
|
var errorTextArray = errorText.split("|");
|
||||||
|
if (errorTextArray.length != 4) {
|
||||||
|
console.log("ERROR: Something wrong with Error text in evaluator...");
|
||||||
|
console.log("Error text: " + errorText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var serverIp = errorTextArray[1];
|
||||||
|
var scriptName = errorTextArray[2];
|
||||||
|
var errorMsg = errorTextArray[3];
|
||||||
|
|
||||||
|
dialogBoxCreate("Script runtime error: ", "Server Ip: " + serverIp, "Script name: " + scriptName, errorMsg);
|
||||||
|
|
||||||
|
//Find the corresponding workerscript and set its flags to kill it
|
||||||
|
for (var i = 0; i < workerScripts.length; ++i) {
|
||||||
|
if (workerScripts[i].serverIp == serverIp && workerScripts[i].name == scriptName) {
|
||||||
|
workerScripts[i].running = false;
|
||||||
|
workerScripts[i].env.stopFlag = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,7 +243,7 @@ PlayerObject.prototype.calculateHackingTime = function() {
|
|||||||
PlayerObject.prototype.calculatePercentMoneyHacked = function() {
|
PlayerObject.prototype.calculatePercentMoneyHacked = function() {
|
||||||
var difficultyMult = (100 - this.getCurrentServer().hackDifficulty) / 100;
|
var difficultyMult = (100 - this.getCurrentServer().hackDifficulty) / 100;
|
||||||
var skillMult = (this.hacking_skill - (this.getCurrentServer().requiredHackingSkill - 1)) / this.hacking_skill;
|
var skillMult = (this.hacking_skill - (this.getCurrentServer().requiredHackingSkill - 1)) / this.hacking_skill;
|
||||||
var percentMoneyHacked = difficultyMult * skillMult * this.hacking_money_mult / 425;
|
var percentMoneyHacked = difficultyMult * skillMult * this.hacking_money_mult / 150;
|
||||||
console.log("Percent money hacked calculated to be: " + percentMoneyHacked);
|
console.log("Percent money hacked calculated to be: " + percentMoneyHacked);
|
||||||
if (percentMoneyHacked < 0) {return 0;}
|
if (percentMoneyHacked < 0) {return 0;}
|
||||||
if (percentMoneyHacked > 1) {return 1;}
|
if (percentMoneyHacked > 1) {return 1;}
|
||||||
@ -367,47 +367,44 @@ PlayerObject.prototype.resetWorkStatus = function() {
|
|||||||
document.getElementById("work-in-progress-text").innerHTML = "";
|
document.getElementById("work-in-progress-text").innerHTML = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerObject.prototype.gainWorkExp = function(divMult = 1) {
|
PlayerObject.prototype.gainWorkExp = function() {
|
||||||
this.gainHackingExp(this.workHackExpGained / divMult);
|
this.gainHackingExp(this.workHackExpGained);
|
||||||
this.gainStrengthExp(this.workStrExpGained / divMult);
|
this.gainStrengthExp(this.workStrExpGained);
|
||||||
this.gainDefenseExp(this.workDefExpGained / divMult);
|
this.gainDefenseExp(this.workDefExpGained);
|
||||||
this.gainDexterityExp(this.workDexExpGained / divMult);
|
this.gainDexterityExp(this.workDexExpGained);
|
||||||
this.gainAgilityExp(this.workAgiExpGained / divMult);
|
this.gainAgilityExp(this.workAgiExpGained);
|
||||||
this.gainCharismaExp(this.workChaExpGained / divMult);
|
this.gainCharismaExp(this.workChaExpGained);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Working for Company */
|
/* Working for Company */
|
||||||
PlayerObject.prototype.finishWork = function(cancelled) {
|
PlayerObject.prototype.finishWork = function(cancelled) {
|
||||||
//Since the work was cancelled early, player only gains half of what they've earned so far
|
//Since the work was cancelled early, player only gains half of what they've earned so far
|
||||||
var cancMult = 1;
|
if (cancelled) {
|
||||||
if (cancelled) {cancMult = 2;}
|
this.workRepGained /= 2;
|
||||||
|
|
||||||
if (Engine.Debug) {
|
|
||||||
console.log("Player finishWork() called with " + this.workMoneyGained / cancMult + " $ gained");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.gainWorkExp(cancMult);
|
this.gainWorkExp();
|
||||||
|
|
||||||
var company = Companies[this.companyName];
|
var company = Companies[this.companyName];
|
||||||
company.playerReputation += (this.workRepGained / cancMult);
|
company.playerReputation += (this.workRepGained);
|
||||||
|
|
||||||
this.gainMoney(this.workMoneyGained / cancMult);
|
this.gainMoney(this.workMoneyGained);
|
||||||
|
|
||||||
this.updateSkillLevels();
|
this.updateSkillLevels();
|
||||||
|
|
||||||
var txt = "You earned a total of: <br>" +
|
var txt = "You earned a total of: <br>" +
|
||||||
"$" + formatNumber(this.workMoneyGained / cancMult, 2) + "<br>" +
|
"$" + formatNumber(this.workMoneyGained, 2) + "<br>" +
|
||||||
formatNumber(this.workRepGained / cancMult, 4) + " reputation for the company <br>" +
|
formatNumber(this.workRepGained, 4) + " reputation for the company <br>" +
|
||||||
formatNumber(this.workHackExpGained / cancMult, 4) + " hacking exp <br>" +
|
formatNumber(this.workHackExpGained, 4) + " hacking exp <br>" +
|
||||||
formatNumber(this.workStrExpGained / cancMult, 4) + " strength exp <br>" +
|
formatNumber(this.workStrExpGained, 4) + " strength exp <br>" +
|
||||||
formatNumber(this.workDefExpGained / cancMult, 4) + " defense exp <br>" +
|
formatNumber(this.workDefExpGained, 4) + " defense exp <br>" +
|
||||||
formatNumber(this.workDexExpGained / cancMult, 4) + " dexterity exp <br>" +
|
formatNumber(this.workDexExpGained, 4) + " dexterity exp <br>" +
|
||||||
formatNumber(this.workAgiExpGained / cancMult, 4) + " agility exp <br>" +
|
formatNumber(this.workAgiExpGained, 4) + " agility exp <br>" +
|
||||||
formatNumber(this.workChaExpGained / cancMult, 4) + " charisma exp<br>";
|
formatNumber(this.workChaExpGained, 4) + " charisma exp<br>";
|
||||||
|
|
||||||
if (cancelled) {
|
if (cancelled) {
|
||||||
txt = "You worked a short shift of " + convertTimeMsToTimeElapsedString(this.timeWorked) + " <br><br> " +
|
txt = "You worked a short shift of " + convertTimeMsToTimeElapsedString(this.timeWorked) + " <br><br> " +
|
||||||
"Since you cancelled your work early, you only gained half of the experience, money, and reputation you earned. <br><br>" + txt;
|
"Since you cancelled your work early, you only gained half of the reputation you earned. <br><br>" + txt;
|
||||||
} else {
|
} else {
|
||||||
txt = "You worked a full shift of 8 hours! <br><br> " +
|
txt = "You worked a full shift of 8 hours! <br><br> " +
|
||||||
"You earned a total of: <br>" + txt;
|
"You earned a total of: <br>" + txt;
|
||||||
@ -492,8 +489,8 @@ PlayerObject.prototype.work = function(numCycles) {
|
|||||||
formatNumber(this.workDexExpGained, 4) + " (" + formatNumber(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp <br>" +
|
formatNumber(this.workDexExpGained, 4) + " (" + formatNumber(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp <br>" +
|
||||||
formatNumber(this.workAgiExpGained, 4) + " (" + formatNumber(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp <br><br> " +
|
formatNumber(this.workAgiExpGained, 4) + " (" + formatNumber(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp <br><br> " +
|
||||||
formatNumber(this.workChaExpGained, 4) + " (" + formatNumber(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp <br><br>" +
|
formatNumber(this.workChaExpGained, 4) + " (" + formatNumber(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp <br><br>" +
|
||||||
"You will automatically finish after working for 8 hours. You can cancel earlier if you wish, <br>" +
|
"You will automatically finish after working for 8 hours. You can cancel earlier if you wish, " +
|
||||||
"but you will only gain half of the experience, money, and reputation you've earned so far."
|
"but you will only gain half of the reputation you've earned so far."
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,6 +175,7 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
var ifCount = numOccurrences(codeCopy, "if(");
|
var ifCount = numOccurrences(codeCopy, "if(");
|
||||||
var hackCount = numOccurrences(codeCopy, "hack(");
|
var hackCount = numOccurrences(codeCopy, "hack(");
|
||||||
var growCount = numOccurrences(codeCopy, "grow(");
|
var growCount = numOccurrences(codeCopy, "grow(");
|
||||||
|
var weakenCount = numOccurrences(codeCopy, "weaken(");
|
||||||
var nukeCount = numOccurrences(codeCopy, "nuke(");
|
var nukeCount = numOccurrences(codeCopy, "nuke(");
|
||||||
var brutesshCount = numOccurrences(codeCopy, "brutessh(");
|
var brutesshCount = numOccurrences(codeCopy, "brutessh(");
|
||||||
var ftpcrackCount = numOccurrences(codeCopy, "ftpcrack(");
|
var ftpcrackCount = numOccurrences(codeCopy, "ftpcrack(");
|
||||||
@ -182,11 +183,13 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
var httpwormCount = numOccurrences(codeCopy, "httpworm(");
|
var httpwormCount = numOccurrences(codeCopy, "httpworm(");
|
||||||
var sqlinjectCount = numOccurrences(codeCopy, "sqlinject(");
|
var sqlinjectCount = numOccurrences(codeCopy, "sqlinject(");
|
||||||
var runCount = numOccurrences(codeCopy, "run(");
|
var runCount = numOccurrences(codeCopy, "run(");
|
||||||
|
var execCount = numOccurrences(codeCopy, "exec(");
|
||||||
var scpCount = numOccurrences(codeCopy, "scp(");
|
var scpCount = numOccurrences(codeCopy, "scp(");
|
||||||
var hasRootAccessCount = numOccurrences(codeCopy, "hasRootAccess(");
|
var hasRootAccessCount = numOccurrences(codeCopy, "hasRootAccess(");
|
||||||
var getHostnameCount = numOccurrences(codeCopy, "getHostname(");
|
var getHostnameCount = numOccurrences(codeCopy, "getHostname(");
|
||||||
var getHackingLevelCount = numOccurrences(codeCopy, "getHackingLevel(");
|
var getHackingLevelCount = numOccurrences(codeCopy, "getHackingLevel(");
|
||||||
var getServerMoneyAvailableCount = numOccurrences(codeCopy, "getServerMoneyAvailable(");
|
var getServerMoneyAvailableCount = numOccurrences(codeCopy, "getServerMoneyAvailable(");
|
||||||
|
var getServerSecurityCount = numOccurrences(codeCopy, "getServerSecurityLevel(");
|
||||||
var numOperators = numNetscriptOperators(codeCopy);
|
var numOperators = numNetscriptOperators(codeCopy);
|
||||||
var purchaseHacknetCount = numOccurrences(codeCopy, "purchaseHacknetNode(");
|
var purchaseHacknetCount = numOccurrences(codeCopy, "purchaseHacknetNode(");
|
||||||
var hacknetnodesArrayCount = numOccurrences(codeCopy, "hacknetnodes[");
|
var hacknetnodesArrayCount = numOccurrences(codeCopy, "hacknetnodes[");
|
||||||
@ -200,6 +203,7 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
(ifCount * CONSTANTS.ScriptIfRamCost) +
|
(ifCount * CONSTANTS.ScriptIfRamCost) +
|
||||||
(hackCount * CONSTANTS.ScriptHackRamCost) +
|
(hackCount * CONSTANTS.ScriptHackRamCost) +
|
||||||
(growCount * CONSTANTS.ScriptGrowRamCost) +
|
(growCount * CONSTANTS.ScriptGrowRamCost) +
|
||||||
|
(weakenCount * CONSTANTS.ScriptWeakenRamCost) +
|
||||||
(nukeCount * CONSTANTS.ScriptNukeRamCost) +
|
(nukeCount * CONSTANTS.ScriptNukeRamCost) +
|
||||||
(brutesshCount * CONSTANTS.ScriptBrutesshRamCost) +
|
(brutesshCount * CONSTANTS.ScriptBrutesshRamCost) +
|
||||||
(ftpcrackCount * CONSTANTS.ScriptFtpcrackRamCost) +
|
(ftpcrackCount * CONSTANTS.ScriptFtpcrackRamCost) +
|
||||||
@ -207,11 +211,13 @@ Script.prototype.updateRamUsage = function() {
|
|||||||
(httpwormCount * CONSTANTS.ScriptHttpwormRamCost) +
|
(httpwormCount * CONSTANTS.ScriptHttpwormRamCost) +
|
||||||
(sqlinjectCount * CONSTANTS.ScriptSqlinjectRamCost) +
|
(sqlinjectCount * CONSTANTS.ScriptSqlinjectRamCost) +
|
||||||
(runCount * CONSTANTS.ScriptRunRamCost) +
|
(runCount * CONSTANTS.ScriptRunRamCost) +
|
||||||
|
(execCount * CONSTANTS.ScriptExecRamCost) +
|
||||||
(scpCount * CONSTANTS.ScriptScpRamCost) +
|
(scpCount * CONSTANTS.ScriptScpRamCost) +
|
||||||
(hasRootAccessCount * CONSTANTS.ScriptHasRootAccessRamCost) +
|
(hasRootAccessCount * CONSTANTS.ScriptHasRootAccessRamCost) +
|
||||||
(getHostnameCount * CONSTANTS.ScriptGetHostnameRamCost) +
|
(getHostnameCount * CONSTANTS.ScriptGetHostnameRamCost) +
|
||||||
(getHackingLevelCount * CONSTANTS.ScriptGetHackingLevelRamCost) +
|
(getHackingLevelCount * CONSTANTS.ScriptGetHackingLevelRamCost) +
|
||||||
(getServerMoneyAvailableCount * CONSTANTS.ScriptGetServerMoneyRamCost) +
|
(getServerMoneyAvailableCount * CONSTANTS.ScriptGetServerMoneyRamCost) +
|
||||||
|
(getServerSecurityCount * CONSTANTS.ScriptGetServerSecurityRamCost) +
|
||||||
(numOperators * CONSTANTS.ScriptOperatorRamCost) +
|
(numOperators * CONSTANTS.ScriptOperatorRamCost) +
|
||||||
(purchaseHacknetCount * CONSTANTS.ScriptPurchaseHacknetRamCost) +
|
(purchaseHacknetCount * CONSTANTS.ScriptPurchaseHacknetRamCost) +
|
||||||
(hacknetnodesArrayCount * CONSTANTS.ScriptHacknetNodesRamCost) +
|
(hacknetnodesArrayCount * CONSTANTS.ScriptHacknetNodesRamCost) +
|
||||||
|
@ -108,6 +108,17 @@ Server.prototype.getScript = function(scriptName) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Strengthens a server's security level (difficulty) by the specified amount
|
||||||
|
Server.prototype.fortify = function(amt) {
|
||||||
|
this.hackDifficulty += amt;
|
||||||
|
if (this.hackDifficulty > 99) {this.hackDifficulty = 99;}
|
||||||
|
}
|
||||||
|
|
||||||
|
Server.prototype.weaken = function(amt) {
|
||||||
|
this.hackDifficulty -= amt;
|
||||||
|
if (this.hackDifficulty < 1) {this.hackDifficulty = 1;}
|
||||||
|
}
|
||||||
|
|
||||||
//Functions for loading and saving a Server
|
//Functions for loading and saving a Server
|
||||||
Server.prototype.toJSON = function() {
|
Server.prototype.toJSON = function() {
|
||||||
return Generic_toJSON("Server", this);
|
return Generic_toJSON("Server", this);
|
||||||
@ -420,7 +431,7 @@ initForeignServers = function() {
|
|||||||
AddToAllServers(JoesGunsServer);
|
AddToAllServers(JoesGunsServer);
|
||||||
|
|
||||||
var Zer0NightclubServer = new Server();
|
var Zer0NightclubServer = new Server();
|
||||||
Zer0NightclubServer.init(createRandomIp(), "zer0", "ZER0 Nightclub", true, false, false, false, 2);
|
Zer0NightclubServer.init(createRandomIp(), "zer0", "ZER0 Nightclub", true, false, false, false, 4);
|
||||||
Zer0NightclubServer.setHackingParameters(75, 7500000, 25, 40);
|
Zer0NightclubServer.setHackingParameters(75, 7500000, 25, 40);
|
||||||
Zer0NightclubServer.setPortProperties(1);
|
Zer0NightclubServer.setPortProperties(1);
|
||||||
AddToAllServers(Zer0NightclubServer);
|
AddToAllServers(Zer0NightclubServer);
|
||||||
@ -432,7 +443,7 @@ initForeignServers = function() {
|
|||||||
AddToAllServers(NectarNightclubServer);
|
AddToAllServers(NectarNightclubServer);
|
||||||
|
|
||||||
var NeoNightclubServer = new Server();
|
var NeoNightclubServer = new Server();
|
||||||
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 2);
|
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 4);
|
||||||
NeoNightclubServer.setHackingParameters(50, 4500000, 25, 25);
|
NeoNightclubServer.setHackingParameters(50, 4500000, 25, 25);
|
||||||
NeoNightclubServer.setPortProperties(1);
|
NeoNightclubServer.setPortProperties(1);
|
||||||
AddToAllServers(NeoNightclubServer);
|
AddToAllServers(NeoNightclubServer);
|
||||||
@ -462,7 +473,7 @@ initForeignServers = function() {
|
|||||||
AddToAllServers(PhantasyServer);
|
AddToAllServers(PhantasyServer);
|
||||||
|
|
||||||
var MaxHardwareServer = new Server();
|
var MaxHardwareServer = new Server();
|
||||||
MaxHardwareServer.init(createRandomIp(), "max-hardware", "Max Hardware Store", true, false, false, false, 2);
|
MaxHardwareServer.init(createRandomIp(), "max-hardware", "Max Hardware Store", true, false, false, false, 4);
|
||||||
MaxHardwareServer.setHackingParameters(80, 11000000, 15, 25);
|
MaxHardwareServer.setHackingParameters(80, 11000000, 15, 25);
|
||||||
MaxHardwareServer.setPortProperties(1);
|
MaxHardwareServer.setPortProperties(1);
|
||||||
AddToAllServers(MaxHardwareServer);
|
AddToAllServers(MaxHardwareServer);
|
||||||
@ -481,7 +492,7 @@ initForeignServers = function() {
|
|||||||
AddToAllServers(CrushFitnessGymServer);
|
AddToAllServers(CrushFitnessGymServer);
|
||||||
|
|
||||||
var IronGymServer = new Server();
|
var IronGymServer = new Server();
|
||||||
IronGymServer.init(createRandomIp(), "iron-gym", "Iron Gym Network", true, false, false, false, 2);
|
IronGymServer.init(createRandomIp(), "iron-gym", "Iron Gym Network", true, false, false, false, 4);
|
||||||
IronGymServer.setHackingParameters(100, 20000000, 30, 20);
|
IronGymServer.setHackingParameters(100, 20000000, 30, 20);
|
||||||
IronGymServer.setPortProperties(1);
|
IronGymServer.setPortProperties(1);
|
||||||
AddToAllServers(IronGymServer);
|
AddToAllServers(IronGymServer);
|
||||||
@ -651,7 +662,7 @@ processServerGrowth = function(numCycles) {
|
|||||||
var numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage;
|
var numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage;
|
||||||
|
|
||||||
//Apply serverGrowth for the calculated number of growth cycles
|
//Apply serverGrowth for the calculated number of growth cycles
|
||||||
var serverGrowth = Math.pow(CONSTANTS.ServerGrowthRate, numServerGrowthCyclesAdjusted) * Player.hacking_grow_mult;
|
var serverGrowth = Math.pow(CONSTANTS.ServerGrowthRate, numServerGrowthCyclesAdjusted * Player.hacking_grow_mult) ;
|
||||||
if (serverGrowth < 1) {
|
if (serverGrowth < 1) {
|
||||||
console.log("WARN: serverGrowth calculated to be less than 1");
|
console.log("WARN: serverGrowth calculated to be less than 1");
|
||||||
serverGrowth = 1;
|
serverGrowth = 1;
|
||||||
@ -674,7 +685,7 @@ processSingleServerGrowth = function(server, numCycles) {
|
|||||||
var numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage;
|
var numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage;
|
||||||
|
|
||||||
//Apply serverGrowth for the calculated number of growth cycles
|
//Apply serverGrowth for the calculated number of growth cycles
|
||||||
var serverGrowth = Math.pow(CONSTANTS.ServerGrowthRate, numServerGrowthCyclesAdjusted) * Player.hacking_grow_mult;
|
var serverGrowth = Math.pow(CONSTANTS.ServerGrowthRate, numServerGrowthCyclesAdjusted * Player.hacking_grow_mult) ;
|
||||||
if (serverGrowth < 1) {
|
if (serverGrowth < 1) {
|
||||||
console.log("WARN: serverGrowth calculated to be less than 1");
|
console.log("WARN: serverGrowth calculated to be less than 1");
|
||||||
serverGrowth = 1;
|
serverGrowth = 1;
|
||||||
|
@ -292,6 +292,8 @@ var Terminal = {
|
|||||||
|
|
||||||
Player.gainHackingExp(expGainedOnSuccess)
|
Player.gainHackingExp(expGainedOnSuccess)
|
||||||
|
|
||||||
|
Player.getCurrentServer().fortify(CONSTANTS.ServerFortifyAmount);
|
||||||
|
|
||||||
post("Hack successful! Gained $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " hacking EXP");
|
post("Hack successful! Gained $" + formatNumber(moneyGained, 2) + " and " + formatNumber(expGainedOnSuccess, 4) + " hacking EXP");
|
||||||
} else { //Failure
|
} else { //Failure
|
||||||
//Player only gains 25% exp for failure? TODO Can change this later to balance
|
//Player only gains 25% exp for failure? TODO Can change this later to balance
|
||||||
@ -317,8 +319,7 @@ var Terminal = {
|
|||||||
else {rootAccess = "NO";}
|
else {rootAccess = "NO";}
|
||||||
post("Root Access: " + rootAccess);
|
post("Root Access: " + rootAccess);
|
||||||
post("Required hacking skill: " + Player.getCurrentServer().requiredHackingSkill);
|
post("Required hacking skill: " + Player.getCurrentServer().requiredHackingSkill);
|
||||||
//TODO Make these actual estimates by adding a random offset to result?
|
post("Estimated server security level(1-100): " + formatNumber(addOffset(Player.getCurrentServer().hackDifficulty, 5), 3));
|
||||||
//TODO Change the text to sound better
|
|
||||||
post("Estimated chance to hack: " + formatNumber(addOffset(Player.calculateHackingChance() * 100, 5), 2) + "%");
|
post("Estimated chance to hack: " + formatNumber(addOffset(Player.calculateHackingChance() * 100, 5), 2) + "%");
|
||||||
post("Estimated time to hack: " + formatNumber(addOffset(Player.calculateHackingTime(), 5), 3) + " seconds");
|
post("Estimated time to hack: " + formatNumber(addOffset(Player.calculateHackingTime(), 5), 3) + " seconds");
|
||||||
post("Estimated total money available on server: $" + formatNumber(addOffset(Player.getCurrentServer().moneyAvailable, 5), 2));
|
post("Estimated total money available on server: $" + formatNumber(addOffset(Player.getCurrentServer().moneyAvailable, 5), 2));
|
||||||
|
@ -262,7 +262,8 @@ var Engine = {
|
|||||||
'<b>Multipliers</b><br><br>' +
|
'<b>Multipliers</b><br><br>' +
|
||||||
'Hacking Chance multiplier: ' + formatNumber(Player.hacking_chance_mult * 100, 2) + '%<br>' +
|
'Hacking Chance multiplier: ' + formatNumber(Player.hacking_chance_mult * 100, 2) + '%<br>' +
|
||||||
'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '%<br>' +
|
'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '%<br>' +
|
||||||
'Hacking money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '%<br><br>' +
|
'Hacking Money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '%<br>' +
|
||||||
|
'Hacking Growth multiplier: ' + formatNumber(Player.hacking_grow_mult * 100, 2) + '%<br><br>' +
|
||||||
'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '%<br>' +
|
'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '%<br>' +
|
||||||
'Hacking Experience multiplier: ' + formatNumber(Player.hacking_exp_mult * 100, 2) + '%<br><br>' +
|
'Hacking Experience multiplier: ' + formatNumber(Player.hacking_exp_mult * 100, 2) + '%<br><br>' +
|
||||||
'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '%<br>' +
|
'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '%<br>' +
|
||||||
@ -363,9 +364,12 @@ var Engine = {
|
|||||||
|
|
||||||
//Update the ActiveScriptsItems array
|
//Update the ActiveScriptsItems array
|
||||||
updateActiveScriptsItems: function() {
|
updateActiveScriptsItems: function() {
|
||||||
|
var total = 0;
|
||||||
for (var i = 0; i < workerScripts.length; ++i) {
|
for (var i = 0; i < workerScripts.length; ++i) {
|
||||||
Engine.updateActiveScriptsItemContent(i, workerScripts[i]);
|
total += Engine.updateActiveScriptsItemContent(i, workerScripts[i]);
|
||||||
}
|
}
|
||||||
|
document.getElementById("active-scripts-total-prod").innerHTML =
|
||||||
|
"Total online production rate: $" + formatNumber(total, 2) + " / second";
|
||||||
},
|
},
|
||||||
|
|
||||||
//Updates the content of the given item in the Active Scripts list
|
//Updates the content of the given item in the Active Scripts list
|
||||||
@ -382,8 +386,8 @@ var Engine = {
|
|||||||
item.removeChild(item.firstChild);
|
item.removeChild(item.firstChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Add the updated text back
|
//Add the updated text back. Returns the total online production rate
|
||||||
Engine.createActiveScriptsText(workerscript, item);
|
return Engine.createActiveScriptsText(workerscript, item);
|
||||||
},
|
},
|
||||||
|
|
||||||
createActiveScriptsText: function(workerscript, item) {
|
createActiveScriptsText: function(workerscript, item) {
|
||||||
@ -421,6 +425,9 @@ var Engine = {
|
|||||||
offlineMpsText + "<br>" + offlineEpsText + "<br>";
|
offlineMpsText + "<br>" + offlineEpsText + "<br>";
|
||||||
|
|
||||||
item.appendChild(itemText);
|
item.appendChild(itemText);
|
||||||
|
|
||||||
|
//Return total online production rate
|
||||||
|
return onlineMps;
|
||||||
},
|
},
|
||||||
|
|
||||||
displayFactionsInfo: function() {
|
displayFactionsInfo: function() {
|
||||||
@ -1088,11 +1095,18 @@ var Engine = {
|
|||||||
document.getElementById("world-menu-link").removeAttribute("class");
|
document.getElementById("world-menu-link").removeAttribute("class");
|
||||||
document.getElementById("tutorial-menu-link").removeAttribute("class");
|
document.getElementById("tutorial-menu-link").removeAttribute("class");
|
||||||
|
|
||||||
//DEBUG
|
//DEBUG Delete active Scripts on home
|
||||||
document.getElementById("debug-delete-scripts-link").addEventListener("click", function() {
|
document.getElementById("debug-delete-scripts-link").addEventListener("click", function() {
|
||||||
console.log("Deleting running scripts on home computer");
|
console.log("Deleting running scripts on home computer");
|
||||||
Player.getHomeComputer().runningScripts = [];
|
Player.getHomeComputer().runningScripts = [];
|
||||||
dialogBoxCreate("Forcefully deleted scripts. Please refresh page");
|
dialogBoxCreate("Forcefully deleted all running scripts on home computer. Please save and refresh page");
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
//DEBUG Soft Reset
|
||||||
|
document.getElementById("debug-soft-reset").addEventListener("click", function() {
|
||||||
|
dialogBoxCreate("Soft Reset!");
|
||||||
|
prestigeAugmentation();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user