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