mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-19 06:03:50 +01:00
Decimal.js support for player's money. Buffed early game servers.
This commit is contained in:
parent
e5322e466b
commit
53d514d28e
@ -462,6 +462,10 @@ div.faction-clear {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#augmentations-list li p {
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
.installed-augmentation {
|
.installed-augmentation {
|
||||||
/* TODO */
|
/* TODO */
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
<script src="utils/GameOptions.js"></script>
|
<script src="utils/GameOptions.js"></script>
|
||||||
<script src="utils/LogBox.js"></script>
|
<script src="utils/LogBox.js"></script>
|
||||||
<script src="utils/InfiltrationBox.js"></script>
|
<script src="utils/InfiltrationBox.js"></script>
|
||||||
|
<script src="utils/decimal.js"></script>
|
||||||
|
|
||||||
<!-- Netscript -->
|
<!-- Netscript -->
|
||||||
<script src="src/NetscriptWorker.js"></script>
|
<script src="src/NetscriptWorker.js"></script>
|
||||||
|
@ -105,7 +105,7 @@ function getJobRequirementText(company, pos, tooltiptext=false) {
|
|||||||
reqText += (reqDexterity.toString() + " dexterity<br>");
|
reqText += (reqDexterity.toString() + " dexterity<br>");
|
||||||
reqText += (reqAgility.toString() + " agility<br>");
|
reqText += (reqAgility.toString() + " agility<br>");
|
||||||
reqText += (reqCharisma.toString() + " charisma<br>");
|
reqText += (reqCharisma.toString() + " charisma<br>");
|
||||||
reqText += (reqRep.toString() + " and reputation");
|
reqText += (reqRep.toString() + " reputation");
|
||||||
} else {
|
} else {
|
||||||
reqText = "(Requires ";
|
reqText = "(Requires ";
|
||||||
if (reqHacking > 0) {reqText += (reqHacking + " hacking, ");}
|
if (reqHacking > 0) {reqText += (reqHacking + " hacking, ");}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
CONSTANTS = {
|
CONSTANTS = {
|
||||||
Version: "0.26.2",
|
Version: "0.26.3",
|
||||||
|
|
||||||
//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
|
||||||
@ -11,7 +11,7 @@ CONSTANTS = {
|
|||||||
|
|
||||||
/* Base costs */
|
/* Base costs */
|
||||||
BaseCostFor1GBOfRamHome: 30000,
|
BaseCostFor1GBOfRamHome: 30000,
|
||||||
BaseCostFor1GBOfRamServer: 60000, //1 GB of RAM
|
BaseCostFor1GBOfRamServer: 55000, //1 GB of RAM
|
||||||
BaseCostFor1GBOfRamHacknetNode: 30000,
|
BaseCostFor1GBOfRamHacknetNode: 30000,
|
||||||
|
|
||||||
BaseCostForHacknetNode: 1000,
|
BaseCostForHacknetNode: 1000,
|
||||||
@ -678,6 +678,11 @@ CONSTANTS = {
|
|||||||
"World Stock Exchange account and TIX API Access<br>",
|
"World Stock Exchange account and TIX API Access<br>",
|
||||||
|
|
||||||
LatestUpdate:
|
LatestUpdate:
|
||||||
|
"v0.26.3<br>" +
|
||||||
|
"-Added support for large numbers using Decimal.js. Right now it only applies for the player's money<br>" +
|
||||||
|
"-Purchasing servers with the Netscript function purchaseServer() is no longer 2x as expensive as doing manually, " +
|
||||||
|
"it now costs the same<br>" +
|
||||||
|
"-Early game servers have more starting money<br>" +
|
||||||
"v0.26.2<br>" +
|
"v0.26.2<br>" +
|
||||||
"-Major rebalancing and randomization of the amount of money that servers start with<br>" +
|
"-Major rebalancing and randomization of the amount of money that servers start with<br>" +
|
||||||
"-Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than " +
|
"-Significantly lowered hacking exp gain from hacking servers. The exp gain for higher-level servers was lowered more than " +
|
||||||
|
@ -79,7 +79,7 @@ listAllDarkwebItems = function() {
|
|||||||
buyDarkwebItem = function(itemName) {
|
buyDarkwebItem = function(itemName) {
|
||||||
if (itemName.toLowerCase() == Programs.BruteSSHProgram.toLowerCase()) {
|
if (itemName.toLowerCase() == Programs.BruteSSHProgram.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
|
var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.BruteSSHProgram);
|
Player.getHomeComputer().programs.push(Programs.BruteSSHProgram);
|
||||||
post("You have purchased the BruteSSH.exe program. The new program " +
|
post("You have purchased the BruteSSH.exe program. The new program " +
|
||||||
@ -89,7 +89,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.FTPCrackProgram.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.FTPCrackProgram.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
|
var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.FTPCrackProgram);
|
Player.getHomeComputer().programs.push(Programs.FTPCrackProgram);
|
||||||
post("You have purchased the FTPCrack.exe program. The new program " +
|
post("You have purchased the FTPCrack.exe program. The new program " +
|
||||||
@ -99,7 +99,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.RelaySMTPProgram.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.RelaySMTPProgram.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
|
var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.RelaySMTPProgram);
|
Player.getHomeComputer().programs.push(Programs.RelaySMTPProgram);
|
||||||
post("You have purchased the relaySMTP.exe program. The new program " +
|
post("You have purchased the relaySMTP.exe program. The new program " +
|
||||||
@ -109,7 +109,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.HTTPWormProgram.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.HTTPWormProgram.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
|
var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.HTTPWormProgram);
|
Player.getHomeComputer().programs.push(Programs.HTTPWormProgram);
|
||||||
post("You have purchased the HTTPWorm.exe program. The new program " +
|
post("You have purchased the HTTPWorm.exe program. The new program " +
|
||||||
@ -119,7 +119,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.SQLInjectProgram.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.SQLInjectProgram.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
|
var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.SQLInjectProgram);
|
Player.getHomeComputer().programs.push(Programs.SQLInjectProgram);
|
||||||
post("You have purchased the SQLInject.exe program. The new program " +
|
post("You have purchased the SQLInject.exe program. The new program " +
|
||||||
@ -129,7 +129,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.DeepscanV1.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.DeepscanV1.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV1Program);
|
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV1Program);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV1);
|
Player.getHomeComputer().programs.push(Programs.DeepscanV1);
|
||||||
post("You have purchased the DeepscanV1.exe program. The new program " +
|
post("You have purchased the DeepscanV1.exe program. The new program " +
|
||||||
@ -139,7 +139,7 @@ buyDarkwebItem = function(itemName) {
|
|||||||
}
|
}
|
||||||
} else if (itemName.toLowerCase() == Programs.DeepscanV2.toLowerCase()) {
|
} else if (itemName.toLowerCase() == Programs.DeepscanV2.toLowerCase()) {
|
||||||
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV2Program);
|
var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV2Program);
|
||||||
if (price > 0 && Player.money >= price) {
|
if (price > 0 && Player.money.gt(price)) {
|
||||||
Player.loseMoney(price);
|
Player.loseMoney(price);
|
||||||
Player.getHomeComputer().programs.push(Programs.DeepscanV2);
|
Player.getHomeComputer().programs.push(Programs.DeepscanV2);
|
||||||
post("You have purchased the DeepscanV2.exe program. The new program " +
|
post("You have purchased the DeepscanV2.exe program. The new program " +
|
||||||
|
@ -350,7 +350,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
var illuminatiFac = Factions["Illuminati"];
|
var illuminatiFac = Factions["Illuminati"];
|
||||||
if (!illuminatiFac.isBanned && !illuminatiFac.isMember && !illuminatiFac.alreadyInvited &&
|
if (!illuminatiFac.isBanned && !illuminatiFac.isMember && !illuminatiFac.alreadyInvited &&
|
||||||
numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 150000000000 &&
|
this.money.gte(150000000000) &&
|
||||||
this.hacking_skill >= 1500 &&
|
this.hacking_skill >= 1500 &&
|
||||||
this.strength >= 1200 && this.defense >= 1200 &&
|
this.strength >= 1200 && this.defense >= 1200 &&
|
||||||
this.dexterity >= 1200 && this.agility >= 1200) {
|
this.dexterity >= 1200 && this.agility >= 1200) {
|
||||||
@ -361,7 +361,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
var daedalusFac = Factions["Daedalus"];
|
var daedalusFac = Factions["Daedalus"];
|
||||||
if (!daedalusFac.isBanned && !daedalusFac.isMember && !daedalusFac.alreadyInvited &&
|
if (!daedalusFac.isBanned && !daedalusFac.isMember && !daedalusFac.alreadyInvited &&
|
||||||
numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 100000000000 &&
|
this.money.gte(100000000000) &&
|
||||||
(this.hacking_skill >= 2500 ||
|
(this.hacking_skill >= 2500 ||
|
||||||
(this.strength >= 1500 && this.defense >= 1500 &&
|
(this.strength >= 1500 && this.defense >= 1500 &&
|
||||||
this.dexterity >= 1500 && this.agility >= 1500))) {
|
this.dexterity >= 1500 && this.agility >= 1500))) {
|
||||||
@ -372,7 +372,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
var covenantFac = Factions["The Covenant"];
|
var covenantFac = Factions["The Covenant"];
|
||||||
if (!covenantFac.isBanned && !covenantFac.isMember && !covenantFac.alreadyInvited &&
|
if (!covenantFac.isBanned && !covenantFac.isMember && !covenantFac.alreadyInvited &&
|
||||||
numAugmentations >= 30 &&
|
numAugmentations >= 30 &&
|
||||||
this.money >= 75000000000 &&
|
this.money.gte(75000000000) &&
|
||||||
this.hacking_skill >= 850 &&
|
this.hacking_skill >= 850 &&
|
||||||
this.strength >= 850 &&
|
this.strength >= 850 &&
|
||||||
this.defense >= 850 &&
|
this.defense >= 850 &&
|
||||||
@ -494,42 +494,42 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
//Chongqing
|
//Chongqing
|
||||||
var chongqingFac = Factions["Chongqing"];
|
var chongqingFac = Factions["Chongqing"];
|
||||||
if (!chongqingFac.isBanned && !chongqingFac.isMember && !chongqingFac.alreadyInvited &&
|
if (!chongqingFac.isBanned && !chongqingFac.isMember && !chongqingFac.alreadyInvited &&
|
||||||
this.money >= 20000000 && this.city == Locations.Chongqing) {
|
this.money.gte(20000000) && this.city == Locations.Chongqing) {
|
||||||
invitedFactions.push(chongqingFac);
|
invitedFactions.push(chongqingFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sector-12
|
//Sector-12
|
||||||
var sector12Fac = Factions["Sector-12"];
|
var sector12Fac = Factions["Sector-12"];
|
||||||
if (!sector12Fac.isBanned && !sector12Fac.isMember && !sector12Fac.alreadyInvited &&
|
if (!sector12Fac.isBanned && !sector12Fac.isMember && !sector12Fac.alreadyInvited &&
|
||||||
this.money >= 15000000 && this.city == Locations.Sector12) {
|
this.money.gte(15000000) && this.city == Locations.Sector12) {
|
||||||
invitedFactions.push(sector12Fac);
|
invitedFactions.push(sector12Fac);
|
||||||
}
|
}
|
||||||
|
|
||||||
//New Tokyo
|
//New Tokyo
|
||||||
var newtokyoFac = Factions["New Tokyo"];
|
var newtokyoFac = Factions["New Tokyo"];
|
||||||
if (!newtokyoFac.isBanned && !newtokyoFac.isMember && !newtokyoFac.alreadyInvited &&
|
if (!newtokyoFac.isBanned && !newtokyoFac.isMember && !newtokyoFac.alreadyInvited &&
|
||||||
this.money >= 20000000 && this.city == Locations.NewTokyo) {
|
this.money.gte(20000000) && this.city == Locations.NewTokyo) {
|
||||||
invitedFactions.push(newtokyoFac);
|
invitedFactions.push(newtokyoFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Aevum
|
//Aevum
|
||||||
var aevumFac = Factions["Aevum"];
|
var aevumFac = Factions["Aevum"];
|
||||||
if (!aevumFac.isBanned && !aevumFac.isMember && !aevumFac.alreadyInvited &&
|
if (!aevumFac.isBanned && !aevumFac.isMember && !aevumFac.alreadyInvited &&
|
||||||
this.money >= 40000000 && this.city == Locations.Aevum) {
|
this.money.gte(40000000) && this.city == Locations.Aevum) {
|
||||||
invitedFactions.push(aevumFac);
|
invitedFactions.push(aevumFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ishima
|
//Ishima
|
||||||
var ishimaFac = Factions["Ishima"];
|
var ishimaFac = Factions["Ishima"];
|
||||||
if (!ishimaFac.isBanned && !ishimaFac.isMember && !ishimaFac.alreadyInvited &&
|
if (!ishimaFac.isBanned && !ishimaFac.isMember && !ishimaFac.alreadyInvited &&
|
||||||
this.money >= 30000000 && this.city == Locations.Ishima) {
|
this.money.gte(30000000) && this.city == Locations.Ishima) {
|
||||||
invitedFactions.push(ishimaFac);
|
invitedFactions.push(ishimaFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Volhaven
|
//Volhaven
|
||||||
var volhavenFac = Factions["Volhaven"];
|
var volhavenFac = Factions["Volhaven"];
|
||||||
if (!volhavenFac.isBanned && !volhavenFac.isMember && !volhavenFac.alreadyInvited &&
|
if (!volhavenFac.isBanned && !volhavenFac.isMember && !volhavenFac.alreadyInvited &&
|
||||||
this.money >= 50000000 && this.city == Locations.Volhaven) {
|
this.money.gte(50000000) && this.city == Locations.Volhaven) {
|
||||||
invitedFactions.push(volhavenFac);
|
invitedFactions.push(volhavenFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,7 +559,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
this.hacking_skill >= 200 && this.strength >= 200 && this.defense >= 200 &&
|
this.hacking_skill >= 200 && this.strength >= 200 && this.defense >= 200 &&
|
||||||
this.dexterity >= 200 && this.agility >= 200 &&
|
this.dexterity >= 200 && this.agility >= 200 &&
|
||||||
(this.city == Locations.Aevum || this.city == Locations.Sector12) &&
|
(this.city == Locations.Aevum || this.city == Locations.Sector12) &&
|
||||||
this.money >= 10000000 && this.karma <= -90 &&
|
this.money.gte(10000000) && this.karma <= -90 &&
|
||||||
this.companyName != Locations.Sector12CIA && this.companyName != Locations.Sector12NSA) {
|
this.companyName != Locations.Sector12CIA && this.companyName != Locations.Sector12NSA) {
|
||||||
invitedFactions.push(thesyndicateFac);
|
invitedFactions.push(thesyndicateFac);
|
||||||
}
|
}
|
||||||
@ -570,7 +570,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
(this.companyPosition.positionName == CompanyPositions.CTO.positionName ||
|
(this.companyPosition.positionName == CompanyPositions.CTO.positionName ||
|
||||||
this.companyPosition.positionName == CompanyPositions.CFO.positionName ||
|
this.companyPosition.positionName == CompanyPositions.CFO.positionName ||
|
||||||
this.companyPosition.positionName == CompanyPositions.CEO.positionName) &&
|
this.companyPosition.positionName == CompanyPositions.CEO.positionName) &&
|
||||||
this.money >= 15000000 && this.karma <= -22) {
|
this.money.gte(15000000) && this.karma <= -22) {
|
||||||
invitedFactions.push(silhouetteFac);
|
invitedFactions.push(silhouetteFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,7 +587,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
var slumsnakesFac = Factions["Slum Snakes"];
|
var slumsnakesFac = Factions["Slum Snakes"];
|
||||||
if (!slumsnakesFac.isBanned && !slumsnakesFac.isMember && !slumsnakesFac.alreadyInvited &&
|
if (!slumsnakesFac.isBanned && !slumsnakesFac.isMember && !slumsnakesFac.alreadyInvited &&
|
||||||
this.strength >= 30 && this.defense >= 30 && this.dexterity >= 30 &&
|
this.strength >= 30 && this.defense >= 30 && this.dexterity >= 30 &&
|
||||||
this.agility >= 30 && this.karma <= -9 && this.money >= 1000000) {
|
this.agility >= 30 && this.karma <= -9 && this.money.gte(1000000)) {
|
||||||
invitedFactions.push(slumsnakesFac);
|
invitedFactions.push(slumsnakesFac);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,7 +610,7 @@ PlayerObject.prototype.checkForFactionInvitations = function() {
|
|||||||
//Tian Di Hui
|
//Tian Di Hui
|
||||||
var tiandihuiFac = Factions["Tian Di Hui"];
|
var tiandihuiFac = Factions["Tian Di Hui"];
|
||||||
if (!tiandihuiFac.isBanned && !tiandihuiFac.isMember && !tiandihuiFac.alreadyInvited &&
|
if (!tiandihuiFac.isBanned && !tiandihuiFac.isMember && !tiandihuiFac.alreadyInvited &&
|
||||||
this.money >= 1000000 && this.hacking_skill >= 50 &&
|
this.money.gte(1000000) && this.hacking_skill >= 50 &&
|
||||||
(this.city == Locations.Chongqing || this.city == Locations.NewTokyo ||
|
(this.city == Locations.Chongqing || this.city == Locations.NewTokyo ||
|
||||||
this.city == Locations.Ishima)) {
|
this.city == Locations.Ishima)) {
|
||||||
invitedFactions.push(tiandihuiFac);
|
invitedFactions.push(tiandihuiFac);
|
||||||
@ -759,7 +759,7 @@ displayFactionContent = function(factionName) {
|
|||||||
var donateAmountVal = document.getElementById("faction-donate-input").value;
|
var donateAmountVal = document.getElementById("faction-donate-input").value;
|
||||||
if (isPositiveNumber(donateAmountVal)) {
|
if (isPositiveNumber(donateAmountVal)) {
|
||||||
var numMoneyDonate = Number(donateAmountVal);
|
var numMoneyDonate = Number(donateAmountVal);
|
||||||
if (Player.money < numMoneyDonate) {
|
if (Player.money.lt(numMoneyDonate)) {
|
||||||
dialogBoxCreate("You cannot afford to donate this much money!");
|
dialogBoxCreate("You cannot afford to donate this much money!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ HacknetNode.prototype.purchaseLevelUpgrade = function(levels=1) {
|
|||||||
var diff = Math.max(0, CONSTANTS.HacknetNodeMaxLevel - this.level);
|
var diff = Math.max(0, CONSTANTS.HacknetNodeMaxLevel - this.level);
|
||||||
return this.purchaseLevelUpgrade(diff);
|
return this.purchaseLevelUpgrade(diff);
|
||||||
}
|
}
|
||||||
if (cost > Player.money) {return false;}
|
if (Player.money.lt(cost)) {return false;}
|
||||||
Player.loseMoney(cost);
|
Player.loseMoney(cost);
|
||||||
this.level += levels;
|
this.level += levels;
|
||||||
this.updateMoneyGainRate();
|
this.updateMoneyGainRate();
|
||||||
@ -113,7 +113,7 @@ HacknetNode.prototype.getRamUpgradeCost = function() {
|
|||||||
HacknetNode.prototype.purchaseRamUpgrade = function() {
|
HacknetNode.prototype.purchaseRamUpgrade = function() {
|
||||||
var cost = this.calculateRamUpgradeCost();
|
var cost = this.calculateRamUpgradeCost();
|
||||||
if (isNaN(cost)) {return false;}
|
if (isNaN(cost)) {return false;}
|
||||||
if (cost > Player.money) {return false;}
|
if (Player.money.lt(cost)) {return false;}
|
||||||
if (this.ram >= CONSTANTS.HacknetNodeMaxRam) {return false;}
|
if (this.ram >= CONSTANTS.HacknetNodeMaxRam) {return false;}
|
||||||
Player.loseMoney(cost);
|
Player.loseMoney(cost);
|
||||||
this.ram *= 2; //Ram is always doubled
|
this.ram *= 2; //Ram is always doubled
|
||||||
@ -140,7 +140,7 @@ HacknetNode.prototype.getCoreUpgradeCost = function() {
|
|||||||
HacknetNode.prototype.purchaseCoreUpgrade = function() {
|
HacknetNode.prototype.purchaseCoreUpgrade = function() {
|
||||||
var cost = this.calculateCoreUpgradeCost();
|
var cost = this.calculateCoreUpgradeCost();
|
||||||
if (isNaN(cost)) {return false;}
|
if (isNaN(cost)) {return false;}
|
||||||
if (cost > Player.money) {return false;}
|
if (Player.money.lt(cost)) {return false;}
|
||||||
if (this.cores >= CONSTANTS.HacknetNodeMaxCores) {return false;}
|
if (this.cores >= CONSTANTS.HacknetNodeMaxCores) {return false;}
|
||||||
Player.loseMoney(cost);
|
Player.loseMoney(cost);
|
||||||
++this.cores;
|
++this.cores;
|
||||||
@ -179,7 +179,7 @@ purchaseHacknet = function() {
|
|||||||
|
|
||||||
var cost = getCostOfNextHacknetNode();
|
var cost = getCostOfNextHacknetNode();
|
||||||
if (isNaN(cost)) {throw new Error("Cost is NaN"); return;}
|
if (isNaN(cost)) {throw new Error("Cost is NaN"); return;}
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
//dialogBoxCreate("You cannot afford to purchase a Hacknet Node!");
|
//dialogBoxCreate("You cannot afford to purchase a Hacknet Node!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -243,23 +243,23 @@ updateHacknetNodesMultiplierButtons = function() {
|
|||||||
//Calculate the maximum number of times the Player can afford to upgrade
|
//Calculate the maximum number of times the Player can afford to upgrade
|
||||||
//a Hacknet Node's level"
|
//a Hacknet Node's level"
|
||||||
getMaxNumberLevelUpgrades = function(nodeObj) {
|
getMaxNumberLevelUpgrades = function(nodeObj) {
|
||||||
if (nodeObj.calculateLevelUpgradeCost(1) > Player.money) {return 0;}
|
if (Player.money.lt(nodeObj.calculateLevelUpgradeCost(1))) {return 0;}
|
||||||
var min = 1;
|
var min = 1;
|
||||||
var max = CONSTANTS.HacknetNodeMaxLevel-1;
|
var max = CONSTANTS.HacknetNodeMaxLevel-1;
|
||||||
var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level;
|
var levelsToMax = CONSTANTS.HacknetNodeMaxLevel - nodeObj.level;
|
||||||
if (nodeObj.calculateLevelUpgradeCost(levelsToMax) < Player.money) {
|
if (Player.money.gt(nodeObj.calculateLevelUpgradeCost(levelsToMax))) {
|
||||||
return levelsToMax;
|
return levelsToMax;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (min <= max) {
|
while (min <= max) {
|
||||||
var curr = (min + max) / 2 | 0;
|
var curr = (min + max) / 2 | 0;
|
||||||
if (curr != CONSTANTS.HacknetNodeMaxLevel &&
|
if (curr != CONSTANTS.HacknetNodeMaxLevel &&
|
||||||
nodeObj.calculateLevelUpgradeCost(curr) < Player.money &&
|
Player.money.gt(nodeObj.calculateLevelUpgradeCost(curr)) &&
|
||||||
nodeObj.calculateLevelUpgradeCost(curr+1) > Player.money) {
|
Player.money.lt(nodeObj.calculateLevelUpgradeCost(curr+1))) {
|
||||||
return Math.min(levelsToMax, curr);
|
return Math.min(levelsToMax, curr);
|
||||||
} else if (nodeObj.calculateLevelUpgradeCost(curr) > Player.money) {
|
} else if (Player.money.lt(nodeObj.calculateLevelUpgradeCost(curr))) {
|
||||||
max = curr - 1;
|
max = curr - 1;
|
||||||
} else if (nodeObj.calculateLevelUpgradeCost(curr) < Player.money) {
|
} else if (Player.money.gt(nodeObj.calculateLevelUpgradeCost(curr))) {
|
||||||
min = curr + 1;
|
min = curr + 1;
|
||||||
} else {
|
} else {
|
||||||
return Math.min(levelsToMax, curr);
|
return Math.min(levelsToMax, curr);
|
||||||
@ -299,7 +299,7 @@ updateHacknetNodesContent = function() {
|
|||||||
var cost = getCostOfNextHacknetNode();
|
var cost = getCostOfNextHacknetNode();
|
||||||
var purchaseButton = document.getElementById("hacknet-nodes-purchase-button");
|
var purchaseButton = document.getElementById("hacknet-nodes-purchase-button");
|
||||||
purchaseButton.innerHTML = "Purchase Hacknet Node - $" + formatNumber(cost, 2);
|
purchaseButton.innerHTML = "Purchase Hacknet Node - $" + formatNumber(cost, 2);
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
purchaseButton.setAttribute("class", "a-link-button-inactive");
|
purchaseButton.setAttribute("class", "a-link-button-inactive");
|
||||||
} else {
|
} else {
|
||||||
purchaseButton.setAttribute("class", "a-link-button");
|
purchaseButton.setAttribute("class", "a-link-button");
|
||||||
@ -307,7 +307,7 @@ updateHacknetNodesContent = function() {
|
|||||||
|
|
||||||
//Update player's money
|
//Update player's money
|
||||||
var moneyElem = document.getElementById("hacknet-nodes-money");
|
var moneyElem = document.getElementById("hacknet-nodes-money");
|
||||||
moneyElem.innerHTML = "Money: $" + formatNumber(Player.money, 2) + "<br>" +
|
moneyElem.innerHTML = "Money: $" + formatNumber(Player.money.toNumber(), 2) + "<br>" +
|
||||||
"Total production from all Hacknet Nodes: $" + formatNumber(Player.totalHacknetNodeProduction, 2) + " / second";
|
"Total production from all Hacknet Nodes: $" + formatNumber(Player.totalHacknetNodeProduction, 2) + " / second";
|
||||||
|
|
||||||
//Update information in each owned hacknet node
|
//Update information in each owned hacknet node
|
||||||
@ -413,7 +413,7 @@ updateHacknetNodeDomElement = function(nodeObj) {
|
|||||||
var upgradeLevelCost = nodeObj.calculateLevelUpgradeCost(multiplier);
|
var upgradeLevelCost = nodeObj.calculateLevelUpgradeCost(multiplier);
|
||||||
upgradeLevelButton.innerHTML = "Upgrade Hacknet Node Level x" + multiplier +
|
upgradeLevelButton.innerHTML = "Upgrade Hacknet Node Level x" + multiplier +
|
||||||
" - $" + formatNumber(upgradeLevelCost, 2);
|
" - $" + formatNumber(upgradeLevelCost, 2);
|
||||||
if (upgradeLevelCost > Player.money ) {
|
if (Player.money.lt(upgradeLevelCost)) {
|
||||||
upgradeLevelButton.setAttribute("class", "a-link-button-inactive");
|
upgradeLevelButton.setAttribute("class", "a-link-button-inactive");
|
||||||
} else {
|
} else {
|
||||||
upgradeLevelButton.setAttribute("class", "a-link-button");
|
upgradeLevelButton.setAttribute("class", "a-link-button");
|
||||||
@ -429,7 +429,7 @@ updateHacknetNodeDomElement = function(nodeObj) {
|
|||||||
} else {
|
} else {
|
||||||
var upgradeRamCost = nodeObj.calculateRamUpgradeCost();
|
var upgradeRamCost = nodeObj.calculateRamUpgradeCost();
|
||||||
upgradeRamButton.innerHTML = "Upgrade Hacknet Node RAM -$" + formatNumber(upgradeRamCost, 2);
|
upgradeRamButton.innerHTML = "Upgrade Hacknet Node RAM -$" + formatNumber(upgradeRamCost, 2);
|
||||||
if (upgradeRamCost > Player.money) {
|
if (Player.money.lt(upgradeRamCost)) {
|
||||||
upgradeRamButton.setAttribute("class", "a-link-button-inactive");
|
upgradeRamButton.setAttribute("class", "a-link-button-inactive");
|
||||||
} else {
|
} else {
|
||||||
upgradeRamButton.setAttribute("class", "a-link-button");
|
upgradeRamButton.setAttribute("class", "a-link-button");
|
||||||
@ -445,7 +445,7 @@ updateHacknetNodeDomElement = function(nodeObj) {
|
|||||||
} else {
|
} else {
|
||||||
var upgradeCoreCost = nodeObj.calculateCoreUpgradeCost();
|
var upgradeCoreCost = nodeObj.calculateCoreUpgradeCost();
|
||||||
upgradeCoreButton.innerHTML = "Purchase additional CPU Core - $" + formatNumber(upgradeCoreCost, 2);
|
upgradeCoreButton.innerHTML = "Purchase additional CPU Core - $" + formatNumber(upgradeCoreCost, 2);
|
||||||
if (upgradeCoreCost > Player.money) {
|
if (Player.money.lt(upgradeCoreCost)) {
|
||||||
upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
|
upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
|
||||||
} else {
|
} else {
|
||||||
upgradeCoreButton.setAttribute("class", "a-link-button");
|
upgradeCoreButton.setAttribute("class", "a-link-button");
|
||||||
|
@ -345,7 +345,7 @@ function nextInfiltrationLevel(inst) {
|
|||||||
|
|
||||||
bribeButton.addEventListener("click", function() {
|
bribeButton.addEventListener("click", function() {
|
||||||
var bribeAmt = CONSTANTS.InfiltrationBribeBaseAmount * inst.clearanceLevel;
|
var bribeAmt = CONSTANTS.InfiltrationBribeBaseAmount * inst.clearanceLevel;
|
||||||
if (Player.money < bribeAmt) {
|
if (Player.money.lt(bribeAmt)) {
|
||||||
writeInfiltrationStatusText("You do not have enough money to bribe the guard. " +
|
writeInfiltrationStatusText("You do not have enough money to bribe the guard. " +
|
||||||
"You need $" + bribeAmt);
|
"You need $" + bribeAmt);
|
||||||
return false;
|
return false;
|
||||||
|
@ -988,7 +988,7 @@ displayLocationContent = function() {
|
|||||||
slumsDescText.style.display = "block";
|
slumsDescText.style.display = "block";
|
||||||
slumsShoplift.style.display = "block";
|
slumsShoplift.style.display = "block";
|
||||||
slumsShoplift.innerHTML = "Shoplift (" + (shopliftChance*100).toFixed(3) + "% chance of success)";
|
slumsShoplift.innerHTML = "Shoplift (" + (shopliftChance*100).toFixed(3) + "% chance of success)";
|
||||||
slumsShoplift.innerHTML += '<span class="tooltiptext"> Attempt to shoplift from a low-end retailers </span>';
|
slumsShoplift.innerHTML += '<span class="tooltiptext"> Attempt to shoplift from a low-end retailer </span>';
|
||||||
slumsMug.style.display = "block";
|
slumsMug.style.display = "block";
|
||||||
slumsMug.innerHTML = "Mug someone (" + (mugChance*100).toFixed(3) + "% chance of success)";
|
slumsMug.innerHTML = "Mug someone (" + (mugChance*100).toFixed(3) + "% chance of success)";
|
||||||
slumsMug.innerHTML += '<span class="tooltiptext"> Attempt to mug a random person on the street </span>';
|
slumsMug.innerHTML += '<span class="tooltiptext"> Attempt to mug a random person on the street </span>';
|
||||||
@ -1764,11 +1764,11 @@ initLocationButtons = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
travelToCity = function(destCityName, cost) {
|
travelToCity = function(destCityName, cost) {
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
dialogBoxCreate("You cannot afford to travel to " + destCityName);
|
dialogBoxCreate("You cannot afford to travel to " + destCityName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Player.money -= cost;
|
Player.loseMoney(cost);
|
||||||
|
|
||||||
Player.city = destCityName;
|
Player.city = destCityName;
|
||||||
dialogBoxCreate("You are now in " + destCityName + "!");
|
dialogBoxCreate("You are now in " + destCityName + "!");
|
||||||
@ -1776,7 +1776,7 @@ travelToCity = function(destCityName, cost) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
purchaseTorRouter = function() {
|
purchaseTorRouter = function() {
|
||||||
if (CONSTANTS.TorRouterCost > Player.money) {
|
if (Player.money.lt(CONSTANTS.TorRouterCost)) {
|
||||||
dialogBoxCreate("You cannot afford to purchase the Tor router");
|
dialogBoxCreate("You cannot afford to purchase the Tor router");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -107,8 +107,12 @@ function evaluate(exp, workerScript) {
|
|||||||
if (exp.computed){
|
if (exp.computed){
|
||||||
var p = evaluate(exp.property, workerScript);
|
var p = evaluate(exp.property, workerScript);
|
||||||
p.then(function(index) {
|
p.then(function(index) {
|
||||||
|
if (index >= object.length) {
|
||||||
|
return reject(makeRuntimeRejectMsg(workerScript, "Invalid index for arrays"));
|
||||||
|
}
|
||||||
resolve(object[index]);
|
resolve(object[index]);
|
||||||
}).catch(function(e) {
|
}).catch(function(e) {
|
||||||
|
console.log("here");
|
||||||
reject(makeRuntimeRejectMsg(workerScript, "Invalid MemberExpression"));
|
reject(makeRuntimeRejectMsg(workerScript, "Invalid MemberExpression"));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -647,7 +651,7 @@ function scriptCalculateExpGain(server) {
|
|||||||
if (server.baseDifficulty == null) {
|
if (server.baseDifficulty == null) {
|
||||||
server.baseDifficulty = server.hackDifficulty;
|
server.baseDifficulty = server.hackDifficulty;
|
||||||
}
|
}
|
||||||
return (server.baseDifficulty * Player.hacking_exp_mult * 0.3 + 2);
|
return (server.baseDifficulty * Player.hacking_exp_mult * 0.3 + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
//The same as Player's calculatePercentMoneyHacked() function but takes in the server as an argument
|
//The same as Player's calculatePercentMoneyHacked() function but takes in the server as an argument
|
||||||
|
@ -459,8 +459,8 @@ function NetscriptFunctions(workerScript) {
|
|||||||
}
|
}
|
||||||
if (server.hostname == "home") {
|
if (server.hostname == "home") {
|
||||||
//Return player's money
|
//Return player's money
|
||||||
workerScript.scriptRef.log("getServerMoneyAvailable('home') returned player's money: $" + formatNumber(Player.money, 2));
|
workerScript.scriptRef.log("getServerMoneyAvailable('home') returned player's money: $" + formatNumber(Player.money.toNumber(), 2));
|
||||||
return Player.money;
|
return Player.money.toNumber();
|
||||||
}
|
}
|
||||||
workerScript.scriptRef.log("getServerMoneyAvailable() returned " + formatNumber(server.moneyAvailable, 2) + " for " + server.hostname);
|
workerScript.scriptRef.log("getServerMoneyAvailable() returned " + formatNumber(server.moneyAvailable, 2) + " for " + server.hostname);
|
||||||
return server.moneyAvailable;
|
return server.moneyAvailable;
|
||||||
@ -592,7 +592,7 @@ function NetscriptFunctions(workerScript) {
|
|||||||
shares = Math.round(shares);
|
shares = Math.round(shares);
|
||||||
|
|
||||||
var totalPrice = stock.price * shares;
|
var totalPrice = stock.price * shares;
|
||||||
if (Player.money < totalPrice + CONSTANTS.StockMarketCommission) {
|
if (Player.money.lt(totalPrice + CONSTANTS.StockMarketCommission)) {
|
||||||
workerScript.scriptRef.log("Not enough money to purchase " + formatNumber(shares, 0) + " shares of " +
|
workerScript.scriptRef.log("Not enough money to purchase " + formatNumber(shares, 0) + " shares of " +
|
||||||
symbol + ". Need $" +
|
symbol + ". Need $" +
|
||||||
formatNumber(totalPrice + CONSTANTS.StockMarketCommission, 2).toString());
|
formatNumber(totalPrice + CONSTANTS.StockMarketCommission, 2).toString());
|
||||||
@ -666,8 +666,8 @@ function NetscriptFunctions(workerScript) {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
var cost = 2 * ram * CONSTANTS.BaseCostFor1GBOfRamServer;
|
var cost = ram * CONSTANTS.BaseCostFor1GBOfRamServer;
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
workerScript.scriptRef.log("Error: Not enough money to purchase server. Need $" + formatNumber(cost, 2));
|
workerScript.scriptRef.log("Error: Not enough money to purchase server. Need $" + formatNumber(cost, 2));
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ function runScriptsLoop() {
|
|||||||
if (workerScripts[i].running == false && workerScripts[i].env.stopFlag == false) {
|
if (workerScripts[i].running == false && workerScripts[i].env.stopFlag == false) {
|
||||||
try {
|
try {
|
||||||
var ast = acorn.parse(workerScripts[i].code);
|
var ast = acorn.parse(workerScripts[i].code);
|
||||||
//console.log(ast);
|
console.log(ast);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("Error parsing script: " + workerScripts[i].name);
|
console.log("Error parsing script: " + workerScripts[i].name);
|
||||||
dialogBoxCreate("Syntax ERROR in " + workerScripts[i].name + ":<br>" + e);
|
dialogBoxCreate("Syntax ERROR in " + workerScripts[i].name + ":<br>" + e);
|
||||||
|
@ -62,9 +62,9 @@ function PlayerObject() {
|
|||||||
this.faction_rep_mult = 1;
|
this.faction_rep_mult = 1;
|
||||||
|
|
||||||
//Money
|
//Money
|
||||||
this.money = 1000;
|
this.money = new Decimal(1000);
|
||||||
this.total_money = 0; //Total money ever earned in this "simulation"
|
this.total_money = new Decimal(0); //Total money ever earned in this "simulation"
|
||||||
this.lifetime_money = 0; //Total money ever earned
|
this.lifetime_money = new Decimal(0); //Total money ever earned
|
||||||
|
|
||||||
//IP Address of Starting (home) computer
|
//IP Address of Starting (home) computer
|
||||||
this.homeComputer = "";
|
this.homeComputer = "";
|
||||||
@ -269,7 +269,7 @@ PlayerObject.prototype.calculateExpGain = function() {
|
|||||||
if (s.baseDifficulty == null) {
|
if (s.baseDifficulty == null) {
|
||||||
s.baseDifficulty = s.hackDifficulty;
|
s.baseDifficulty = s.hackDifficulty;
|
||||||
}
|
}
|
||||||
return (s.baseDifficulty * this.hacking_exp_mult * 0.3 + 2);
|
return (s.baseDifficulty * this.hacking_exp_mult * 0.3 + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Hack/Analyze a server. Return the amount of time the hack will take. This lets the Terminal object know how long to disable itself for
|
//Hack/Analyze a server. Return the amount of time the hack will take. This lets the Terminal object know how long to disable itself for
|
||||||
@ -298,16 +298,16 @@ PlayerObject.prototype.gainMoney = function(money) {
|
|||||||
if (isNaN(money)) {
|
if (isNaN(money)) {
|
||||||
console.log("ERR: NaN passed into Player.gainMoney()"); return;
|
console.log("ERR: NaN passed into Player.gainMoney()"); return;
|
||||||
}
|
}
|
||||||
this.money += money;
|
this.money = this.money.plus(money);
|
||||||
this.total_money += money;
|
this.total_money = this.total_money.plus(money);
|
||||||
this.lifetime_money += money;
|
this.lifetime_money = this.lifetime_money.plus(money);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerObject.prototype.loseMoney = function(money) {
|
PlayerObject.prototype.loseMoney = function(money) {
|
||||||
if (isNaN(money)) {
|
if (isNaN(money)) {
|
||||||
console.log("ERR: NaN passed into Player.loseMoney()"); return;
|
console.log("ERR: NaN passed into Player.loseMoney()"); return;
|
||||||
}
|
}
|
||||||
this.money -= money;
|
this.money = this.money.minus(money);
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerObject.prototype.gainHackingExp = function(exp) {
|
PlayerObject.prototype.gainHackingExp = function(exp) {
|
||||||
|
@ -61,7 +61,7 @@ function prestigeAugmentation() {
|
|||||||
Player.agility_exp = 0;
|
Player.agility_exp = 0;
|
||||||
Player.charisma_exp = 0;
|
Player.charisma_exp = 0;
|
||||||
|
|
||||||
Player.money = 1000;
|
Player.money = new Decimal(1000);
|
||||||
|
|
||||||
Player.city = Locations.Sector12;
|
Player.city = Locations.Sector12;
|
||||||
Player.location = "";
|
Player.location = "";
|
||||||
@ -144,7 +144,7 @@ function prestigeAugmentation() {
|
|||||||
}
|
}
|
||||||
if (augmentationExists(AugmentationNames.CashRoot) &&
|
if (augmentationExists(AugmentationNames.CashRoot) &&
|
||||||
Augmentations[AugmentationNames.CashRoot].owned) {
|
Augmentations[AugmentationNames.CashRoot].owned) {
|
||||||
Player.money = 1000000;
|
Player.money = new Decimal(1000000);
|
||||||
homeComp.programs.push(Programs.BruteSSHProgram);
|
homeComp.programs.push(Programs.BruteSSHProgram);
|
||||||
}
|
}
|
||||||
Player.currentServer = homeComp.ip;
|
Player.currentServer = homeComp.ip;
|
||||||
|
@ -112,24 +112,12 @@ loadGame = function(saveObj) {
|
|||||||
if (saveObj.hasOwnProperty("VersionSave")) {
|
if (saveObj.hasOwnProperty("VersionSave")) {
|
||||||
try {
|
try {
|
||||||
var ver = JSON.parse(saveObj.VersionSave, Reviver);
|
var ver = JSON.parse(saveObj.VersionSave, Reviver);
|
||||||
|
if (CONSTANTS.Version == "0.26.3") {
|
||||||
|
Player.money = new Decimal(Player.money);
|
||||||
|
Player.total_money = new Decimal(Player.total_money);
|
||||||
|
Player.lifetime_money = new Decimal(Player.lifetime_money);
|
||||||
|
}
|
||||||
if (ver != CONSTANTS.Version) {
|
if (ver != CONSTANTS.Version) {
|
||||||
if (CONSTANTS.Version == "0.21.0" || CONSTANTS.Version == "0.22.0" ||
|
|
||||||
CONSTANTS.Version == "0.22.1") {
|
|
||||||
dialogBoxCreate("All scripts automatically killed for the sake of compatibility " +
|
|
||||||
"with new version. If the game is still broken, try the following: " +
|
|
||||||
"Options -> Soft Reset -> Save Game -> Reload page. If that STILL " +
|
|
||||||
"doesn't work contact the dev");
|
|
||||||
//This is the big update that might break games. Kill all running scripts
|
|
||||||
for (var ip in AllServers) {
|
|
||||||
if (AllServers.hasOwnProperty(ip)) {
|
|
||||||
AllServers[ip].runningScripts = [];
|
|
||||||
AllServers[ip].runningScripts.length = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (CONSTANTS.Version == "0.23.0") {
|
|
||||||
Augmentations = JSON.parse(saveObj.AugmentationsSave, Reviver);
|
|
||||||
}
|
|
||||||
createNewUpdateText();
|
createNewUpdateText();
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
@ -204,25 +192,12 @@ loadImportedGame = function(saveObj, saveString) {
|
|||||||
if (tempSaveObj.hasOwnProperty("VersionSave")) {
|
if (tempSaveObj.hasOwnProperty("VersionSave")) {
|
||||||
try {
|
try {
|
||||||
var ver = JSON.parse(tempSaveObj.VersionSave, Reviver);
|
var ver = JSON.parse(tempSaveObj.VersionSave, Reviver);
|
||||||
if (ver != CONSTANTS.Version) {
|
if (CONSTANTS.Version == "0.26.3") {
|
||||||
createNewUpdateText();
|
tempPlayer.money = new Decimal(tempPlayer.money);
|
||||||
|
tempPlayer.total_money = new Decimal(tempPlayer.total_money);
|
||||||
|
tempPlayer.lifetime_money = new Decimal(tempPlayer.lifetime_money);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ver != CONSTANTS.Version) {
|
if (ver != CONSTANTS.Version) {
|
||||||
if (CONSTANTS.Version == "0.21.0" || CONSTANTS.Version == "0.22.0" ||
|
|
||||||
CONSTANTS.Version == "0.22.1") {
|
|
||||||
console.log("here");
|
|
||||||
//This is the big update that might break games. Kill all running scripts
|
|
||||||
for (var ip in tempAllServers) {
|
|
||||||
if (tempAllServers.hasOwnProperty(ip)) {
|
|
||||||
tempAllServers[ip].runningScripts = [];
|
|
||||||
tempAllServers[ip].runningScripts.length = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (CONSTANTS.Version == "0.23.0") {
|
|
||||||
tempAugmentations = JSON.parse(saveObj.AugmentationsSave, Reviver);
|
|
||||||
}
|
|
||||||
createNewUpdateText();
|
createNewUpdateText();
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -422,19 +422,19 @@ initForeignServers = function() {
|
|||||||
//"Low level" targets
|
//"Low level" targets
|
||||||
var FoodNStuffServer = new Server();
|
var FoodNStuffServer = new Server();
|
||||||
FoodNStuffServer.init(createRandomIp(), "foodnstuff", "Food N Stuff Supermarket", true, false, false, false, 4);
|
FoodNStuffServer.init(createRandomIp(), "foodnstuff", "Food N Stuff Supermarket", true, false, false, false, 4);
|
||||||
FoodNStuffServer.setHackingParameters(1, 1000000, 10, 5);
|
FoodNStuffServer.setHackingParameters(1, 2000000, 10, 5);
|
||||||
FoodNStuffServer.setPortProperties(0);
|
FoodNStuffServer.setPortProperties(0);
|
||||||
AddToAllServers(FoodNStuffServer);
|
AddToAllServers(FoodNStuffServer);
|
||||||
|
|
||||||
var SigmaCosmeticsServer = new Server();
|
var SigmaCosmeticsServer = new Server();
|
||||||
SigmaCosmeticsServer.init(createRandomIp(), "sigma-cosmetics", "Sigma Cosmetics", true, false, false, false, 4);
|
SigmaCosmeticsServer.init(createRandomIp(), "sigma-cosmetics", "Sigma Cosmetics", true, false, false, false, 4);
|
||||||
SigmaCosmeticsServer.setHackingParameters(5, 1300000, 10, 10);
|
SigmaCosmeticsServer.setHackingParameters(5, 2300000, 10, 10);
|
||||||
SigmaCosmeticsServer.setPortProperties(0);
|
SigmaCosmeticsServer.setPortProperties(0);
|
||||||
AddToAllServers(SigmaCosmeticsServer);
|
AddToAllServers(SigmaCosmeticsServer);
|
||||||
|
|
||||||
var JoesGunsServer = new Server();
|
var JoesGunsServer = new Server();
|
||||||
JoesGunsServer.init(createRandomIp(), "joesguns", "Joe's Guns", true, false, false, false, 4);
|
JoesGunsServer.init(createRandomIp(), "joesguns", "Joe's Guns", true, false, false, false, 4);
|
||||||
JoesGunsServer.setHackingParameters(10, 1750000, 20, 20);
|
JoesGunsServer.setHackingParameters(10, 2500000, 20, 20);
|
||||||
JoesGunsServer.setPortProperties(0);
|
JoesGunsServer.setPortProperties(0);
|
||||||
AddToAllServers(JoesGunsServer);
|
AddToAllServers(JoesGunsServer);
|
||||||
|
|
||||||
@ -446,13 +446,13 @@ initForeignServers = function() {
|
|||||||
|
|
||||||
var NectarNightclubServer = new Server();
|
var NectarNightclubServer = new Server();
|
||||||
NectarNightclubServer.init(createRandomIp(), "nectar-net", "Nectar Nightclub Network", true, false, false, false, 4);
|
NectarNightclubServer.init(createRandomIp(), "nectar-net", "Nectar Nightclub Network", true, false, false, false, 4);
|
||||||
NectarNightclubServer.setHackingParameters(20, 2000000, 20, 25);
|
NectarNightclubServer.setHackingParameters(20, 2750000, 20, 25);
|
||||||
NectarNightclubServer.setPortProperties(0);
|
NectarNightclubServer.setPortProperties(0);
|
||||||
AddToAllServers(NectarNightclubServer);
|
AddToAllServers(NectarNightclubServer);
|
||||||
|
|
||||||
var NeoNightclubServer = new Server();
|
var NeoNightclubServer = new Server();
|
||||||
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 4);
|
NeoNightclubServer.init(createRandomIp(), "neo-net", "Neo Nightclub Network", true, false, false, false, 4);
|
||||||
NeoNightclubServer.setHackingParameters(50, 4500000, 25, 25);
|
NeoNightclubServer.setHackingParameters(50, 5000000, 25, 25);
|
||||||
NeoNightclubServer.setPortProperties(1);
|
NeoNightclubServer.setPortProperties(1);
|
||||||
AddToAllServers(NeoNightclubServer);
|
AddToAllServers(NeoNightclubServer);
|
||||||
|
|
||||||
@ -464,13 +464,13 @@ initForeignServers = function() {
|
|||||||
|
|
||||||
var HongFangTeaHouseServer = new Server();
|
var HongFangTeaHouseServer = new Server();
|
||||||
HongFangTeaHouseServer.init(createRandomIp(), "hong-fang-tea", "HongFang Teahouse", true, false, false, false, 4);
|
HongFangTeaHouseServer.init(createRandomIp(), "hong-fang-tea", "HongFang Teahouse", true, false, false, false, 4);
|
||||||
HongFangTeaHouseServer.setHackingParameters(30, 2500000, 15, 15);
|
HongFangTeaHouseServer.setHackingParameters(30, 3000000, 15, 15);
|
||||||
HongFangTeaHouseServer.setPortProperties(0);
|
HongFangTeaHouseServer.setPortProperties(0);
|
||||||
AddToAllServers(HongFangTeaHouseServer);
|
AddToAllServers(HongFangTeaHouseServer);
|
||||||
|
|
||||||
var HaraKiriSushiBarServer = new Server();
|
var HaraKiriSushiBarServer = new Server();
|
||||||
HaraKiriSushiBarServer.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 4);
|
HaraKiriSushiBarServer.init(createRandomIp(), "harakiri-sushi", "HaraKiri Sushi Bar Network", true, false, false, false, 4);
|
||||||
HaraKiriSushiBarServer.setHackingParameters(40, 3500000, 15, 40);
|
HaraKiriSushiBarServer.setHackingParameters(40, 4000000, 15, 40);
|
||||||
HaraKiriSushiBarServer.setPortProperties(0);
|
HaraKiriSushiBarServer.setPortProperties(0);
|
||||||
AddToAllServers(HaraKiriSushiBarServer);
|
AddToAllServers(HaraKiriSushiBarServer);
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
purchaseServer = function(ram, cost) {
|
purchaseServer = function(ram, cost) {
|
||||||
//Check if player has enough money
|
//Check if player has enough money
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
dialogBoxCreate("You don't have enough money to purchase this server!");
|
dialogBoxCreate("You don't have enough money to purchase this server!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ purchaseServer = function(ram, cost) {
|
|||||||
|
|
||||||
|
|
||||||
purchaseRamForHomeComputer = function(cost) {
|
purchaseRamForHomeComputer = function(cost) {
|
||||||
if (cost > Player.money) {
|
if (Player.money.lt(cost)) {
|
||||||
dialogBoxCreate("You do not have enough money to purchase additional RAM for your home computer");
|
dialogBoxCreate("You do not have enough money to purchase additional RAM for your home computer");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -242,7 +242,7 @@ function buyStock(stock, shares) {
|
|||||||
shares = Math.round(shares);
|
shares = Math.round(shares);
|
||||||
|
|
||||||
var totalPrice = stock.price * shares;
|
var totalPrice = stock.price * shares;
|
||||||
if (Player.money < totalPrice + CONSTANTS.StockMarketCommission) {
|
if (Player.money.lt(totalPrice + CONSTANTS.StockMarketCommission)) {
|
||||||
dialogBoxCreate("You do not have enough money to purchase this. You need $" +
|
dialogBoxCreate("You do not have enough money to purchase this. You need $" +
|
||||||
formatNumber(totalPrice + CONSTANTS.StockMarketCommission, 2).toString() + ".");
|
formatNumber(totalPrice + CONSTANTS.StockMarketCommission, 2).toString() + ".");
|
||||||
return false;
|
return false;
|
||||||
@ -338,7 +338,7 @@ function displayStockMarketContent() {
|
|||||||
//Purchase WSE Account button
|
//Purchase WSE Account button
|
||||||
var wseAccountButton = clearEventListeners("stock-market-buy-account");
|
var wseAccountButton = clearEventListeners("stock-market-buy-account");
|
||||||
wseAccountButton.innerText = "Buy WSE Account - $" + formatNumber(CONSTANTS.WSEAccountCost, 2).toString();
|
wseAccountButton.innerText = "Buy WSE Account - $" + formatNumber(CONSTANTS.WSEAccountCost, 2).toString();
|
||||||
if (!Player.hasWseAccount && Player.money >= CONSTANTS.WSEAccountCost) {
|
if (!Player.hasWseAccount && Player.money.gte(CONSTANTS.WSEAccountCost)) {
|
||||||
wseAccountButton.setAttribute("class", "a-link-button");
|
wseAccountButton.setAttribute("class", "a-link-button");
|
||||||
} else {
|
} else {
|
||||||
wseAccountButton.setAttribute("class", "a-link-button-inactive");
|
wseAccountButton.setAttribute("class", "a-link-button-inactive");
|
||||||
@ -356,7 +356,7 @@ function displayStockMarketContent() {
|
|||||||
var tixApiAccessButton = clearEventListeners("stock-market-buy-tix-api");
|
var tixApiAccessButton = clearEventListeners("stock-market-buy-tix-api");
|
||||||
tixApiAccessButton.innerText = "Buy Trade Information eXchange (TIX) API Access - $" +
|
tixApiAccessButton.innerText = "Buy Trade Information eXchange (TIX) API Access - $" +
|
||||||
formatNumber(CONSTANTS.TIXAPICost, 2).toString();
|
formatNumber(CONSTANTS.TIXAPICost, 2).toString();
|
||||||
if (!Player.hasTixApiAccess && Player.money >= CONSTANTS.TIXAPICost) {
|
if (!Player.hasTixApiAccess && Player.money.gte(CONSTANTS.TIXAPICost)) {
|
||||||
tixApiAccessButton.setAttribute("class", "a-link-button");
|
tixApiAccessButton.setAttribute("class", "a-link-button");
|
||||||
} else {
|
} else {
|
||||||
tixApiAccessButton.setAttribute("class", "a-link-button-inactive");
|
tixApiAccessButton.setAttribute("class", "a-link-button-inactive");
|
||||||
|
@ -1388,7 +1388,7 @@ var Terminal = {
|
|||||||
break;
|
break;
|
||||||
case Programs.Flight:
|
case Programs.Flight:
|
||||||
post("Augmentations: " + Player.augmentations.length + " / 30");
|
post("Augmentations: " + Player.augmentations.length + " / 30");
|
||||||
post("Money: $" + formatNumber(Player.money, 2) + " / $" + formatNumber(100000000000, 2));
|
post("Money: $" + formatNumber(Player.money.toNumber(), 2) + " / $" + formatNumber(100000000000, 2));
|
||||||
post("One path below must be fulfilled...");
|
post("One path below must be fulfilled...");
|
||||||
post("----------HACKING PATH----------");
|
post("----------HACKING PATH----------");
|
||||||
post("Hacking skill: " + Player.hacking_skill + " / 2500");
|
post("Hacking skill: " + Player.hacking_skill + " / 2500");
|
||||||
|
@ -368,7 +368,7 @@ var Engine = {
|
|||||||
if (Player.hp == null) {Player.hp = Player.max_hp;}
|
if (Player.hp == null) {Player.hp = Player.max_hp;}
|
||||||
document.getElementById("character-overview-text").innerHTML =
|
document.getElementById("character-overview-text").innerHTML =
|
||||||
("Hp: " + Player.hp + " / " + Player.max_hp + "<br>" +
|
("Hp: " + Player.hp + " / " + Player.max_hp + "<br>" +
|
||||||
"Money: $" + formatNumber(Player.money, 2) + "<br>" +
|
"Money: $" + formatNumber(Player.money.toNumber(), 2) + "<br>" +
|
||||||
"Hack: " + (Player.hacking_skill).toLocaleString() + "<br>" +
|
"Hack: " + (Player.hacking_skill).toLocaleString() + "<br>" +
|
||||||
"Str: " + (Player.strength).toLocaleString() + "<br>" +
|
"Str: " + (Player.strength).toLocaleString() + "<br>" +
|
||||||
"Def: " + (Player.defense).toLocaleString() + "<br>" +
|
"Def: " + (Player.defense).toLocaleString() + "<br>" +
|
||||||
@ -389,7 +389,7 @@ var Engine = {
|
|||||||
'Current City: ' + Player.city + '<br><br>' +
|
'Current City: ' + Player.city + '<br><br>' +
|
||||||
'Employer: ' + Player.companyName + '<br>' +
|
'Employer: ' + Player.companyName + '<br>' +
|
||||||
'Job Title: ' + companyPosition + '<br><br>' +
|
'Job Title: ' + companyPosition + '<br><br>' +
|
||||||
'Money: $' + formatNumber(Player.money, 2)+ '<br><br><br>' +
|
'Money: $' + formatNumber(Player.money.toNumber(), 2)+ '<br><br><br>' +
|
||||||
'<b>Stats</b><br><br>' +
|
'<b>Stats</b><br><br>' +
|
||||||
'Hacking Level: ' + (Player.hacking_skill).toLocaleString() +
|
'Hacking Level: ' + (Player.hacking_skill).toLocaleString() +
|
||||||
" (" + formatNumber(Player.hacking_exp, 4) + ' experience)<br>' +
|
" (" + formatNumber(Player.hacking_exp, 4) + ' experience)<br>' +
|
||||||
|
@ -78,7 +78,7 @@ purchaseAugmentationBoxCreate = function(aug, fac) {
|
|||||||
} else if (aug.name == AugmentationNames.GrapheneBionicArms &&
|
} else if (aug.name == AugmentationNames.GrapheneBionicArms &&
|
||||||
Augmentations[AugmentationNames.BionicArms].owned == false) {
|
Augmentations[AugmentationNames.BionicArms].owned == false) {
|
||||||
dialogBoxCreate("You must first install the Bionic Arms augmentation before installing this upgrade");
|
dialogBoxCreate("You must first install the Bionic Arms augmentation before installing this upgrade");
|
||||||
} else if (Player.money >= (aug.baseCost * fac.augmentationPriceMult)) {
|
} else if (Player.money.gte(aug.baseCost * fac.augmentationPriceMult)) {
|
||||||
var queuedAugmentation = new PlayerOwnedAugmentation(aug.name);
|
var queuedAugmentation = new PlayerOwnedAugmentation(aug.name);
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
queuedAugmentation.level = getNextNeurofluxLevel();
|
queuedAugmentation.level = getNextNeurofluxLevel();
|
||||||
|
Loading…
Reference in New Issue
Block a user