Merge pull request #156 from danielyxie/dev

Replaced strict equality comparisons for null with loose eq comparisons
This commit is contained in:
danielyxie 2017-10-25 17:08:02 -05:00 committed by GitHub
commit 5cb8c36d22
8 changed files with 109 additions and 80 deletions

76
dist/bundle.js vendored

@ -21805,7 +21805,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log(args.toString()); workerScript.scriptRef.log(args.toString());
}, },
tprint : function(args) { tprint : function(args) {
if (args === undefined || args === null) { if (args === undefined || args == null) {
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument"); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument");
} }
var x = args.toString(); var x = args.toString();
@ -22140,7 +22140,7 @@ function NetscriptFunctions(workerScript) {
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])"); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])");
} }
var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip); var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip); workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip);
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip);
} }
@ -22714,11 +22714,11 @@ function NetscriptFunctions(workerScript) {
} else if (Object(__WEBPACK_IMPORTED_MODULE_28__utils_StringHelperFunctions_js__["f" /* isString */])(port)) { //Write to text file } else if (Object(__WEBPACK_IMPORTED_MODULE_28__utils_StringHelperFunctions_js__["f" /* isString */])(port)) { //Write to text file
var fn = port; var fn = port;
var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(workerScript.serverIp); var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(workerScript.serverIp);
if (server === null) { if (server == null) {
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev"); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev");
} }
var txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["b" /* getTextFile */])(fn, server); var txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["b" /* getTextFile */])(fn, server);
if (txtFile === null) { if (txtFile == null) {
txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["a" /* createTextFile */])(fn, data, server); txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["a" /* createTextFile */])(fn, data, server);
return true; return true;
} }
@ -22751,7 +22751,7 @@ function NetscriptFunctions(workerScript) {
} else if (Object(__WEBPACK_IMPORTED_MODULE_28__utils_StringHelperFunctions_js__["f" /* isString */])(port)) { //Read from text file } else if (Object(__WEBPACK_IMPORTED_MODULE_28__utils_StringHelperFunctions_js__["f" /* isString */])(port)) { //Read from text file
var fn = port; var fn = port;
var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(workerScript.serverIp); var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(workerScript.serverIp);
if (server === null) { if (server == null) {
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev"); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev");
} }
var txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["b" /* getTextFile */])(fn, server); var txtFile = Object(__WEBPACK_IMPORTED_MODULE_20__TextFile_js__["b" /* getTextFile */])(fn, server);
@ -22839,7 +22839,7 @@ function NetscriptFunctions(workerScript) {
} else { } else {
//Get income for a particular script //Get income for a particular script
var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip); var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip); workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
} }
@ -22865,7 +22865,7 @@ function NetscriptFunctions(workerScript) {
} else { } else {
//Get income for a particular script //Get income for a particular script
var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip); var server = Object(__WEBPACK_IMPORTED_MODULE_15__Server_js__["e" /* getServer */])(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip); workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip); throw Object(__WEBPACK_IMPORTED_MODULE_22__NetscriptEvaluator_js__["c" /* makeRuntimeRejectMsg */])(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
} }
@ -23393,7 +23393,7 @@ function NetscriptFunctions(workerScript) {
} }
var company = __WEBPACK_IMPORTED_MODULE_4__Company_js__["a" /* Companies */][companyName]; var company = __WEBPACK_IMPORTED_MODULE_4__Company_js__["a" /* Companies */][companyName];
if (company === null || !(company instanceof __WEBPACK_IMPORTED_MODULE_4__Company_js__["b" /* Company */])) { if (company == null || !(company instanceof __WEBPACK_IMPORTED_MODULE_4__Company_js__["b" /* Company */])) {
workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyRep(): " + companyName); workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyRep(): " + companyName);
return -1; return -1;
} }
@ -23801,7 +23801,7 @@ function NetscriptFunctions(workerScript) {
} }
var fac = __WEBPACK_IMPORTED_MODULE_9__Faction_js__["b" /* Factions */][faction]; var fac = __WEBPACK_IMPORTED_MODULE_9__Faction_js__["b" /* Factions */][faction];
if (fac === null || !(fac instanceof __WEBPACK_IMPORTED_MODULE_9__Faction_js__["a" /* Faction */])) { if (fac == null || !(fac instanceof __WEBPACK_IMPORTED_MODULE_9__Faction_js__["a" /* Faction */])) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction); workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction);
return false; return false;
} }
@ -23812,7 +23812,7 @@ function NetscriptFunctions(workerScript) {
} }
var aug = __WEBPACK_IMPORTED_MODULE_1__Augmentations_js__["c" /* Augmentations */][name]; var aug = __WEBPACK_IMPORTED_MODULE_1__Augmentations_js__["c" /* Augmentations */][name];
if (aug === null || !(aug instanceof __WEBPACK_IMPORTED_MODULE_1__Augmentations_js__["a" /* Augmentation */])) { if (aug == null || !(aug instanceof __WEBPACK_IMPORTED_MODULE_1__Augmentations_js__["a" /* Augmentation */])) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid augmentation name: " + name); workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid augmentation name: " + name);
return false; return false;
} }
@ -29389,7 +29389,7 @@ function createActiveScriptsText(workerscript, item) {
function updateActiveScriptsText(workerscript, item, statsEl=null) { function updateActiveScriptsText(workerscript, item, statsEl=null) {
var itemId = item.id var itemId = item.id
var itemTextStats = document.getElementById(itemId + "-stats"); var itemTextStats = document.getElementById(itemId + "-stats");
if (itemTextStats === null || itemTextStats === undefined) { if (itemTextStats == null || itemTextStats === undefined) {
itemTextStats = statsEl; itemTextStats = statsEl;
} }
@ -35020,7 +35020,7 @@ function placeOrder(stock, shares, price, type, position, workerScript=null) {
} }
return false; return false;
} }
if (StockMarket["Orders"] === null) { if (StockMarket["Orders"] == null) {
var orders = {}; var orders = {};
for (var name in StockMarket) { for (var name in StockMarket) {
if (StockMarket.hasOwnProperty(name)) { if (StockMarket.hasOwnProperty(name)) {
@ -35041,7 +35041,7 @@ function placeOrder(stock, shares, price, type, position, workerScript=null) {
//Returns true if successfully cancels an order, false otherwise //Returns true if successfully cancels an order, false otherwise
function cancelOrder(params, workerScript=null) { function cancelOrder(params, workerScript=null) {
var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]); var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]);
if (StockMarket["Orders"] === null) {return false;} if (StockMarket["Orders"] == null) {return false;}
if (params.order && params.order instanceof Order) { if (params.order && params.order instanceof Order) {
var order = params.order; var order = params.order;
//An 'Order' object is passed in //An 'Order' object is passed in
@ -35424,7 +35424,7 @@ function sellStock(stock, shares) {
//Returns true if successful and false otherwise //Returns true if successful and false otherwise
function shortStock(stock, shares, workerScript=null) { function shortStock(stock, shares, workerScript=null) {
var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]); var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]);
if (stock === null || isNaN(shares) || shares < 0) { if (stock == null || isNaN(shares) || shares < 0) {
if (tixApi) { if (tixApi) {
workerScript.scriptRef.log("ERROR: shortStock() failed because of invalid arguments."); workerScript.scriptRef.log("ERROR: shortStock() failed because of invalid arguments.");
} else { } else {
@ -35473,7 +35473,7 @@ function shortStock(stock, shares, workerScript=null) {
//Returns true if successful and false otherwise //Returns true if successful and false otherwise
function sellShort(stock, shares, workerScript=null) { function sellShort(stock, shares, workerScript=null) {
var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]); var tixApi = (workerScript instanceof __WEBPACK_IMPORTED_MODULE_4__NetscriptWorker_js__["b" /* WorkerScript */]);
if (stock === null || isNaN(shares) || shares < 0) { if (stock == null || isNaN(shares) || shares < 0) {
if (tixApi) { if (tixApi) {
workerScript.scriptRef.log("ERROR: sellShort() failed because of invalid arguments."); workerScript.scriptRef.log("ERROR: sellShort() failed because of invalid arguments.");
} else { } else {
@ -35575,7 +35575,7 @@ function updateStockPrices() {
//Checks and triggers any orders for the specified stock //Checks and triggers any orders for the specified stock
function processOrders(stock, orderType, posType) { function processOrders(stock, orderType, posType) {
var orderBook = StockMarket["Orders"]; var orderBook = StockMarket["Orders"];
if (orderBook === null) { if (orderBook == null) {
var orders = {}; var orders = {};
for (var name in StockMarket) { for (var name in StockMarket) {
if (StockMarket.hasOwnProperty(name)) { if (StockMarket.hasOwnProperty(name)) {
@ -35588,7 +35588,7 @@ function processOrders(stock, orderType, posType) {
return; //Newly created, so no orders to process return; //Newly created, so no orders to process
} }
var stockOrders = orderBook[stock.symbol]; var stockOrders = orderBook[stock.symbol];
if (stockOrders === null || !(stockOrders.constructor === Array)) { if (stockOrders == null || !(stockOrders.constructor === Array)) {
console.log("ERROR: Invalid Order book for " + stock.symbol + " in processOrders()"); console.log("ERROR: Invalid Order book for " + stock.symbol + " in processOrders()");
stockOrders = []; stockOrders = [];
return; return;
@ -35931,7 +35931,7 @@ function createStockTicker(stock) {
function setStockTickerClickHandlers() { function setStockTickerClickHandlers() {
var stockList = document.getElementById("stock-market-list"); var stockList = document.getElementById("stock-market-list");
var tickerHdrs = stockList.getElementsByClassName("accordion-header"); var tickerHdrs = stockList.getElementsByClassName("accordion-header");
if (tickerHdrs === null) { if (tickerHdrs == null) {
console.log("ERROR: Could not find header elements for stock tickers"); console.log("ERROR: Could not find header elements for stock tickers");
return; return;
} }
@ -35960,7 +35960,7 @@ function updateStockTicker(stock, increase) {
var tickerId = "stock-market-ticker-" + stock.symbol; var tickerId = "stock-market-ticker-" + stock.symbol;
var hdr = document.getElementById(tickerId + "-hdr"); var hdr = document.getElementById(tickerId + "-hdr");
if (hdr === null) { if (hdr == null) {
console.log("ERROR: Couldn't find ticker element for stock: " + stock.symbol); console.log("ERROR: Couldn't find ticker element for stock: " + stock.symbol);
return; return;
} }
@ -35985,7 +35985,7 @@ function updateStockPlayerPosition(stock) {
if (!(stock.posTxtEl instanceof Element)) { if (!(stock.posTxtEl instanceof Element)) {
stock.posTxtEl = document.getElementById(tickerId + "-position-text"); stock.posTxtEl = document.getElementById(tickerId + "-position-text");
} }
if (stock.posTxtEl === null) { if (stock.posTxtEl == null) {
console.log("ERROR: Could not find stock position element for: " + stock.symbol); console.log("ERROR: Could not find stock position element for: " + stock.symbol);
return; return;
} }
@ -37321,7 +37321,7 @@ HackingMission.prototype.createNodeDomElement = function(nodeObj) {
} }
HackingMission.prototype.updateNodeDomElement = function(nodeObj) { HackingMission.prototype.updateNodeDomElement = function(nodeObj) {
if (nodeObj.el === null) { if (nodeObj.el == null) {
console.log("ERR: Calling updateNodeDomElement on a Node without an element"); console.log("ERR: Calling updateNodeDomElement on a Node without an element");
return; return;
} }
@ -37393,7 +37393,7 @@ HackingMission.prototype.getNodeFromElement = function(el) {
function selectNode(hackMissionInst, el) { function selectNode(hackMissionInst, el) {
var nodeObj = hackMissionInst.getNodeFromElement(el); var nodeObj = hackMissionInst.getNodeFromElement(el);
if (nodeObj === null) {console.log("Error getting Node object");} if (nodeObj == null) {console.log("Error getting Node object");}
if (!nodeObj.plyrCtrl) {return;} if (!nodeObj.plyrCtrl) {return;}
if (hackMissionInst.selectedNode instanceof Node) { if (hackMissionInst.selectedNode instanceof Node) {
@ -37409,7 +37409,7 @@ function selectNode(hackMissionInst, el) {
//Note: Does NOT change its css class. This is handled by Node.setControlledBy... //Note: Does NOT change its css class. This is handled by Node.setControlledBy...
HackingMission.prototype.configurePlayerNodeElement = function(el) { HackingMission.prototype.configurePlayerNodeElement = function(el) {
var nodeObj = this.getNodeFromElement(el); var nodeObj = this.getNodeFromElement(el);
if (nodeObj === null) {console.log("Error getting Node object");} if (nodeObj == null) {console.log("Error getting Node object");}
//Add event listener //Add event listener
var self = this; var self = this;
@ -37445,7 +37445,7 @@ HackingMission.prototype.nodeReachable = function(node) {
} }
HackingMission.prototype.nodeReachableByEnemy = function(node) { HackingMission.prototype.nodeReachableByEnemy = function(node) {
if (node === null) {return false;} if (node == null) {return false;}
var x = node.pos[0], y = node.pos[1]; var x = node.pos[0], y = node.pos[1];
if (x > 0 && this.map[x-1][y].enmyCtrl) {return true;} if (x > 0 && this.map[x-1][y].enmyCtrl) {return true;}
if (x < 7 && this.map[x+1][y].enmyCtrl) {return true;} if (x < 7 && this.map[x+1][y].enmyCtrl) {return true;}
@ -37650,7 +37650,7 @@ HackingMission.prototype.process = function(numCycles=1) {
//Returns a bool representing whether defenses need to be re-calculated //Returns a bool representing whether defenses need to be re-calculated
HackingMission.prototype.processNode = function(nodeObj, numCycles=1) { HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
if (nodeObj.action === null) { if (nodeObj.action == null) {
return; return;
} }
@ -37680,18 +37680,18 @@ HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
var enmyHacking = this.difficulty * __WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].HackingMissionDifficultyToHacking; var enmyHacking = this.difficulty * __WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].HackingMissionDifficultyToHacking;
switch(nodeObj.action) { switch(nodeObj.action) {
case NodeActions.Attack: case NodeActions.Attack:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var dmg = this.calculateAttackDamage(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking); var dmg = this.calculateAttackDamage(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking);
targetNode.hp -= (dmg/5 * numCycles); targetNode.hp -= (dmg/5 * numCycles);
break; break;
case NodeActions.Scan: case NodeActions.Scan:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var eff = this.calculateScanEffect(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking); var eff = this.calculateScanEffect(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking);
targetNode.def -= (eff/5 * numCycles); targetNode.def -= (eff/5 * numCycles);
calcStats = true; calcStats = true;
break; break;
case NodeActions.Weaken: case NodeActions.Weaken:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var eff = this.calculateWeakenEffect(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking); var eff = this.calculateWeakenEffect(atk, def, plyr ? __WEBPACK_IMPORTED_MODULE_3__Player_js__["a" /* Player */].hacking_skill : enmyHacking);
targetNode.atk -= (eff/5 * numCycles); targetNode.atk -= (eff/5 * numCycles);
calcStats = true; calcStats = true;
@ -37852,13 +37852,13 @@ HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
//Enemy "AI" for CPU Core and Transfer Nodes //Enemy "AI" for CPU Core and Transfer Nodes
HackingMission.prototype.enemyAISelectAction = function(nodeObj) { HackingMission.prototype.enemyAISelectAction = function(nodeObj) {
if (nodeObj === null) {return;} if (nodeObj == null) {return;}
switch(nodeObj.type) { switch(nodeObj.type) {
case NodeTypes.Core: case NodeTypes.Core:
//Select a single RANDOM target from miscNodes and player's Nodes //Select a single RANDOM target from miscNodes and player's Nodes
//If it is reachable, it will target it. If not, no target will //If it is reachable, it will target it. If not, no target will
//be selected for now, and the next time process() gets called this will repeat //be selected for now, and the next time process() gets called this will repeat
if (nodeObj.conn === null) { if (nodeObj.conn == null) {
if (this.miscNodes.length === 0) { if (this.miscNodes.length === 0) {
//Randomly pick a player node and attack it if its reachable //Randomly pick a player node and attack it if its reachable
var rand = Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["d" /* getRandomInt */])(0, this.playerNodes.length-1); var rand = Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["d" /* getRandomInt */])(0, this.playerNodes.length-1);
@ -37916,7 +37916,7 @@ HackingMission.prototype.enemyAISelectAction = function(nodeObj) {
} else { } else {
targetNode = this.getNodeFromElement(nodeObj.conn.targetId); targetNode = this.getNodeFromElement(nodeObj.conn.targetId);
} }
if (targetNode === null) { if (targetNode == null) {
console.log("Error getting Target node Object in enemyAISelectAction()"); console.log("Error getting Target node Object in enemyAISelectAction()");
} }
@ -38386,7 +38386,7 @@ GangMember.prototype.assignToTask = function(taskName) {
//Gains are per cycle //Gains are per cycle
GangMember.prototype.calculateRespectGain = function() { GangMember.prototype.calculateRespectGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -38403,7 +38403,7 @@ GangMember.prototype.calculateRespectGain = function() {
GangMember.prototype.calculateWantedLevelGain = function() { GangMember.prototype.calculateWantedLevelGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -38423,7 +38423,7 @@ GangMember.prototype.calculateWantedLevelGain = function() {
GangMember.prototype.calculateMoneyGain = function() { GangMember.prototype.calculateMoneyGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -38440,7 +38440,7 @@ GangMember.prototype.calculateMoneyGain = function() {
GangMember.prototype.gainExperience = function(numCycles=1) { GangMember.prototype.gainExperience = function(numCycles=1) {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask)) {return;} if (task == null || !(task instanceof GangMemberTask)) {return;}
this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles; this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles;
this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles; this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles;
this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles; this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles;
@ -39140,7 +39140,7 @@ function updateGangContent() {
var repCost = Math.pow(__WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].GangRecruitCostMultiplier, numMembers); var repCost = Math.pow(__WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].GangRecruitCostMultiplier, numMembers);
} }
var faction = __WEBPACK_IMPORTED_MODULE_2__Faction_js__["b" /* Factions */][__WEBPACK_IMPORTED_MODULE_4__Player_js__["a" /* Player */].gang.facName]; var faction = __WEBPACK_IMPORTED_MODULE_2__Faction_js__["b" /* Factions */][__WEBPACK_IMPORTED_MODULE_4__Player_js__["a" /* Player */].gang.facName];
if (faction === null) { if (faction == null) {
Object(__WEBPACK_IMPORTED_MODULE_5__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Could not find your gang's faction. This is probably a bug please report to dev"); Object(__WEBPACK_IMPORTED_MODULE_5__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Could not find your gang's faction. This is probably a bug please report to dev");
return; return;
} }
@ -92806,7 +92806,7 @@ BitburnerSaveObject.prototype.saveGame = function(db) {
} }
function loadGame(saveString) { function loadGame(saveString) {
if (saveString === "" || saveString === null || saveString === undefined) { if (saveString === "" || saveString == null || saveString === undefined) {
if (!window.localStorage.getItem("bitburnerSave")) { if (!window.localStorage.getItem("bitburnerSave")) {
console.log("No save file to load"); console.log("No save file to load");
return false; return false;
@ -92875,7 +92875,7 @@ function loadGame(saveString) {
if (saveObj.hasOwnProperty("VersionSave")) { if (saveObj.hasOwnProperty("VersionSave")) {
try { try {
var ver = JSON.parse(saveObj.VersionSave, __WEBPACK_IMPORTED_MODULE_17__utils_JSONReviver_js__["c" /* Reviver */]); var ver = JSON.parse(saveObj.VersionSave, __WEBPACK_IMPORTED_MODULE_17__utils_JSONReviver_js__["c" /* Reviver */]);
if (__WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].bitNodeN === null || __WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].bitNodeN === 0) { if (__WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].bitNodeN == null || __WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].bitNodeN === 0) {
__WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].setBitNodeNumber(1); __WEBPACK_IMPORTED_MODULE_8__Player_js__["a" /* Player */].setBitNodeNumber(1);
} }
if (ver.startsWith("0.27.") || ver.startsWith("0.28.")) { if (ver.startsWith("0.27.") || ver.startsWith("0.28.")) {

@ -251,7 +251,7 @@ function createActiveScriptsText(workerscript, item) {
function updateActiveScriptsText(workerscript, item, statsEl=null) { function updateActiveScriptsText(workerscript, item, statsEl=null) {
var itemId = item.id var itemId = item.id
var itemTextStats = document.getElementById(itemId + "-stats"); var itemTextStats = document.getElementById(itemId + "-stats");
if (itemTextStats === null || itemTextStats === undefined) { if (itemTextStats == null || itemTextStats === undefined) {
itemTextStats = statsEl; itemTextStats = statsEl;
} }

@ -140,12 +140,17 @@ Industries:
Employees: Employees:
Has morale, happiness, and energy that must be managed to maintain productivity Has morale, happiness, and energy that must be managed to maintain productivity
Has a city property
Stats: Stats:
Age, Intelligence, Charisma, Experience, Creativity, Efficiency Age, Intelligence, Charisma, Experience, Creativity, Efficiency
Assigned to different positions. The productivity at each position is determined by Assigned to different positions. The productivity at each position is determined by
stats. I.e. each employe should be assigned to positions based on stats to optimize production stats. I.e. each employe should be assigned to positions based on stats to optimize production
Hiring Employees:
When you choose to hire employees you are given a randomly generated list of employees to hire
They will demand a certain salary and maybe stock shares
Employee Position Employee Position
Operations - Operations -
Engineer - Engineer -
@ -166,12 +171,36 @@ Industries:
Earnings Per Share(EPS): Net Income (Profit) / Number of Oustanding Shares Earnings Per Share(EPS): Net Income (Profit) / Number of Oustanding Shares
Price to Earnings: P/E Ratio = Price per Share / EPS Price to Earnings: P/E Ratio = Price per Share / EPS
Awareness: Awareness: A number indicating how many people are aware of your company
Popularity: A number indicating how many people like your company
Warehouse Space: How many materials it can stock Warehouse Space: How many materials it can stock
Office Space:
Costs $/s in upkeep
You can open one office space in each city
Size - increased by upgrades, increases max # employees in the city
However if your # employees is near the max this affects employee happiness
Comfort - Increased by upgrades, affects employees in that office
Beauty - Increased by upgrades, affects employees in that office
Tiers of Office Space:
Basic
Enhanced
Luxurious
Extravagant
Upgrades
Things that increase comfort/beauty. Some may cost upkeep and some might not
Office Space - Increases max employees Company Upgrades:
- However if # employees is near the max, then employee happiness decreases Can upgrade Warehouse Space and Office Space
Can throw 'events' (company picnic, outing, party, etc.) for one time expenses and temporary boosts
Advertising, Increases Company Awareness and Popularity
Investors Investors
When you start a company you have 1 billion shares (subject to change)
Four rounds of investing: Seed, Series A, Series B, Series C
In each round, you can give up certain shares to receive money
These are optional
You can choose to go public at any time, at which point your stock price
will fluctuate based on company performance. Then you can sell whatever
shares you have left on the stock market.
*/ */

@ -347,7 +347,7 @@ GangMember.prototype.assignToTask = function(taskName) {
//Gains are per cycle //Gains are per cycle
GangMember.prototype.calculateRespectGain = function() { GangMember.prototype.calculateRespectGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -364,7 +364,7 @@ GangMember.prototype.calculateRespectGain = function() {
GangMember.prototype.calculateWantedLevelGain = function() { GangMember.prototype.calculateWantedLevelGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -384,7 +384,7 @@ GangMember.prototype.calculateWantedLevelGain = function() {
GangMember.prototype.calculateMoneyGain = function() { GangMember.prototype.calculateMoneyGain = function() {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;} if (task == null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;}
var statWeight = (task.hackWeight/100) * this.hack + var statWeight = (task.hackWeight/100) * this.hack +
(task.strWeight/100) * this.str + (task.strWeight/100) * this.str +
(task.defWeight/100) * this.def + (task.defWeight/100) * this.def +
@ -401,7 +401,7 @@ GangMember.prototype.calculateMoneyGain = function() {
GangMember.prototype.gainExperience = function(numCycles=1) { GangMember.prototype.gainExperience = function(numCycles=1) {
var task = this.task; var task = this.task;
if (task === null || !(task instanceof GangMemberTask)) {return;} if (task == null || !(task instanceof GangMemberTask)) {return;}
this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles; this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles;
this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles; this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles;
this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles; this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles;
@ -1101,7 +1101,7 @@ function updateGangContent() {
var repCost = Math.pow(CONSTANTS.GangRecruitCostMultiplier, numMembers); var repCost = Math.pow(CONSTANTS.GangRecruitCostMultiplier, numMembers);
} }
var faction = Factions[Player.gang.facName]; var faction = Factions[Player.gang.facName];
if (faction === null) { if (faction == null) {
dialogBoxCreate("Could not find your gang's faction. This is probably a bug please report to dev"); dialogBoxCreate("Could not find your gang's faction. This is probably a bug please report to dev");
return; return;
} }

@ -736,7 +736,7 @@ HackingMission.prototype.createNodeDomElement = function(nodeObj) {
} }
HackingMission.prototype.updateNodeDomElement = function(nodeObj) { HackingMission.prototype.updateNodeDomElement = function(nodeObj) {
if (nodeObj.el === null) { if (nodeObj.el == null) {
console.log("ERR: Calling updateNodeDomElement on a Node without an element"); console.log("ERR: Calling updateNodeDomElement on a Node without an element");
return; return;
} }
@ -808,7 +808,7 @@ HackingMission.prototype.getNodeFromElement = function(el) {
function selectNode(hackMissionInst, el) { function selectNode(hackMissionInst, el) {
var nodeObj = hackMissionInst.getNodeFromElement(el); var nodeObj = hackMissionInst.getNodeFromElement(el);
if (nodeObj === null) {console.log("Error getting Node object");} if (nodeObj == null) {console.log("Error getting Node object");}
if (!nodeObj.plyrCtrl) {return;} if (!nodeObj.plyrCtrl) {return;}
if (hackMissionInst.selectedNode instanceof Node) { if (hackMissionInst.selectedNode instanceof Node) {
@ -824,7 +824,7 @@ function selectNode(hackMissionInst, el) {
//Note: Does NOT change its css class. This is handled by Node.setControlledBy... //Note: Does NOT change its css class. This is handled by Node.setControlledBy...
HackingMission.prototype.configurePlayerNodeElement = function(el) { HackingMission.prototype.configurePlayerNodeElement = function(el) {
var nodeObj = this.getNodeFromElement(el); var nodeObj = this.getNodeFromElement(el);
if (nodeObj === null) {console.log("Error getting Node object");} if (nodeObj == null) {console.log("Error getting Node object");}
//Add event listener //Add event listener
var self = this; var self = this;
@ -860,7 +860,7 @@ HackingMission.prototype.nodeReachable = function(node) {
} }
HackingMission.prototype.nodeReachableByEnemy = function(node) { HackingMission.prototype.nodeReachableByEnemy = function(node) {
if (node === null) {return false;} if (node == null) {return false;}
var x = node.pos[0], y = node.pos[1]; var x = node.pos[0], y = node.pos[1];
if (x > 0 && this.map[x-1][y].enmyCtrl) {return true;} if (x > 0 && this.map[x-1][y].enmyCtrl) {return true;}
if (x < 7 && this.map[x+1][y].enmyCtrl) {return true;} if (x < 7 && this.map[x+1][y].enmyCtrl) {return true;}
@ -1065,7 +1065,7 @@ HackingMission.prototype.process = function(numCycles=1) {
//Returns a bool representing whether defenses need to be re-calculated //Returns a bool representing whether defenses need to be re-calculated
HackingMission.prototype.processNode = function(nodeObj, numCycles=1) { HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
if (nodeObj.action === null) { if (nodeObj.action == null) {
return; return;
} }
@ -1095,18 +1095,18 @@ HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
var enmyHacking = this.difficulty * CONSTANTS.HackingMissionDifficultyToHacking; var enmyHacking = this.difficulty * CONSTANTS.HackingMissionDifficultyToHacking;
switch(nodeObj.action) { switch(nodeObj.action) {
case NodeActions.Attack: case NodeActions.Attack:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var dmg = this.calculateAttackDamage(atk, def, plyr ? Player.hacking_skill : enmyHacking); var dmg = this.calculateAttackDamage(atk, def, plyr ? Player.hacking_skill : enmyHacking);
targetNode.hp -= (dmg/5 * numCycles); targetNode.hp -= (dmg/5 * numCycles);
break; break;
case NodeActions.Scan: case NodeActions.Scan:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var eff = this.calculateScanEffect(atk, def, plyr ? Player.hacking_skill : enmyHacking); var eff = this.calculateScanEffect(atk, def, plyr ? Player.hacking_skill : enmyHacking);
targetNode.def -= (eff/5 * numCycles); targetNode.def -= (eff/5 * numCycles);
calcStats = true; calcStats = true;
break; break;
case NodeActions.Weaken: case NodeActions.Weaken:
if (nodeObj.conn === null) {break;} if (nodeObj.conn == null) {break;}
var eff = this.calculateWeakenEffect(atk, def, plyr ? Player.hacking_skill : enmyHacking); var eff = this.calculateWeakenEffect(atk, def, plyr ? Player.hacking_skill : enmyHacking);
targetNode.atk -= (eff/5 * numCycles); targetNode.atk -= (eff/5 * numCycles);
calcStats = true; calcStats = true;
@ -1267,13 +1267,13 @@ HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
//Enemy "AI" for CPU Core and Transfer Nodes //Enemy "AI" for CPU Core and Transfer Nodes
HackingMission.prototype.enemyAISelectAction = function(nodeObj) { HackingMission.prototype.enemyAISelectAction = function(nodeObj) {
if (nodeObj === null) {return;} if (nodeObj == null) {return;}
switch(nodeObj.type) { switch(nodeObj.type) {
case NodeTypes.Core: case NodeTypes.Core:
//Select a single RANDOM target from miscNodes and player's Nodes //Select a single RANDOM target from miscNodes and player's Nodes
//If it is reachable, it will target it. If not, no target will //If it is reachable, it will target it. If not, no target will
//be selected for now, and the next time process() gets called this will repeat //be selected for now, and the next time process() gets called this will repeat
if (nodeObj.conn === null) { if (nodeObj.conn == null) {
if (this.miscNodes.length === 0) { if (this.miscNodes.length === 0) {
//Randomly pick a player node and attack it if its reachable //Randomly pick a player node and attack it if its reachable
var rand = getRandomInt(0, this.playerNodes.length-1); var rand = getRandomInt(0, this.playerNodes.length-1);
@ -1331,7 +1331,7 @@ HackingMission.prototype.enemyAISelectAction = function(nodeObj) {
} else { } else {
targetNode = this.getNodeFromElement(nodeObj.conn.targetId); targetNode = this.getNodeFromElement(nodeObj.conn.targetId);
} }
if (targetNode === null) { if (targetNode == null) {
console.log("Error getting Target node Object in enemyAISelectAction()"); console.log("Error getting Target node Object in enemyAISelectAction()");
} }

@ -267,7 +267,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log(args.toString()); workerScript.scriptRef.log(args.toString());
}, },
tprint : function(args) { tprint : function(args) {
if (args === undefined || args === null) { if (args === undefined || args == null) {
throw makeRuntimeRejectMsg(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument"); throw makeRuntimeRejectMsg(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument");
} }
var x = args.toString(); var x = args.toString();
@ -602,7 +602,7 @@ function NetscriptFunctions(workerScript) {
throw makeRuntimeRejectMsg(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])"); throw makeRuntimeRejectMsg(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])");
} }
var server = getServer(ip); var server = getServer(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip); workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip);
throw makeRuntimeRejectMsg(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip); throw makeRuntimeRejectMsg(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip);
} }
@ -1176,11 +1176,11 @@ function NetscriptFunctions(workerScript) {
} else if (isString(port)) { //Write to text file } else if (isString(port)) { //Write to text file
var fn = port; var fn = port;
var server = getServer(workerScript.serverIp); var server = getServer(workerScript.serverIp);
if (server === null) { if (server == null) {
throw makeRuntimeRejectMsg(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev"); throw makeRuntimeRejectMsg(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev");
} }
var txtFile = getTextFile(fn, server); var txtFile = getTextFile(fn, server);
if (txtFile === null) { if (txtFile == null) {
txtFile = createTextFile(fn, data, server); txtFile = createTextFile(fn, data, server);
return true; return true;
} }
@ -1213,7 +1213,7 @@ function NetscriptFunctions(workerScript) {
} else if (isString(port)) { //Read from text file } else if (isString(port)) { //Read from text file
var fn = port; var fn = port;
var server = getServer(workerScript.serverIp); var server = getServer(workerScript.serverIp);
if (server === null) { if (server == null) {
throw makeRuntimeRejectMsg(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev"); throw makeRuntimeRejectMsg(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev");
} }
var txtFile = getTextFile(fn, server); var txtFile = getTextFile(fn, server);
@ -1301,7 +1301,7 @@ function NetscriptFunctions(workerScript) {
} else { } else {
//Get income for a particular script //Get income for a particular script
var server = getServer(ip); var server = getServer(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip); workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
throw makeRuntimeRejectMsg(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip); throw makeRuntimeRejectMsg(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
} }
@ -1327,7 +1327,7 @@ function NetscriptFunctions(workerScript) {
} else { } else {
//Get income for a particular script //Get income for a particular script
var server = getServer(ip); var server = getServer(ip);
if (server === null) { if (server == null) {
workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip); workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
throw makeRuntimeRejectMsg(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip); throw makeRuntimeRejectMsg(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
} }
@ -1855,7 +1855,7 @@ function NetscriptFunctions(workerScript) {
} }
var company = Companies[companyName]; var company = Companies[companyName];
if (company === null || !(company instanceof Company)) { if (company == null || !(company instanceof Company)) {
workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyRep(): " + companyName); workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyRep(): " + companyName);
return -1; return -1;
} }
@ -2263,7 +2263,7 @@ function NetscriptFunctions(workerScript) {
} }
var fac = Factions[faction]; var fac = Factions[faction];
if (fac === null || !(fac instanceof Faction)) { if (fac == null || !(fac instanceof Faction)) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction); workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction);
return false; return false;
} }
@ -2274,7 +2274,7 @@ function NetscriptFunctions(workerScript) {
} }
var aug = Augmentations[name]; var aug = Augmentations[name];
if (aug === null || !(aug instanceof Augmentation)) { if (aug == null || !(aug instanceof Augmentation)) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid augmentation name: " + name); workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid augmentation name: " + name);
return false; return false;
} }

@ -103,7 +103,7 @@ BitburnerSaveObject.prototype.saveGame = function(db) {
} }
function loadGame(saveString) { function loadGame(saveString) {
if (saveString === "" || saveString === null || saveString === undefined) { if (saveString === "" || saveString == null || saveString === undefined) {
if (!window.localStorage.getItem("bitburnerSave")) { if (!window.localStorage.getItem("bitburnerSave")) {
console.log("No save file to load"); console.log("No save file to load");
return false; return false;
@ -172,7 +172,7 @@ function loadGame(saveString) {
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 (Player.bitNodeN === null || Player.bitNodeN === 0) { if (Player.bitNodeN == null || Player.bitNodeN === 0) {
Player.setBitNodeNumber(1); Player.setBitNodeNumber(1);
} }
if (ver.startsWith("0.27.") || ver.startsWith("0.28.")) { if (ver.startsWith("0.27.") || ver.startsWith("0.28.")) {

@ -67,7 +67,7 @@ function placeOrder(stock, shares, price, type, position, workerScript=null) {
} }
return false; return false;
} }
if (StockMarket["Orders"] === null) { if (StockMarket["Orders"] == null) {
var orders = {}; var orders = {};
for (var name in StockMarket) { for (var name in StockMarket) {
if (StockMarket.hasOwnProperty(name)) { if (StockMarket.hasOwnProperty(name)) {
@ -88,7 +88,7 @@ function placeOrder(stock, shares, price, type, position, workerScript=null) {
//Returns true if successfully cancels an order, false otherwise //Returns true if successfully cancels an order, false otherwise
function cancelOrder(params, workerScript=null) { function cancelOrder(params, workerScript=null) {
var tixApi = (workerScript instanceof WorkerScript); var tixApi = (workerScript instanceof WorkerScript);
if (StockMarket["Orders"] === null) {return false;} if (StockMarket["Orders"] == null) {return false;}
if (params.order && params.order instanceof Order) { if (params.order && params.order instanceof Order) {
var order = params.order; var order = params.order;
//An 'Order' object is passed in //An 'Order' object is passed in
@ -471,7 +471,7 @@ function sellStock(stock, shares) {
//Returns true if successful and false otherwise //Returns true if successful and false otherwise
function shortStock(stock, shares, workerScript=null) { function shortStock(stock, shares, workerScript=null) {
var tixApi = (workerScript instanceof WorkerScript); var tixApi = (workerScript instanceof WorkerScript);
if (stock === null || isNaN(shares) || shares < 0) { if (stock == null || isNaN(shares) || shares < 0) {
if (tixApi) { if (tixApi) {
workerScript.scriptRef.log("ERROR: shortStock() failed because of invalid arguments."); workerScript.scriptRef.log("ERROR: shortStock() failed because of invalid arguments.");
} else { } else {
@ -520,7 +520,7 @@ function shortStock(stock, shares, workerScript=null) {
//Returns true if successful and false otherwise //Returns true if successful and false otherwise
function sellShort(stock, shares, workerScript=null) { function sellShort(stock, shares, workerScript=null) {
var tixApi = (workerScript instanceof WorkerScript); var tixApi = (workerScript instanceof WorkerScript);
if (stock === null || isNaN(shares) || shares < 0) { if (stock == null || isNaN(shares) || shares < 0) {
if (tixApi) { if (tixApi) {
workerScript.scriptRef.log("ERROR: sellShort() failed because of invalid arguments."); workerScript.scriptRef.log("ERROR: sellShort() failed because of invalid arguments.");
} else { } else {
@ -622,7 +622,7 @@ function updateStockPrices() {
//Checks and triggers any orders for the specified stock //Checks and triggers any orders for the specified stock
function processOrders(stock, orderType, posType) { function processOrders(stock, orderType, posType) {
var orderBook = StockMarket["Orders"]; var orderBook = StockMarket["Orders"];
if (orderBook === null) { if (orderBook == null) {
var orders = {}; var orders = {};
for (var name in StockMarket) { for (var name in StockMarket) {
if (StockMarket.hasOwnProperty(name)) { if (StockMarket.hasOwnProperty(name)) {
@ -635,7 +635,7 @@ function processOrders(stock, orderType, posType) {
return; //Newly created, so no orders to process return; //Newly created, so no orders to process
} }
var stockOrders = orderBook[stock.symbol]; var stockOrders = orderBook[stock.symbol];
if (stockOrders === null || !(stockOrders.constructor === Array)) { if (stockOrders == null || !(stockOrders.constructor === Array)) {
console.log("ERROR: Invalid Order book for " + stock.symbol + " in processOrders()"); console.log("ERROR: Invalid Order book for " + stock.symbol + " in processOrders()");
stockOrders = []; stockOrders = [];
return; return;
@ -978,7 +978,7 @@ function createStockTicker(stock) {
function setStockTickerClickHandlers() { function setStockTickerClickHandlers() {
var stockList = document.getElementById("stock-market-list"); var stockList = document.getElementById("stock-market-list");
var tickerHdrs = stockList.getElementsByClassName("accordion-header"); var tickerHdrs = stockList.getElementsByClassName("accordion-header");
if (tickerHdrs === null) { if (tickerHdrs == null) {
console.log("ERROR: Could not find header elements for stock tickers"); console.log("ERROR: Could not find header elements for stock tickers");
return; return;
} }
@ -1007,7 +1007,7 @@ function updateStockTicker(stock, increase) {
var tickerId = "stock-market-ticker-" + stock.symbol; var tickerId = "stock-market-ticker-" + stock.symbol;
var hdr = document.getElementById(tickerId + "-hdr"); var hdr = document.getElementById(tickerId + "-hdr");
if (hdr === null) { if (hdr == null) {
console.log("ERROR: Couldn't find ticker element for stock: " + stock.symbol); console.log("ERROR: Couldn't find ticker element for stock: " + stock.symbol);
return; return;
} }
@ -1032,7 +1032,7 @@ function updateStockPlayerPosition(stock) {
if (!(stock.posTxtEl instanceof Element)) { if (!(stock.posTxtEl instanceof Element)) {
stock.posTxtEl = document.getElementById(tickerId + "-position-text"); stock.posTxtEl = document.getElementById(tickerId + "-position-text");
} }
if (stock.posTxtEl === null) { if (stock.posTxtEl == null) {
console.log("ERROR: Could not find stock position element for: " + stock.symbol); console.log("ERROR: Could not find stock position element for: " + stock.symbol);
return; return;
} }