diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js
index fdbcf55b2..431c9017b 100644
--- a/dist/engine.bundle.js
+++ b/dist/engine.bundle.js
@@ -1902,7 +1902,6 @@ PlayerObject.prototype.applyForJob = function(entryPosType, sing=false) {
}
while (true) {
- console.log("Determining qualification for next Company Position");
let newPos = Object(_Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_5__["getNextCompanyPosition"])(pos);
if (newPos == null) {break;}
@@ -2576,7 +2575,7 @@ PlayerObject.prototype.gainCodingContractReward = function(reward, difficulty=1)
break;
case _CodingContracts__WEBPACK_IMPORTED_MODULE_2__["CodingContractRewardType"].Money:
default:
- var moneyGain = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].CodingContractBaseMoneyGain * difficulty;
+ var moneyGain = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].CodingContractBaseMoneyGain * difficulty * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CodingContractMoney;
this.gainMoney(moneyGain);
return `Gained ${_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_23__[/* numeralWrapper */ "a"].format(moneyGain, '$0.000a')}`;
break;
@@ -3103,6 +3102,10 @@ exports.CONSTANTS = {
* Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions
* Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files
+ * Bug Fix: Coding Contracts no longer give money in BitNode-8
+ * Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed
+ * Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions
+ * Bug Fix: 'Return to World' button at locations no longer accumulates event listeners
`
};
@@ -4595,7 +4598,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/uiHelpers/removeLoadingScreen */ 107);
/* harmony import */ var _utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
@@ -6630,6 +6633,7 @@ exports.BitNodeMultipliers = {
HacknetNodeMoney: 1,
ManualHackMoney: 1,
ScriptHackMoney: 1,
+ CodingContractMoney: 1,
ClassGymExpGain: 1,
CompanyWorkExpGain: 1,
CrimeExpGain: 1,
@@ -11267,7 +11271,7 @@ function displaySourceFiles(listElement, sourceFiles) {
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ui/navigationTracking */ 13);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 32);
@@ -14916,7 +14920,7 @@ _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.AllServ
/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ui/navigationTracking */ 13);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
@@ -15845,14 +15849,15 @@ Bladeburner.prototype.process = function() {
//Automation
if (this.automateEnabled) {
+ // Note: Do NOT set this.action = this.automateActionHigh/Low since it creates a reference
if (this.stamina <= this.automateThreshLow) {
if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {
- this.action = this.automateActionLow;
+ this.action = new ActionIdentifier({type: this.automateActionLow.type, name: this.automateActionLow.name});
this.startAction(this.action);
}
} else if (this.stamina >= this.automateThreshHigh) {
if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {
- this.action = this.automateActionHigh;
+ this.action = new ActionIdentifier({type: this.automateActionHigh.type, name: this.automateActionHigh.name});
this.startAction(this.action);
}
}
@@ -16046,6 +16051,13 @@ Bladeburner.prototype.startAction = function(actionId) {
case ActionTypes["BlackOp"]:
case ActionTypes["BlackOperation"]:
try {
+ // Safety measure - don't repeat BlackOps that are already done
+ if (this.blackops[actionId.name] != null) {
+ this.resetAction();
+ this.log("Error: Tried to start a Black Operation that had already been completed");
+ break;
+ }
+
var action = this.getActionObject(actionId);
if (action == null) {
throw new Error("Failed to get BlackOperation object for: " + actionId.name);
@@ -17023,6 +17035,8 @@ Bladeburner.prototype.createBlackOpsContent = function() {
"Black Operations (Black Ops) are special, one-time covert operations. " +
"Each Black Op must be unlocked successively by completing " +
"the one before it.
" +
+ "Your ultimate goal to climb through the ranks of Bladeburners is to complete " +
+ "all of the Black Ops.
" +
"Like normal operations, you may use a team for Black Ops. Failing " +
"a black op will incur heavy HP and rank losses.";
@@ -18300,6 +18314,12 @@ Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript
return false;
}
+ // Can't start a BlackOp if its already been done
+ if (this.blackops[actionId.name] != null) {
+ workerScript.log(`Failed to start Black Op ${actionId.name} because its already been completed`);
+ return false;
+ }
+
// Can't start a BlackOp if you haven't done the one before it
var blackops = [];
for (const nm in BlackOperations) {
@@ -25269,6 +25289,33 @@ function NetscriptFunctions(workerScript) {
/***/ }),
/* 42 */
+/*!*****************************************!*\
+ !*** ./utils/helpers/exceptionAlert.js ***!
+ \*****************************************/
+/*! exports provided: exceptionAlert */
+/*! exports used: exceptionAlert */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exceptionAlert; });
+/* harmony import */ var _DialogBox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../DialogBox */ 9);
+
+
+function exceptionAlert(e) {
+ Object(_DialogBox__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Caught an exception: " + e + "
" +
+ "Filename: " + (e.fileName || "UNKNOWN FILE NAME") + "
" +
+ "Line Number: " + (e.lineNumber || "UNKNOWN LINE NUMBER") + "
" +
+ "This is a bug, please report to game developer with this " +
+ "message as well as details about how to reproduce the bug.
" +
+ "If you want to be safe, I suggest refreshing the game WITHOUT saving so that your " +
+ "safe doesn't get corrupted");
+}
+
+
+
+
+/***/ }),
+/* 43 */
/*!**********************!*\
!*** ./src/Alias.js ***!
\**********************/
@@ -25402,33 +25449,6 @@ function substituteAliases(origCommand) {
-/***/ }),
-/* 43 */
-/*!*****************************************!*\
- !*** ./utils/helpers/exceptionAlert.js ***!
- \*****************************************/
-/*! exports provided: exceptionAlert */
-/*! exports used: exceptionAlert */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exceptionAlert; });
-/* harmony import */ var _DialogBox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../DialogBox */ 9);
-
-
-function exceptionAlert(e) {
- Object(_DialogBox__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Caught an exception: " + e + "
" +
- "Filename: " + (e.fileName || "UNKNOWN FILE NAME") + "
" +
- "Line Number: " + (e.lineNumber || "UNKNOWN LINE NUMBER") + "
" +
- "This is a bug, please report to game developer with this " +
- "message as well as details about how to reproduce the bug.
" +
- "If you want to be safe, I suggest refreshing the game WITHOUT saving so that your " +
- "safe doesn't get corrupted");
-}
-
-
-
-
/***/ }),
/* 44 */
/*!**********************!*\
@@ -29488,7 +29508,7 @@ function calculateWeakenTime(server, hack, int) {
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 27);
@@ -31391,7 +31411,7 @@ Gang.prototype.clearUI = function() {
"use strict";
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return postNetburnerText; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Terminal; });
-/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 42);
+/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 43);
/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodingContracts */ 40);
/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_CodingContracts__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants */ 1);
@@ -35943,6 +35963,7 @@ function initBitNodeMultipliers() {
_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationMoney = 0;
_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].RepToDonateToFaction = 0;
_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].CorporationValuation = 0;
+ _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].CodingContractMoney = 0;
break;
case 11: //The Big Crash
_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerMaxMoney = 0.1;
@@ -41967,7 +41988,7 @@ function getHacknetNode(name) {
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/helpers/createProgressBarText */ 77);
/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_uiHelpers_getElementById__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/uiHelpers/getElementById */ 50);
/* harmony import */ var _utils_uiHelpers_getElementById__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_getElementById__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var _utils_LogBox__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/LogBox */ 73);
@@ -42819,7 +42840,7 @@ JSONReviver_1.Reviver.constructors.Company = Company;
"use strict";
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return saveObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return loadGame; });
-/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 42);
+/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 43);
/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Company/Companies */ 18);
/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Company_Companies__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Company_CompanyPosition__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Company/CompanyPosition */ 79);
@@ -44515,7 +44536,7 @@ exports.isValidIPAddress = isValidIPAddress;
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../utils/uiHelpers/createPopup */ 38);
/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../utils/YesNoBox */ 17);
@@ -44998,7 +45019,7 @@ function displayLocationContent() {
var cityHallCreateCorporation = document.getElementById("location-cityhall-create-corporation");
- var nsaBladeburner = document.getElementById("location-nsa-bladeburner");
+ var nsaBladeburner = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_19__["clearEventListeners"])("location-nsa-bladeburner");
var loc = _Player__WEBPACK_IMPORTED_MODULE_12__[/* Player */ "a"].location;
@@ -45122,8 +45143,6 @@ function displayLocationContent() {
if (loc != "" && loc === _Player__WEBPACK_IMPORTED_MODULE_12__[/* Player */ "a"].companyName) {
let company = _Company_Companies__WEBPACK_IMPORTED_MODULE_2__["Companies"][loc];
- console.log(company.companyPositions);
-
jobTitle.style.display = "block";
jobReputation.style.display = "inline";
companyFavor.style.display = "inline";
@@ -47430,7 +47449,7 @@ function getRandomFilename(server, reward) {
/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/helpers/isString */ 36);
/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_4__);
@@ -48106,7 +48125,7 @@ function _getScriptUrls(script, scripts, seen) {
/* harmony import */ var _Terminal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Terminal */ 48);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 43);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 42);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/uiHelpers/removeElementById */ 20);
@@ -48455,6 +48474,26 @@ function createDevMenu() {
innerText: "Gain Bladeburner Rank",
});
+ const bladeburnerStoredCyclesInput = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__["createElement"])("input", {
+ class: "text-input",
+ margin: "5px",
+ placeholder: "# Cycles to Add",
+ type: "number",
+ });
+
+ const bladeburnerStoredCyclesButton = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__["createElement"])("button", {
+ class: "std-button",
+ clickListener: () => {
+ try {
+ const cycles = parseInt(bladeburnerStoredCyclesInput.value);
+ _Player__WEBPACK_IMPORTED_MODULE_4__[/* Player */ "a"].bladeburner.storedCycles += cycles;
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_12__[/* exceptionAlert */ "a"])(`Failed to add cycles to Bladeburner in dev menu: ${e}`);
+ }
+ },
+ innerText: "Add Cycles to Bladeburner mechanic",
+ });
+
// Gang
const gangHeader = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h2", {innerText: "Gang"});
@@ -48611,6 +48650,9 @@ function createDevMenu() {
devMenuContainer.appendChild(bladeburnerGainRankInput);
devMenuContainer.appendChild(bladeburnerGainRankButton);
devMenuContainer.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__["createElement"])("br"));
+ devMenuContainer.appendChild(bladeburnerStoredCyclesInput);
+ devMenuContainer.appendChild(bladeburnerStoredCyclesButton);
+ devMenuContainer.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_13__["createElement"])("br"));
devMenuContainer.appendChild(gangHeader);
devMenuContainer.appendChild(gangStoredCyclesInput);
devMenuContainer.appendChild(gangAddStoredCycles);
diff --git a/src/BitNode.js b/src/BitNode.js
index fa8c6f939..ea2340020 100644
--- a/src/BitNode.js
+++ b/src/BitNode.js
@@ -304,6 +304,7 @@ function initBitNodeMultipliers() {
BitNodeMultipliers.InfiltrationMoney = 0;
BitNodeMultipliers.RepToDonateToFaction = 0;
BitNodeMultipliers.CorporationValuation = 0;
+ BitNodeMultipliers.CodingContractMoney = 0;
break;
case 11: //The Big Crash
BitNodeMultipliers.ServerMaxMoney = 0.1;
diff --git a/src/BitNodeMultipliers.ts b/src/BitNodeMultipliers.ts
index e6dfdcd25..89951f147 100644
--- a/src/BitNodeMultipliers.ts
+++ b/src/BitNodeMultipliers.ts
@@ -29,6 +29,11 @@ interface IBitNodeMultipliers {
*/
ClassGymExpGain: number;
+ /**
+ * Influences the amount of money gained from completing Coding Contracts
+ **/
+ CodingContractMoney: number;
+
/**
* Influences the experience gained for each ability when the player completes working their job.
*/
@@ -154,6 +159,7 @@ export const BitNodeMultipliers: IBitNodeMultipliers = {
HacknetNodeMoney: 1,
ManualHackMoney: 1,
ScriptHackMoney: 1,
+ CodingContractMoney: 1,
ClassGymExpGain: 1,
CompanyWorkExpGain: 1,
diff --git a/src/Bladeburner.js b/src/Bladeburner.js
index 66d64b275..41bbdd803 100644
--- a/src/Bladeburner.js
+++ b/src/Bladeburner.js
@@ -918,14 +918,15 @@ Bladeburner.prototype.process = function() {
//Automation
if (this.automateEnabled) {
+ // Note: Do NOT set this.action = this.automateActionHigh/Low since it creates a reference
if (this.stamina <= this.automateThreshLow) {
if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {
- this.action = this.automateActionLow;
+ this.action = new ActionIdentifier({type: this.automateActionLow.type, name: this.automateActionLow.name});
this.startAction(this.action);
}
} else if (this.stamina >= this.automateThreshHigh) {
if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {
- this.action = this.automateActionHigh;
+ this.action = new ActionIdentifier({type: this.automateActionHigh.type, name: this.automateActionHigh.name});
this.startAction(this.action);
}
}
@@ -1119,6 +1120,13 @@ Bladeburner.prototype.startAction = function(actionId) {
case ActionTypes["BlackOp"]:
case ActionTypes["BlackOperation"]:
try {
+ // Safety measure - don't repeat BlackOps that are already done
+ if (this.blackops[actionId.name] != null) {
+ this.resetAction();
+ this.log("Error: Tried to start a Black Operation that had already been completed");
+ break;
+ }
+
var action = this.getActionObject(actionId);
if (action == null) {
throw new Error("Failed to get BlackOperation object for: " + actionId.name);
@@ -2096,6 +2104,8 @@ Bladeburner.prototype.createBlackOpsContent = function() {
"Black Operations (Black Ops) are special, one-time covert operations. " +
"Each Black Op must be unlocked successively by completing " +
"the one before it.
" +
+ "Your ultimate goal to climb through the ranks of Bladeburners is to complete " +
+ "all of the Black Ops.
" +
"Like normal operations, you may use a team for Black Ops. Failing " +
"a black op will incur heavy HP and rank losses.";
@@ -3373,6 +3383,12 @@ Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript
return false;
}
+ // Can't start a BlackOp if its already been done
+ if (this.blackops[actionId.name] != null) {
+ workerScript.log(`Failed to start Black Op ${actionId.name} because its already been completed`);
+ return false;
+ }
+
// Can't start a BlackOp if you haven't done the one before it
var blackops = [];
for (const nm in BlackOperations) {
diff --git a/src/Constants.ts b/src/Constants.ts
index ef32c1ff8..5023e5f9f 100644
--- a/src/Constants.ts
+++ b/src/Constants.ts
@@ -514,6 +514,10 @@ export let CONSTANTS: IMap = {
* Added the terminal command 'expr', which can be used to evaluate simple mathematical expressions
* Bug Fix: scp() should no longer throw errors when used with 2-arguments and an array of files
+ * Bug Fix: Coding Contracts no longer give money in BitNode-8
+ * Bug Fix: In Bladeburner, you can no longer start a BlackOp through the Netscript API if it has already been completed
+ * Bug Fix: In Bladeburner, fixed a bug which caused the configured 'automate' actions to occasionally be switched to other actions
+ * Bug Fix: 'Return to World' button at locations no longer accumulates event listeners
`
}
diff --git a/src/DevMenu.js b/src/DevMenu.js
index ce2c31cd1..97ae71b42 100644
--- a/src/DevMenu.js
+++ b/src/DevMenu.js
@@ -345,6 +345,26 @@ export function createDevMenu() {
innerText: "Gain Bladeburner Rank",
});
+ const bladeburnerStoredCyclesInput = createElement("input", {
+ class: "text-input",
+ margin: "5px",
+ placeholder: "# Cycles to Add",
+ type: "number",
+ });
+
+ const bladeburnerStoredCyclesButton = createElement("button", {
+ class: "std-button",
+ clickListener: () => {
+ try {
+ const cycles = parseInt(bladeburnerStoredCyclesInput.value);
+ Player.bladeburner.storedCycles += cycles;
+ } catch(e) {
+ exceptionAlert(`Failed to add cycles to Bladeburner in dev menu: ${e}`);
+ }
+ },
+ innerText: "Add Cycles to Bladeburner mechanic",
+ });
+
// Gang
const gangHeader = createElement("h2", {innerText: "Gang"});
@@ -501,6 +521,9 @@ export function createDevMenu() {
devMenuContainer.appendChild(bladeburnerGainRankInput);
devMenuContainer.appendChild(bladeburnerGainRankButton);
devMenuContainer.appendChild(createElement("br"));
+ devMenuContainer.appendChild(bladeburnerStoredCyclesInput);
+ devMenuContainer.appendChild(bladeburnerStoredCyclesButton);
+ devMenuContainer.appendChild(createElement("br"));
devMenuContainer.appendChild(gangHeader);
devMenuContainer.appendChild(gangStoredCyclesInput);
devMenuContainer.appendChild(gangAddStoredCycles);
diff --git a/src/Location.js b/src/Location.js
index 742f7b2cd..4e7629827 100644
--- a/src/Location.js
+++ b/src/Location.js
@@ -113,7 +113,7 @@ function displayLocationContent() {
var cityHallCreateCorporation = document.getElementById("location-cityhall-create-corporation");
- var nsaBladeburner = document.getElementById("location-nsa-bladeburner");
+ var nsaBladeburner = clearEventListeners("location-nsa-bladeburner");
var loc = Player.location;
diff --git a/src/Player.js b/src/Player.js
index a9ca3b34f..bceb176fa 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -2371,7 +2371,7 @@ PlayerObject.prototype.gainCodingContractReward = function(reward, difficulty=1)
break;
case CodingContractRewardType.Money:
default:
- var moneyGain = CONSTANTS.CodingContractBaseMoneyGain * difficulty;
+ var moneyGain = CONSTANTS.CodingContractBaseMoneyGain * difficulty * BitNodeMultipliers.CodingContractMoney;
this.gainMoney(moneyGain);
return `Gained ${numeralWrapper.format(moneyGain, '$0.000a')}`;
break;