From 501abfeae000af4f3b058f3f6bf368e6d0cf1074 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 10:10:15 -0500
Subject: [PATCH 1/9] Player hacking speed affects time to execute grow()
---
src/NetscriptEvaluator.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/NetscriptEvaluator.js b/src/NetscriptEvaluator.js
index a4d7612ed..64a2919a5 100644
--- a/src/NetscriptEvaluator.js
+++ b/src/NetscriptEvaluator.js
@@ -1274,6 +1274,6 @@ function scriptCalculatePercentMoneyHacked(server) {
function scriptCalculateGrowTime(server) {
var difficultyMult = server.requiredHackingSkill * server.hackDifficulty;
var skillFactor = (2.5 * difficultyMult + 500) / (Player.hacking_skill + 50);
- var growTime = skillFactor * 16; //This is in seconds
+ var growTime = skillFactor * Player.hacking_speed_mult * 16; //This is in seconds
return growTime * 1000;
}
\ No newline at end of file
From 427b52abc58d767cfbe81556c8aad743693b48a2 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 10:51:55 -0500
Subject: [PATCH 2/9] Removed href=# in index.html
---
index.html | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/index.html b/index.html
index c6bca2e99..13955a22f 100644
--- a/index.html
+++ b/index.html
@@ -66,45 +66,45 @@
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
-
+
-
@@ -174,7 +174,7 @@
Each Hacknet Node you purchase will passively earn you money. Each Hacknet Node can be upgraded
in order to increase its computing power and thereby increase the profit you earn from it.
- Purchase Hacknet Node
+ Purchase Hacknet Node
"
From 17bf2e8ca2fbb35686857f355a84ea658dc1af33 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 10:56:01 -0500
Subject: [PATCH 3/9] Removed more href='#' and added Google Analytics
---
index.html | 265 ++++++++++++++++++++++++++++-------------------------
1 file changed, 138 insertions(+), 127 deletions(-)
diff --git a/index.html b/index.html
index 13955a22f..445e20edd 100644
--- a/index.html
+++ b/index.html
@@ -60,6 +60,17 @@
+
+
@@ -454,7 +465,7 @@
-
Hacking Contracts
+
Hacking Contracts
Complete hacking contracts for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on your hacking skill.
@@ -466,7 +477,7 @@
-
Field Work
+
Field Work
Carry out field missions for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on all of your stats.
@@ -478,7 +489,7 @@
-
Security Work
+
Security Work
Serve in a security detail for your faction.
Your effectiveness, which determines how much reputation you gain for this faction, is based on your combat stats.
@@ -490,7 +501,7 @@
-
Back
+
Back
Faction Augmentations
Lists all augmentations that are available to purchase from
@@ -532,23 +543,23 @@
-
Return to World
+
Return to World
@@ -556,61 +567,61 @@
-
Apply for Software Job
-
Apply for Software Consultant Job
-
Apply for IT Job
-
Apply for Security Engineer Job
-
Apply for Network Engineer Job
-
Apply for Business Job
-
Apply for Business Consultant Job
-
Apply for Security Job
-
Apply to be an Agent
-
Apply to be an Employee
-
Apply to be a Part-time Employee
-
Apply to be a Waiter
-
Apply to be a Part-time Waiter
+
Apply for Software Job
+
Apply for Software Consultant Job
+
Apply for IT Job
+
Apply for Security Engineer Job
+
Apply for Network Engineer Job
+
Apply for Business Job
+
Apply for Business Consultant Job
+
Apply for Security Job
+
Apply to be an Agent
+
Apply to be an Employee
+
Apply to be a Part-time Employee
+
Apply to be a Waiter
+
Apply to be a Part-time Waiter
-
Work
+
Work
-
Train Strength
-
Train Defense
-
Train Dexterity
-
Train Agility
+
Train Strength
+
Train Defense
+
Train Dexterity
+
Train Agility
-
Study Computer Science (free)
-
Take Data Structures course
-
Take Networks course
-
Take Algorithms course
-
Take Management course
-
Take Leadership course
+
Study Computer Science (free)
+
Take Data Structures course
+
Take Networks course
+
Take Algorithms course
+
Take Management course
+
Take Leadership course
-
Purchase 1GB Server - $75,000
-
Purchase 2GB Server - $150,000
-
Purchase 4GB Server - $300,000
-
Purchase 8GB Server - $600,000
-
Purchase 16GB Server - $1,200,000
-
Purchase 32GB Server - $2,400,000
-
Purchase 64GB Server - $4,800,000
-
Purchase 128GB Server - $9,600,000
-
Purchase 256GB Server - $19,200,000
-
Purchase 512GB Server - $38,400,000
-
Purchase 1TB Server - $75,000,000
-
Purchase TOR Router - $100,000
-
Purchase additional RAM for Home computer
+
Purchase 1GB Server - $75,000
+
Purchase 2GB Server - $150,000
+
Purchase 4GB Server - $300,000
+
Purchase 8GB Server - $600,000
+
Purchase 16GB Server - $1,200,000
+
Purchase 32GB Server - $2,400,000
+
Purchase 64GB Server - $4,800,000
+
Purchase 128GB Server - $9,600,000
+
Purchase 256GB Server - $19,200,000
+
Purchase 512GB Server - $38,400,000
+
Purchase 1TB Server - $75,000,000
+
Purchase TOR Router - $100,000
+
Purchase additional RAM for Home computer
From here, you can travel to any other city! A ticket costs $200,000.
-
Travel to Aevum
-
Travel to Chongqing
-
Travel to Sector-12
-
Travel to New Tokyo
-
Travel to Ishima
-
Travel to Volhaven
+
Travel to Aevum
+
Travel to Chongqing
+
Travel to Sector-12
+
Travel to New Tokyo
+
Travel to Ishima
+
Travel to Volhaven
@@ -620,15 +631,15 @@
In the Slums you can commit crimes to earn money and experience. Crime attempts are not always
successful. Your chance at successfully committing a crime is determined by your stats.
-
Shoplift
-
Mug someone
-
Deal Drugs
-
Traffick Illegal Arms
-
Homicide
-
Grand Theft Auto
-
Kidnap and Ransom
-
Assassinate
-
Heist
+
Shoplift
+
Mug someone
+
Deal Drugs
+
Traffick Illegal Arms
+
Homicide
+
Grand Theft Auto
+
Kidnap and Ransom
+
Assassinate
+
Heist
From 0e6036bfae450eaf9172375edb53b67cefa6b3ee Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 11:19:27 -0500
Subject: [PATCH 4/9] Updated version to 1.17.5
---
src/Constants.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Constants.js b/src/Constants.js
index 1aea2d256..e6a291e4b 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -1,5 +1,5 @@
CONSTANTS = {
- Version: "0.17.4",
+ Version: "0.17.5",
//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
From 9cc0a26d0b1fbca1f56efa2567586734d50bf43a Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 11:57:27 -0500
Subject: [PATCH 5/9] Added reject for stopflags in getHostname()
---
src/NetscriptEvaluator.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/NetscriptEvaluator.js b/src/NetscriptEvaluator.js
index 64a2919a5..f4700c823 100644
--- a/src/NetscriptEvaluator.js
+++ b/src/NetscriptEvaluator.js
@@ -763,11 +763,13 @@ function evaluate(exp, workerScript) {
});
} else if (exp.func.value == "getHostname") {
+ if (env.stopFlag) {reject(workerScript); return;}
if (exp.args.length != 0) {
reject(makeRuntimeRejectMsg(workerScript, "getHostname() call has incorrect number of arguments. Takes 0 arguments"));
return;
}
setTimeout(function() {
+ if (env.stopFlag) {reject(workerScript); return;}
var scriptServer = getServer(workerScript.serverIp);
if (scriptServer == null) {
reject(makeRuntimeRejectMsg(workerScript, "Could not find server. This is a bug in the game. Report to game dev"));
From 6a2343ee5812cb28d1226f52103713d94ec84ea1 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 12:13:11 -0500
Subject: [PATCH 6/9] Buffed Company wages across the board
---
src/Company.js | 72 +++++++++++++++++++++++++-------------------------
1 file changed, 36 insertions(+), 36 deletions(-)
diff --git a/src/Company.js b/src/Company.js
index 58f76a256..57f48d807 100644
--- a/src/Company.js
+++ b/src/Company.js
@@ -224,57 +224,57 @@ CompanyPositions = {
//Software
SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 12),
- JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 25),
- SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 32000, 50),
- LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 144000, 150),
+ JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 30),
+ SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 32000, 60),
+ LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 144000, 200),
//TODO Through darkweb, maybe?
FreelanceDeveloper: new CompanyPosition("Freelance Developer", 0, 0, 0, 0, 0, 0, 0, 0),
- SoftwareConsultant: new CompanyPosition("Software Consultant", 51, 0, 0, 0, 0, 0, 0, 16),
- SeniorSoftwareConsultant: new CompanyPosition("Senior Software Consultant", 251, 0, 0, 0, 0, 51, 0, 32),
+ SoftwareConsultant: new CompanyPosition("Software Consultant", 51, 0, 0, 0, 0, 0, 0, 20),
+ SeniorSoftwareConsultant: new CompanyPosition("Senior Software Consultant", 251, 0, 0, 0, 0, 51, 0, 42),
//IT
ITIntern: new CompanyPosition("IT Intern", 1, 0, 0, 0, 0, 0, 0, 10),
- ITAnalyst: new CompanyPosition("IT Analyst", 26, 0, 0, 0, 0, 0, 6000, 20),
- ITManager: new CompanyPosition("IT Manager", 151, 0, 0, 0, 0, 51, 24000, 35),
- SysAdmin: new CompanyPosition("Systems Administrator", 251, 0, 0, 0, 0, 76, 120000, 100),
- SecurityEngineer: new CompanyPosition("Security Engineer", 151, 0, 0, 0, 0, 26, 28000, 38),
- NetworkEngineer: new CompanyPosition("Network Engineer", 151, 0, 0, 0, 0, 26, 28000, 38),
- NetworkAdministrator: new CompanyPosition("Network Administrator", 251, 0, 0, 0, 0, 76, 120000, 100),
+ ITAnalyst: new CompanyPosition("IT Analyst", 26, 0, 0, 0, 0, 0, 6000, 25),
+ ITManager: new CompanyPosition("IT Manager", 151, 0, 0, 0, 0, 51, 24000, 45),
+ SysAdmin: new CompanyPosition("Systems Administrator", 251, 0, 0, 0, 0, 76, 120000, 150),
+ SecurityEngineer: new CompanyPosition("Security Engineer", 151, 0, 0, 0, 0, 26, 28000, 52),
+ NetworkEngineer: new CompanyPosition("Network Engineer", 151, 0, 0, 0, 0, 26, 28000, 52),
+ NetworkAdministrator: new CompanyPosition("Network Administrator", 251, 0, 0, 0, 0, 76, 120000, 150),
//Technology management
- HeadOfSoftware: new CompanyPosition("Head of Software", 501, 0, 0, 0, 0, 251, 288000, 275),
- HeadOfEngineering: new CompanyPosition("Head of Engineering", 501, 0, 0, 0, 0, 251, 576000, 500),
- VicePresident: new CompanyPosition("Vice President of Technology", 601, 0, 0, 0, 0, 401, 1152000, 750),
- CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 4608000, 900),
+ HeadOfSoftware: new CompanyPosition("Head of Software", 501, 0, 0, 0, 0, 251, 288000, 300),
+ HeadOfEngineering: new CompanyPosition("Head of Engineering", 501, 0, 0, 0, 0, 251, 576000, 600),
+ VicePresident: new CompanyPosition("Vice President of Technology", 601, 0, 0, 0, 0, 401, 1152000, 900),
+ CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 4608000, 1000),
//Business
- BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 13),
- BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 32),
- BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 32000, 75),
- OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 144000, 220),
- CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 576000, 675),
- CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 4608000, 1100),
+ BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 15),
+ BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 40),
+ BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 32000, 80),
+ OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 144000, 250),
+ CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 576000, 750),
+ CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 4608000, 1400),
- BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 21),
- SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 150),
+ BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 24),
+ SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 160),
//Non-tech/management jobs
- PartTimeWaiter: new CompanyPosition("Part-time Waiter", 0, 0, 0, 0, 0, 0, 0, 7),
- PartTimeEmployee: new CompanyPosition("Part-time Employee", 0, 0, 0, 0, 0, 0, 0, 7),
+ PartTimeWaiter: new CompanyPosition("Part-time Waiter", 0, 0, 0, 0, 0, 0, 0, 8),
+ PartTimeEmployee: new CompanyPosition("Part-time Employee", 0, 0, 0, 0, 0, 0, 0, 8),
- Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 9),
- Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 9),
- PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 28),
- PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 32000, 110),
- SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 16),
- SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 50),
- SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 32000, 100),
- HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 250),
- FieldAgent: new CompanyPosition("Field Agent", 101, 101, 101, 101, 101, 101, 8000, 40),
- SecretAgent: new CompanyPosition("Secret Agent", 201, 251, 251, 251, 251, 32000, 150),
- SpecialOperative: new CompanyPosition("Special Operative", 251, 501, 501, 501, 501, 144000, 375),
+ Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 10),
+ Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 10),
+ PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 32),
+ PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 32000, 160),
+ SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 18),
+ SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 70),
+ SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 32000, 250),
+ HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 500),
+ FieldAgent: new CompanyPosition("Field Agent", 101, 101, 101, 101, 101, 101, 8000, 50),
+ SecretAgent: new CompanyPosition("Secret Agent", 201, 251, 251, 251, 251, 32000, 180),
+ SpecialOperative: new CompanyPosition("Special Operative", 251, 501, 501, 501, 501, 144000, 400),
init: function() {
//Argument order: hack, str, def, dex, agi, cha
From 2569a4819dbf3aeae42716d68a526a454df8a5a8 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 15:34:29 -0500
Subject: [PATCH 7/9] Fixed bug with Hacknet nodes
---
src/HacknetNode.js | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/HacknetNode.js b/src/HacknetNode.js
index 18143696e..4bf7ffb0c 100644
--- a/src/HacknetNode.js
+++ b/src/HacknetNode.js
@@ -78,7 +78,8 @@ HacknetNode.prototype.purchaseLevelUpgrade = function(levels=1) {
Player.loseMoney(cost);
if (this.level + levels >= CONSTANTS.HacknetNodeMaxLevel) {
this.level = CONSTANTS.HacknetNodeMaxLevel;
- return false;
+ this.updateMoneyGainRate();
+ return true;
}
this.level += levels;
this.updateMoneyGainRate();
@@ -99,8 +100,8 @@ HacknetNode.prototype.purchaseRamUpgrade = function() {
var cost = this.calculateRamUpgradeCost();
if (isNaN(cost)) {return false;}
if (cost > Player.money) {return false;}
- Player.loseMoney(cost);
if (this.ram >= CONSTANTS.HacknetNodeMaxRam) {return false;}
+ Player.loseMoney(cost);
this.ram *= 2; //Ram is always doubled
this.updateMoneyGainRate();
return true;
@@ -116,8 +117,8 @@ HacknetNode.prototype.purchaseCoreUpgrade = function() {
var cost = this.calculateCoreUpgradeCost();
if (isNaN(cost)) {return false;}
if (cost > Player.money) {return false;}
- Player.loseMoney(cost);
if (this.numCores >= CONSTANTS.HacknetNodeMaxCores) {return false;}
+ Player.loseMoney(cost);
++this.numCores;
this.updateMoneyGainRate();
return true;
From d5ad17c84b0ae56dd35c3bed7f38a9c7805c3b13 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 15:54:26 -0500
Subject: [PATCH 8/9] Calculating max purchase takes into account max level for
Hacknet Nodes
---
src/HacknetNode.js | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/HacknetNode.js b/src/HacknetNode.js
index 4bf7ffb0c..6cfefb4c7 100644
--- a/src/HacknetNode.js
+++ b/src/HacknetNode.js
@@ -215,20 +215,21 @@ updateHacknetNodesMultiplierButtons = function() {
getMaxNumberLevelUpgrades = function(nodeObj) {
if (nodeObj.calculateLevelUpgradeCost(1) > Player.money) {return 0;}
var min = 1;
- var max = 199;
+ var max = CONSTANTS.HacknetNodeMaxLevel-1;
+ var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level;
while (min <= max) {
var curr = (min + max) / 2 | 0;
- if (curr != 200 &&
+ if (curr != CONSTANTS.HacknetNodeMaxLevel &&
nodeObj.calculateLevelUpgradeCost(curr) < Player.money &&
nodeObj.calculateLevelUpgradeCost(curr+1) > Player.money) {
- return curr;
+ return Math.min(levelsToMax, curr);
} else if (nodeObj.calculateLevelUpgradeCost(curr) > Player.money) {
max = curr - 1;
} else if (nodeObj.calculateLevelUpgradeCost(curr) < Player.money) {
min = curr + 1;
} else {
- return curr;
+ return Math.min(levelsToMax, curr);
}
}
}
From 18f447de0eec13308ab94d88dba18244909e5ae2 Mon Sep 17 00:00:00 2001
From: Daniel Xie
Date: Tue, 30 May 2017 15:59:08 -0500
Subject: [PATCH 9/9] Increased cost multiplier for Hacknet Node upgrades
---
src/Constants.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/Constants.js b/src/Constants.js
index e6a291e4b..d2659c7cf 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -1,5 +1,5 @@
CONSTANTS = {
- Version: "0.17.5",
+ Version: "0.17.6",
//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
@@ -19,10 +19,10 @@ CONSTANTS = {
/* Hacknet Node constants */
HacknetNodeMoneyGainPerLevel: 1.65,
- HacknetNodePurchaseNextMult: 1.33, //Multiplier when purchasing an additional hacknet node
+ HacknetNodePurchaseNextMult: 1.38, //Multiplier when purchasing an additional hacknet node
HacknetNodeUpgradeLevelMult: 1.04, //Multiplier for cost when upgrading level
- HacknetNodeUpgradeRamMult: 1.22, //Multiplier for cost when upgrading RAM
- HacknetNodeUpgradeCoreMult: 1.45, //Multiplier for cost when buying another core
+ HacknetNodeUpgradeRamMult: 1.24, //Multiplier for cost when upgrading RAM
+ HacknetNodeUpgradeCoreMult: 1.48, //Multiplier for cost when buying another core
HacknetNodeMaxLevel: 200,
HacknetNodeMaxRam: 64,