diff --git a/src/Augmentations.js b/src/Augmentations.js
index 7ab791b1c..2d3a80de6 100644
--- a/src/Augmentations.js
+++ b/src/Augmentations.js
@@ -514,7 +514,7 @@ initAugmentations = function() {
"Increases the player's chance of successfully performing a hack by 3%
" +
"Increases the player's hacking experience gain rate by 10%
" +
"Increases the player's hacking skill by 10%");
- ENMCore.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
+ ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
"Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
if (augmentationExists(AugmentationNames.ENMCore)) {
ENMCore.owned = Augmentations[AugmentationNames.ENMCore].owned;
@@ -534,7 +534,7 @@ initAugmentations = function() {
"Increases the player's chance of successfully performing a hack by 5%
" +
"Increases the player's hacking experience gain rate by 50%
" +
"Increases the player's hacking skill by 15%");
- ENMCoreV2.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
"Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
if (augmentationExists(AugmentationNames.ENMCoreV2)) {
ENMCoreV2.owned = Augmentations[AugmentationNames.ENMCoreV2].owned;
@@ -928,6 +928,12 @@ initAugmentations = function() {
delete Augmentations[AugmentationNames.PowerRecirculator];
}
AddToAugmentations(PowerRecirculator);
+
+ //Unique AUGS (Each Faction gets one unique augmentation)
+ //Factions that already have unique augs up to this point:
+ // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
+ // Silhouette
+
}
applyAugmentation = function(aug, faction) {
diff --git a/src/Faction.js b/src/Faction.js
index 501bcc4b1..04c57d4c8 100644
--- a/src/Faction.js
+++ b/src/Faction.js
@@ -304,7 +304,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
//NiteSec
var nitesecFac = Factions["NiteSec"];
if (nitesecFac.isBanned == false && nitesecFac.isMember == false &&
- this.hacking_skill >= 500 && homeComp.maxRam >= 32) {
+ this.hacking_skill >= 200 && homeComp.maxRam >= 8) {
invitedFactions.push(nitesecFac);
}
@@ -404,7 +404,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
var slumsnakesFac = Factions["Slum Snakes"];
if (slumsnakesFac.isBanned == false && slumsnakesFac.isMember == false &&
this.strength >= 30 && this.defense >= 30 && this.dexterity >= 30 &&
- this.agility >= 30 && this.karma <= -15 && this.money >= 1000000) {
+ this.agility >= 30 && this.karma <= -10 && this.money >= 1000000) {
invitedFactions.push(slumsnakesFac);
}
diff --git a/src/Player.js b/src/Player.js
index 4e595ff61..6588200fc 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -826,12 +826,17 @@ PlayerObject.prototype.getFactionFieldWorkRepGain = function() {
}
/* Creating a Program */
-PlayerObject.prototype.startCreateProgramWork = function(programName, time) {
+PlayerObject.prototype.startCreateProgramWork = function(programName, time, reqLevel) {
this.resetWorkStatus();
this.isWorking = true;
this.workType = CONSTANTS.WorkTypeCreateProgram;
- this.timeNeededToCompleteWork = time;
+ //Time needed to complete work affected by hacking skill (linearly based on
+ //ratio of (your skill - required level) to MAX skill)
+ var timeMultiplier = (CONSTANTS.MaxSkillLevel - (this.hacking_skill - reqLevel)) / CONSTANTS.MaxSkillLevel;
+ if (timeMultiplier > 1) {timeMultiplier = 1;}
+ if (timeMultiplier < 0.01) {timeMultiplier = 0.01;}
+ this.timeNeededToCompleteWork = timeMultiplier & time;
this.createProgramName = programName;
diff --git a/src/engine.js b/src/engine.js
index 5191e8da7..b5bc4151a 100644
--- a/src/engine.js
+++ b/src/engine.js
@@ -991,22 +991,22 @@ var Engine = {
var httpWormALink = document.getElementById("create-program-httpworm");
var sqlInjectALink = document.getElementById("create-program-sqlinject");
portHackALink.addEventListener("click", function() {
- createProgram(Programs.PortHackProgram, CONSTANTS.MillisecondsPerQuarterHour);
+ Player.startCreateProgramWork(Programs.NukeProgram, CONSTANTS.MillisecondsPerQuarterHour, 1);
});
bruteSshALink.addEventListener("click", function() {
- Player.startCreateProgramWork(Programs.BruteSSHProgram, CONSTANTS.MillisecondsPerQuarterHour);
+ Player.startCreateProgramWork(Programs.BruteSSHProgram, CONSTANTS.MillisecondsPerQuarterHour, 50);
});
ftpCrackALink.addEventListener("click", function() {
- Player.startCreateProgramWork(Programs.FTPCrackProgram, CONSTANTS.MillisecondsPerHalfHour);
+ Player.startCreateProgramWork(Programs.FTPCrackProgram, CONSTANTS.MillisecondsPerHalfHour, 100);
});
relaySmtpALink.addEventListener("click", function() {
- Player.startCreateProgramWork(Programs.RelaySMTPProgram. CONSTANTS.MillisecondsPer2Hours);
+ Player.startCreateProgramWork(Programs.RelaySMTPProgram. CONSTANTS.MillisecondsPer2Hours, 250);
});
httpWormALink.addEventListener("click", function() {
- Player.startCreateProgramWork(Programs.HTTPWormProgram, CONSTANTS.MillisecondsPer4Hours);
+ Player.startCreateProgramWork(Programs.HTTPWormProgram, CONSTANTS.MillisecondsPer4Hours, 500);
});
sqlInjectALink.addEventListener("click", function() {
- Player.startCreateProgramWork(Programs.SQLInjectProgram, CONSTANTS.MillisecondsPer8Hours);
+ Player.startCreateProgramWork(Programs.SQLInjectProgram, CONSTANTS.MillisecondsPer8Hours, 750);
});
//Message at the top of terminal