diff --git a/src/Augmentations.js b/src/Augmentations.js
index eb5f747ae..e9891be53 100644
--- a/src/Augmentations.js
+++ b/src/Augmentations.js
@@ -260,7 +260,7 @@ initAugmentations = function() {
var CombatRib3 = new Augmentation(AugmentationNames.CombatRib3);
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 " +
- "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 25%.");
+ "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 20%.");
CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
"KuaiGong International", "Blade Industries", "The Covenant"]);
if (augmentationExists(AugmentationNames.CombatRib3)) {
@@ -315,7 +315,7 @@ initAugmentations = function() {
GrapheneBoneLacings.setRequirements(450000, 850000000);
GrapheneBoneLacings.setInfo("A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
"their density and tensile strength.
" +
- "This augmentation increases the player's strength and defense by 90%.");
+ "This augmentation increases the player's strength and defense by 85%.");
GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
GrapheneBoneLacings.owned = Augmentations[AugmentationNames.GrapheneBoneLacings].owned;
@@ -329,7 +329,7 @@ initAugmentations = function() {
"Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
"stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
"greatly improved senses and reaction speeds.
" +
- "This augmentation increases all of the player's combat stats by 20%.");
+ "This augmentation increases all of the player's combat stats by 18%.");
BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
"OmniTek Incorporated", "Blade Industries"]);
if (augmentationExists(AugmentationNames.BionicSpine)) {
@@ -342,7 +342,7 @@ initAugmentations = function() {
GrapheneBionicSpine.setRequirements(650000, 1200000000);
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.
" +
- "This augmentation increases all of the player's combat stats by 70%.");
+ "This augmentation increases all of the player's combat stats by 65%.");
GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
GrapheneBionicSpine.owned = Augmentations[AugmentationNames.GrapheneBionicSpine].owned;
@@ -1167,7 +1167,7 @@ initAugmentations = function() {
"and integumentary system. The drug permanently modifies the DNA of the " +
"body's skin and bone cells, granting them the ability to repair " +
"and restructure themselves.
" +
- "This augmentation increases the player's strength and defense by 75%");
+ "This augmentation increases the player's strength and defense by 65%");
Neotra.setRequirements(225000, 550000000);
Neotra.addToFactions(["Blade Industries"]);
if (augmentationExists(AugmentationNames.Neotra)) {
@@ -1231,7 +1231,7 @@ initAugmentations = function() {
"to the body using a skin graft. The result is photosynthetic " +
"skin cells, allowing users to generate their own energy " +
"and nutrition using solar power.
" +
- "This augmentation increases the player's strength, defense, and agility by 50%");
+ "This augmentation increases the player's strength, defense, and agility by 40%");
PhotosyntheticCells.setRequirements(225000, 525000000);
PhotosyntheticCells.addToFactions(["KuaiGong International"]);
if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
@@ -1266,7 +1266,7 @@ initAugmentations = function() {
"with hardware and firmware that lets the user connect to, access and hack " +
"devices and machines just by touching them.
" +
"This augmentation:
" +
- "Increases the player's strength and dexterity by 20%
" +
+ "Increases the player's strength and dexterity by 15%
" +
"Increases the player's hacking skill by 10%
" +
"Increases the player's hacking speed by 2%
" +
"Increases the amount of money the player gains from hacking by 10%");
@@ -1380,9 +1380,9 @@ initAugmentations = function() {
"the retractable blades with an advanced graphene material " +
"to make them much stronger and lighter.
" +
"This augmentation:
" +
- "Increases the player's strength and defense by 50%
" +
+ "Increases the player's strength and defense by 40%
" +
"Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 25%");
+ "Increases the amount of money the player gains from crimes by 30%");
GrapheneBrachiBlades.setRequirements(90000, 500000000);
GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
@@ -1396,7 +1396,7 @@ initAugmentations = function() {
GrapheneBionicArms.setInfo("An upgrade to the Bionic Arms augmentation. It infuses the " +
"prosthetic arms with an advanced graphene material " +
"to make them much stronger and lighter.
" +
- "This augmentation increases the player's strength and dexterity by 90%");
+ "This augmentation increases the player's strength and dexterity by 85%");
GrapheneBionicArms.setRequirements(200000, 750000000);
GrapheneBionicArms.addToFactions(["The Dark Army"]);
if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
@@ -1409,9 +1409,9 @@ initAugmentations = function() {
var BrachiBlades = new Augmentation(AugmentationNames.BrachiBlades);
BrachiBlades.setInfo("A set of retractable plasteel blades are implanted in the arm, underneath the skin. " +
"
This augmentation:
" +
- "Increases the player's strength and defense by 20%
" +
+ "Increases the player's strength and defense by 15%
" +
"Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 10%");
+ "Increases the amount of money the player gains from crimes by 15%");
BrachiBlades.setRequirements(5000, 18000000);
BrachiBlades.addToFactions(["The Syndicate"]);
if (augmentationExists(AugmentationNames.BrachiBlades)) {
@@ -1424,7 +1424,7 @@ initAugmentations = function() {
var BionicArms = new Augmentation(AugmentationNames.BionicArms);
BionicArms.setInfo("Cybernetic arms created from plasteel and carbon fibers that completely replace " +
"the user's organic arms.
" +
- "This augmentation increases the user's strength and dexterity by 50%");
+ "This augmentation increases the user's strength and dexterity by 30%");
BionicArms.setRequirements(25000, 55000000);
BionicArms.addToFactions(["Tetrads"]);
if (augmentationExists(AugmentationNames.BionicArms)) {
@@ -1484,8 +1484,8 @@ applyAugmentation = function(aug, reapply=false) {
Player.defense_mult *= 1.15;
break;
case AugmentationNames.CombatRib3:
- Player.strength_mult *= 1.25;
- Player.defense_mult *= 1.25;
+ Player.strength_mult *= 1.20;
+ Player.defense_mult *= 1.20;
break;
case AugmentationNames.NanofiberWeave: //Med level
Player.strength_mult *= 1.25;
@@ -1499,20 +1499,20 @@ applyAugmentation = function(aug, reapply=false) {
Player.dexterity_mult *= 1.05;
break;
case AugmentationNames.GrapheneBoneLacings: //High level
- Player.strength_mult *= 1.9;
- Player.defense_mult *= 1.9;
+ Player.strength_mult *= 1.85;
+ Player.defense_mult *= 1.85;
break;
case AugmentationNames.BionicSpine: //Med level
- Player.strength_mult *= 1.2;
- Player.defense_mult *= 1.2;
- Player.agility_mult *= 1.2;
- Player.dexterity_mult *= 1.2;
+ Player.strength_mult *= 1.18;
+ Player.defense_mult *= 1.18;
+ Player.agility_mult *= 1.18;
+ Player.dexterity_mult *= 1.18;
break;
case AugmentationNames.GrapheneBionicSpine: //High level
- Player.strength_mult *= 1.7;
- Player.defense_mult *= 1.7;
- Player.agility_mult *= 1.7;
- Player.dexterity_mult *= 1.7;
+ Player.strength_mult *= 1.65;
+ Player.defense_mult *= 1.65;
+ Player.agility_mult *= 1.65;
+ Player.dexterity_mult *= 1.65;
break;
case AugmentationNames.BionicLegs: //Med level
Player.agility_mult *= 1.6;
@@ -1824,8 +1824,8 @@ applyAugmentation = function(aug, reapply=false) {
Player.faction_rep_mult *= 1.25;
break;
case AugmentationNames.Neotra:
- Player.strength_mult *= 1.75;
- Player.defense_mult *= 1.75;
+ Player.strength_mult *= 1.65;
+ Player.defense_mult *= 1.65;
break;
case AugmentationNames.Xanipher:
Player.hacking_mult *= 1.2;
@@ -1854,9 +1854,9 @@ applyAugmentation = function(aug, reapply=false) {
Player.hacking_exp_mult *= 1.25;
break;
case AugmentationNames.PhotosyntheticCells:
- Player.strength_mult *= 1.5;
- Player.defense_mult *= 1.5;
- Player.agility_mult *= 1.5;
+ Player.strength_mult *= 1.4;
+ Player.defense_mult *= 1.4;
+ Player.agility_mult *= 1.4;
break;
case AugmentationNames.Neurolink:
Player.hacking_mult *= 1.15;
@@ -1865,8 +1865,8 @@ applyAugmentation = function(aug, reapply=false) {
Player.hacking_speed_mult *= 1.05;
break;
case AugmentationNames.TheBlackHand:
- Player.strength_mult *= 1.2;
- Player.dexterity_mult *= 1.2;
+ Player.strength_mult *= 1.15;
+ Player.dexterity_mult *= 1.15;
Player.hacking_mult *= 1.1;
Player.hacking_speed_mult *= 1.02;
Player.hacking_money_mult *= 1.1;
@@ -1895,24 +1895,24 @@ applyAugmentation = function(aug, reapply=false) {
Player.defense_mult *= 1.5;
break;
case AugmentationNames.GrapheneBrachiBlades:
- Player.strength_mult *= 1.5;
- Player.defense_mult *= 1.5;
+ Player.strength_mult *= 1.4;
+ Player.defense_mult *= 1.4;
Player.crime_success_mult *= 1.1;
- Player.crime_money_mult *= 1.25;
+ Player.crime_money_mult *= 1.3;
break;
case AugmentationNames.GrapheneBionicArms:
- Player.strength_mult *= 1.9;
- Player.dexterity_mult *= 1.9;
+ Player.strength_mult *= 1.85;
+ Player.dexterity_mult *= 1.85;
break;
case AugmentationNames.BrachiBlades:
- Player.strength_mult *= 1.2;
- Player.defense_mult *= 1.2;
+ Player.strength_mult *= 1.15;
+ Player.defense_mult *= 1.15;
Player.crime_success_mult *= 1.1;
- Player.crime_money_mult *= 1.1;
+ Player.crime_money_mult *= 1.15;
break;
case AugmentationNames.BionicArms:
- Player.strength_mult *= 1.5;
- Player.dexterity_mult *= 1.5;
+ Player.strength_mult *= 1.3;
+ Player.dexterity_mult *= 1.3;
break;
case AugmentationNames.SNA:
Player.work_money_mult *= 1.1;
diff --git a/src/Script.js b/src/Script.js
index d4ea22ac5..f93b1a6f2 100644
--- a/src/Script.js
+++ b/src/Script.js
@@ -245,13 +245,15 @@ scriptCalculateOfflineProduction = function(runningScriptObj) {
var confidence = (runningScriptObj.onlineRunningTime) / 14400;
if (confidence >= 1) {confidence = 1;}
+ //Data map: [MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
+
//Grow
- for (var ip in runningScriptObj.numTimesGrowMap) {
- if (runningScriptObj.numTimesGrowMap.hasOwnProperty(ip)) {
- if (runningScriptObj.numTimesGrowMap[ip] == 0 || runningScriptObj.numTimesGrowMap[ip] == null) {continue;}
+ for (var ip in runningScriptObj.dataMap) {
+ if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
+ if (runningScriptObj.dataMap[ip][2] == 0 || runningScriptObj.dataMap[ip][2] == null) {continue;}
var serv = AllServers[ip];
if (serv == null) {continue;}
- var timesGrown = Math.round(0.5 * runningScriptObj.numTimesGrowMap[ip] / runningScriptObj.onlineRunningTime * timePassed);
+ var timesGrown = Math.round(0.5 * runningScriptObj.dataMap[ip][2] / runningScriptObj.onlineRunningTime * timePassed);
console.log(runningScriptObj.filename + " called grow() on " + serv.hostname + " " + timesGrown + " times while offline");
runningScriptObj.log("Called grow() on " + serv.hostname + " " + timesGrown + " times while offline");
var growth = processSingleServerGrowth(serv, timesGrown * 450);
@@ -260,12 +262,12 @@ scriptCalculateOfflineProduction = function(runningScriptObj) {
}
var totalOfflineProduction = 0;
- for (var ip in runningScriptObj.moneyStolenMap) {
- if (runningScriptObj.moneyStolenMap.hasOwnProperty(ip)) {
- if (runningScriptObj.moneyStolenMap[ip] == 0 || runningScriptObj.moneyStolenMap[ip] == null) {continue;}
+ for (var ip in runningScriptObj.dataMap) {
+ if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
+ if (runningScriptObj.dataMap[ip][0] == 0 || runningScriptObj.dataMap[ip][0] == null) {continue;}
var serv = AllServers[ip];
if (serv == null) {continue;}
- var production = 0.5 * runningScriptObj.moneyStolenMap[ip] / runningScriptObj.onlineRunningTime * timePassed;
+ var production = 0.5 * runningScriptObj.dataMap[ip][0] / runningScriptObj.onlineRunningTime * timePassed;
production *= confidence;
if (production > serv.moneyAvailable) {
production = serv.moneyAvailable;
@@ -292,12 +294,12 @@ scriptCalculateOfflineProduction = function(runningScriptObj) {
runningScriptObj.offlineExpGained += expGain;
//Fortify a server's security based on how many times it was hacked
- for (var ip in runningScriptObj.numTimesHackMap) {
- if (runningScriptObj.numTimesHackMap.hasOwnProperty(ip)) {
- if (runningScriptObj.numTimesHackMap[ip] == 0 || runningScriptObj.numTimesHackMap[ip] == null) {continue;}
+ for (var ip in runningScriptObj.dataMap) {
+ if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
+ if (runningScriptObj.dataMap[ip][1] == 0 || runningScriptObj.dataMap[ip][1] == null) {continue;}
var serv = AllServers[ip];
if (serv == null) {continue;}
- var timesHacked = Math.round(0.5 * runningScriptObj.numTimesHackMap[ip] / runningScriptObj.onlineRunningTime * timePassed);
+ var timesHacked = Math.round(0.5 * runningScriptObj.dataMap[ip][1] / runningScriptObj.onlineRunningTime * timePassed);
console.log(runningScriptObj.filename + " hacked " + serv.hostname + " " + timesHacked + " times while offline");
runningScriptObj.log("Hacked " + serv.hostname + " " + timesHacked + " times while offline");
serv.fortify(CONSTANTS.ServerFortifyAmount * timesHacked);
@@ -305,12 +307,12 @@ scriptCalculateOfflineProduction = function(runningScriptObj) {
}
//Weaken
- for (var ip in runningScriptObj.numTimesWeakenMap) {
- if (runningScriptObj.numTimesWeakenMap.hasOwnProperty(ip)) {
- if (runningScriptObj.numTimesWeakenMap[ip] == 0 || runningScriptObj.numTimesWeakenMap[ip] == null) {continue;}
+ for (var ip in runningScriptObj.dataMap) {
+ if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
+ if (runningScriptObj.dataMap[ip][3] == 0 || runningScriptObj.dataMap[ip][3] == null) {continue;}
var serv = AllServers[ip];
if (serv == null) {continue;}
- var timesWeakened = Math.round(0.5 * runningScriptObj.numTimesWeakenMap[ip] / runningScriptObj.onlineRunningTime * timePassed);
+ var timesWeakened = Math.round(0.5 * runningScriptObj.dataMap[ip][3] / runningScriptObj.onlineRunningTime * timePassed);
console.log(runningScriptObj.filename + " called weaken() on " + serv.hostname + " " + timesWeakened + " times while offline");
runningScriptObj.log("Called weaken() on " + serv.hostname + " " + timesWeakened + " times while offline");
serv.weaken(CONSTANTS.ServerWeakenAmount * timesWeakened);
@@ -351,10 +353,8 @@ function RunningScript(script, args) {
this.threads = 1;
- this.moneyStolenMap = new AllServersMap();
- this.numTimesHackMap = new AllServersMap();
- this.numTimesGrowMap = new AllServersMap();
- this.numTimesWeakenMap = new AllServersMap();
+ //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
+ this.dataMap = new AllServersMap([0, 0, 0, 0]);
}
RunningScript.prototype.reset = function() {
@@ -387,30 +387,30 @@ RunningScript.prototype.displayLog = function() {
//Update the moneyStolen and numTimesHack maps when hacking
RunningScript.prototype.recordHack = function(serverIp, moneyGained, n=1) {
- if (this.moneyStolenMap == null) {
- this.moneyStolenMap = new AllServersMap();
+ if (this.dataMap == null) {
+ //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
+ this.dataMap = new AllServersMap([0, 0, 0, 0]);
}
- if (this.numTimesHackMap == null) {
- this.numTimesHackMap = new AllServersMap();
- }
- this.moneyStolenMap[serverIp] += moneyGained;
- this.numTimesHackMap[serverIp] += n;
+ this.dataMap[serverIp][0] += moneyGained;
+ this.dataMap[serverIp][1] += n;
}
//Update the grow map when calling grow()
RunningScript.prototype.recordGrow = function(serverIp, n=1) {
- if (this.numTimesGrowMap == null) {
- this.numTimesGrowMap = new AllServersMap();
+ if (this.dataMap == null) {
+ //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
+ this.dataMap = new AllServersMap([0, 0, 0, 0]);
}
- this.numTimesGrowMap[serverIp] += n;
+ this.dataMap[serverIp][2] += n;
}
//Update the weaken map when calling weaken() {
RunningScript.prototype.recordWeaken = function(serverIp, n=1) {
- if (this.numTimesWeakenMap == null) {
- this.numTimesWeakenMap = new AllServersMap();
+ if (this.dataMap == null) {
+ //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
+ this.dataMap = new AllServersMap([0, 0, 0, 0]);
}
- this.numTimesWeakenMap[serverIp] += n;
+ this.dataMap[serverIp][3] += n;
}
RunningScript.prototype.toJSON = function() {
@@ -426,12 +426,14 @@ RunningScript.fromJSON = function(value) {
//a key. Initializes every key with a specified value that can either by a number or an array
function AllServersMap(init = 0) {
if (init.constructor === Array || init instanceof Array) {
- this.initValue = init.splice();
+ this.initValue = init.splice(); //Make a copy
+ } else {
+ this.initValue = 0;
}
for (var ip in AllServers) {
if (AllServers.hasOwnProperty(ip)) {
- this[ip] = init;
+ this[ip] = this.initValue;
}
}
}