diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js index 0a78aa288..304ea3477 100644 --- a/dist/engine.bundle.js +++ b/dist/engine.bundle.js @@ -314,6 +314,7 @@ function PlayerObject() { this.lastUpdate = 0; this.totalPlaytime = 0; this.playtimeSinceLastAug = 0; + this.playtimeSinceLastBitnode = 0; //Production since last Augmentation installation this.scriptProdSinceLastAug = 0; @@ -503,6 +504,7 @@ PlayerObject.prototype.prestigeSourceFile = function() { this.corporation = 0; this.playtimeSinceLastAug = 0; + this.playtimeSinceLastBitnode = 0; this.scriptProdSinceLastAug = 0; } @@ -5733,7 +5735,7 @@ function purchaseServerBoxCreate(ram, cost) { __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Engine", function() { return Engine; }); /* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); -/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/GameOptions.js */ 52); +/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/GameOptions.js */ 53); /* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1); /* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! numeral/min/numeral.min */ 13); /* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_3__); @@ -5754,13 +5756,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Gang.js */ 34); /* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./HacknetNode.js */ 36); /* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 24); -/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Literature.js */ 51); +/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Literature.js */ 52); /* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./Message.js */ 28); /* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Missions.js */ 33); /* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 30); /* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NetscriptWorker.js */ 19); /* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Player.js */ 0); -/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./Prestige.js */ 55); +/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./Prestige.js */ 56); /* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./RedPill.js */ 37); /* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./SaveObject.js */ 45); /* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./Script.js */ 25); @@ -6324,6 +6326,11 @@ let Engine = { intText = 'Intelligence: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence).toLocaleString() + "


"; } + let bitNodeTimeText = ""; + if(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].sourceFiles.length > 0) { + bitNodeTimeText = 'Time played since last Bitnode destroyed: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["convertTimeMsToTimeElapsedString"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode) + '
'; + } + Engine.Display.characterInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("pre", { innerHTML: 'General

' + @@ -6377,6 +6384,7 @@ let Engine = { 'Hacknet Nodes owned: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknetNodes.length + '
' + 'Augmentations installed: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].augmentations.length + '
' + 'Time played since last Augmentation: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["convertTimeMsToTimeElapsedString"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug) + '
' + + bitNodeTimeText + 'Time played: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["convertTimeMsToTimeElapsedString"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime), })); @@ -6662,8 +6670,10 @@ let Engine = { var time = numCycles * Engine._idleSpeed; if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime = 0;} if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug = 0;} + if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode = 0;} _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime += time; _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug += time; + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode += time; //Start Manual hack if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].startAction == true) { @@ -7083,8 +7093,10 @@ let Engine = { var time = numCyclesOffline * Engine._idleSpeed; if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime = 0;} if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug = 0;} + if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode = 0;} _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime += time; _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug += time; + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastBitnode += time; _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].lastUpdate = Engine._lastUpdate; Engine.start(); //Run main game loop and Scripts loop @@ -12196,7 +12208,29 @@ function initBitNodes() { "Level 1: 8%
" + "Level 2: 12%
" + "Level 3: 14%"); - BitNodes["BitNode7"] = new BitNode(7, "Hacktocracy", "COMING SOON"); //Healthy Hacknet balancing mechanic + BitNodes["BitNode7"] = new BitNode(7, "Bladeburners 2079", "More human than humans", + "In the middle of the 21st century, you were doing cutting-edge work at OmniTek Incorporated as part of the AI design team " + + "for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological " + + "breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyperintelligent AI. " + + "Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, " + + "and more intelligent than the humans that had created them.

" + + "In this BitNode you will be able to access the Bladeburner API, which allows you to access Bladeburner " + + "functionality through Netscript. Furthermore:

" + + "The rank you gain from Bladeburner contracts/operations is reduced by 50%
" + + "Bladeburner skills cost twice as many skill points
" + + "Augmentations are 3x more expensive
" + + "Hacking and Hacknet Nodes will be significantly less profitable
" + + "Your hacking level is reduced by 50%
" + + "Hacking experience gain from scripts is reduced by 75%
" + + "Corporations have 80% lower valuations and are therefore less profitable
" + + "Working for companies is 50% less profitable
" + + "Crimes and Infiltration are 50% less profitable

" + + "Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade " + + "its level up to a maximum of 3. This Source-File allows you to access the Bladeburner Netscript API in other " + + "BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:

" + + "Level 1: 8%
" + + "Level 2: 12%
" + + "Level 3: 14%"); BitNodes["BitNode8"] = new BitNode(8, "Ghost of Wall Street", "Money never sleeps", "You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.

" + "In this BitNode:

" + @@ -12289,6 +12323,9 @@ let BitNodeMultipliers = { InfiltrationRep: 1, CorporationValuation: 1, + + BladeburnerRank: 1, + BladeburnerSkillCost: 1, } function initBitNodeMultipliers() { @@ -12365,6 +12402,23 @@ function initBitNodeMultipliers() { BitNodeMultipliers.FactionPassiveRepGain = 0; BitNodeMultipliers.HackExpGain = 0.25; break; + case 7: //Bladeburner 2079 + BitNodeMultipliers.BladeburnerRank = 0.5; + BitNodeMultipliers.BladeburnerSkillCost = 2; + BitNodeMultipliers.AugmentationMoneyCost = 3; + BitNodeMultipliers.HackingLevelMultiplier = 0.5; + BitNodeMultipliers.ServerMaxMoney = 0.5; + BitNodeMultipliers.ServerStartingMoney = 0.5; + BitNodeMultipliers.ServerStartingSecurity = 1.5; + BitNodeMultipliers.ScriptHackMoney = 0.5; + BitNodeMultipliers.CompanyWorkMoney = 0.5; + BitNodeMultipliers.CrimeMoney = 0.5; + BitNodeMultipliers.InfiltrationMoney = 0.5; + BitNodeMultipliers.CorporationValuation = 0.2; + BitNodeMultipliers.HacknetNodeMoney = 0.2; + BitNodeMultipliers.FactionPassiveRepGain = 0; + BitNodeMultipliers.HackExpGain = 0.25; + break; case 8: //Ghost of Wall Street BitNodeMultipliers.ScriptHackMoney = 0; BitNodeMultipliers.ManualHackMoney = 0; @@ -12800,7 +12854,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 30); /* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptWorker.js */ 19); /* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Player.js */ 0); -/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Prestige.js */ 55); +/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Prestige.js */ 56); /* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SaveObject.js */ 45); /* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Script.js */ 25); /* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Server.js */ 8); @@ -15718,7 +15772,7 @@ function runScriptsLoop() { } else { try { var ast = Object(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__["parse"])(workerScripts[i].code, {sourceType:"module"}); - console.log(ast); + //console.log(ast); } catch (e) { console.log("Error parsing script: " + workerScripts[i].name); Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Syntax ERROR in " + workerScripts[i].name + ":
" + e); @@ -17254,12 +17308,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias.js */ 29); /* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3); /* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateProgram.js */ 16); -/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DarkWeb.js */ 56); +/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DarkWeb.js */ 50); /* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./engine.js */ 5); /* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Fconf.js */ 32); -/* harmony import */ var _HelpText_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpText.js */ 69); +/* harmony import */ var _HelpText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpText */ 69); +/* harmony import */ var _HelpText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_HelpText__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 24); -/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Literature.js */ 51); +/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Literature.js */ 52); /* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Message.js */ 28); /* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6); /* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./NetscriptWorker.js */ 19); @@ -17269,7 +17324,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Server.js */ 8); /* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Settings.js */ 22); /* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./SpecialServerIps.js */ 18); -/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./TextFile.js */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./TextFile */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); /* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1); /* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/LogBox.js */ 49); @@ -17672,9 +17728,12 @@ function determineAllPossibilitiesForTabCompletion(input, index=0) { } if (input.startsWith ("buy ")) { - return [_CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].BruteSSHProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].FTPCrackProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].RelaySMTPProgram, - _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].HTTPWormProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].SQLInjectProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].DeepscanV1, - _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].DeepscanV2].concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["GlobalAliases"])); + let options = []; + for(const i in _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__["DarkWebItems"]) { + const item = _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__["DarkWebItems"][i] + options.push(item.program); + } + return options.concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["GlobalAliases"])); } if (input.startsWith("scp ") && index == 1) { @@ -18054,7 +18113,7 @@ let Terminal = { switch(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__["currITutorialStep"]) { case _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__["iTutorialSteps"].TerminalHelp: if (commandArray[0] == "help") { - post(_HelpText_js__WEBPACK_IMPORTED_MODULE_6__["TerminalHelpText"]); + post(_HelpText__WEBPACK_IMPORTED_MODULE_6__["TerminalHelpText"]); Object(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__["iTutorialNextStep"])(); } else {post("Bad command. Please follow the tutorial");} break; @@ -18346,7 +18405,7 @@ let Terminal = { } } else if (fn.endsWith(".txt")) { //Download a single text file - var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_18__["getTextFile"])(fn, s); + var txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_18__["getTextFile"])(fn, s); if (txtFile !== null) { return txtFile.download(); } @@ -18385,10 +18444,10 @@ let Terminal = { post("Incorrect usage of help command. Usage: help"); return; } if (commandArray.length == 1) { - post(_HelpText_js__WEBPACK_IMPORTED_MODULE_6__["TerminalHelpText"]); + post(_HelpText__WEBPACK_IMPORTED_MODULE_6__["TerminalHelpText"]); } else { var cmd = commandArray[1]; - var txt = _HelpText_js__WEBPACK_IMPORTED_MODULE_6__["HelpTexts"][cmd]; + var txt = _HelpText__WEBPACK_IMPORTED_MODULE_6__["HelpTexts"][cmd]; if (txt == null) { post("Error: No help topics match '" + cmd + "'"); return; @@ -18700,7 +18759,7 @@ let Terminal = { return post(scriptname + " copied over to " + destServer.hostname); } } - var newFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_18__["TextFile"](txtFile.fn, txtFile.text); + var newFile = new _TextFile__WEBPACK_IMPORTED_MODULE_18__["TextFile"](txtFile.fn, txtFile.text); destServer.textFiles.push(newFile); return post(scriptname + " copied over to " + destServer.hostname); } @@ -24951,7 +25010,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Server.js */ 8); /* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings.js */ 22); /* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Terminal.js */ 21); -/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile.js */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn.js */ 35); /* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); @@ -25274,7 +25334,7 @@ function saveAndCloseScriptEditor() { return; } } - var textFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_11__["TextFile"](filename, code); + var textFile = new _TextFile__WEBPACK_IMPORTED_MODULE_11__["TextFile"](filename, code); s.textFiles.push(textFile); } else { Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Invalid filename. Must be either a script (.script) or " + @@ -25430,19 +25490,32 @@ function parseOnlyRamCalculate(server, code, workerScript) { // // TODO it would be simpler to just reference a dictionary. try { - var func = workerScript.env.get(ref); - if (typeof func === "function") { - try { - var res = func.apply(null, []); - if (typeof res === "number") { - ram += res; + function applyFuncRam(func) { + if (typeof func === "function") { + try { + let res = func.apply(null, []); + if (typeof res === "number") { + return res; + } + return 0; + } catch(e) { + console.log("ERROR applying function: " + e); + return 0; } - } catch(e) { - console.log("ERROR applying function: " + e); + } else { + return 0; } } - } catch (error) { continue; } + //Special logic for Bladeburner + var func; + if (ref in workerScript.env.vars.bladeburner) { + func = workerScript.env.vars.bladeburner[ref]; + } else { + func = workerScript.env.get(ref); + } + ram += applyFuncRam(func); + } catch (error) {continue;} } return ram; @@ -25958,19 +26031,21 @@ _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.AllS __webpack_require__.r(__webpack_exports__); /* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bladeburner", function() { return Bladeburner; }); /* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations.js */ 17); -/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3); -/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5); -/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Faction.js */ 11); -/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Location.js */ 4); -/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player.js */ 0); -/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./RedPill.js */ 37); -/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Terminal.js */ 21); -/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); -/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1); -/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 9); -/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! numeral/min/numeral.min */ 13); -/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11__); -/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); +/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BitNode.js */ 14); +/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants.js */ 3); +/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./engine.js */ 5); +/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction.js */ 11); +/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Location.js */ 4); +/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Player.js */ 0); +/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./RedPill.js */ 37); +/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Terminal.js */ 21); +/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); +/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1); +/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 9); +/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! numeral/min/numeral.min */ 13); +/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12__); +/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); + @@ -26105,25 +26180,25 @@ var consoleHelpText = { //Keypresses for Console $(document).keydown(function(event) { - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) { + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner) { //if (DomElems.consoleInput && !event.ctrlKey && !event.shiftKey && !event.altKey) { // DomElems.consoleInput.focus(); //} - if (!(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner instanceof Bladeburner)) {return;} + if (!(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner instanceof Bladeburner)) {return;} //NOTE: Keycodes imported from Terminal.js - if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].ENTER) { + if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_8__["KEY"].ENTER) { event.preventDefault(); var command = DomElems.consoleInput.value; if (command.length > 0) { - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.postToConsole("> " + command); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.resetConsoleInput(); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.executeConsoleCommands(command); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner.postToConsole("> " + command); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner.resetConsoleInput(); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner.executeConsoleCommands(command); } } - if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].UPARROW) { + if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_8__["KEY"].UPARROW) { if (DomElems.consoleInput == null) {return;} var i = consoleHistoryIndex; var len = consoleHistory.length; @@ -26142,7 +26217,7 @@ $(document).keydown(function(event) { setTimeout(function(){DomElems.consoleInput.selectionStart = DomElems.consoleInput.selectionEnd = 10000; }, 0); } - if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].DOWNARROW) { + if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_8__["KEY"].DOWNARROW) { if (DomElems.consoleInput == null) {return;} var i = consoleHistoryIndex; var len = consoleHistory.length; @@ -26166,15 +26241,15 @@ $(document).keydown(function(event) { }); function City(params={}) { - this.name = params.name ? params.name : _Location_js__WEBPACK_IMPORTED_MODULE_4__["Locations"].Sector12; + this.name = params.name ? params.name : _Location_js__WEBPACK_IMPORTED_MODULE_5__["Locations"].Sector12; //Synthoid population and estimate - this.pop = params.pop ? params.pop : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(800e6, 1.2*PopulationThreshold); + this.pop = params.pop ? params.pop : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(800e6, 1.2*PopulationThreshold); this.popEst = this.pop * (Math.random() + 0.5); //Number of Synthoid communities population and estimate - this.comms = params.comms ? params.comms : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 40); - this.commsEst = this.comms + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-2, 2); + this.comms = params.comms ? params.comms : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, 40); + this.commsEst = this.comms + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(-2, 2); if (this.commsEst < 0) {this.commsEst = 0;} this.chaos = 0; } @@ -26223,7 +26298,7 @@ City.prototype.changePopulationByCount = function(n, params={}) { this.pop += n; if (params.estChange && !isNaN(params.estChange)) {this.popEst += params.estChange;} if (params.estOffset) { - this.popEst = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(this.popEst, params.estOffset); + this.popEst = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(this.popEst, params.estOffset); } this.popEst = Math.max(this.popEst, 0); } @@ -26267,12 +26342,12 @@ City.prototype.changeChaosByPercentage = function(p) { } City.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("City", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("City", this); } City.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(City, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(City, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.City = City; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.City = City; function Skill(params={name:"foo", desc:"foo"}) { if (params.name) { @@ -26316,6 +26391,10 @@ function Skill(params={name:"foo", desc:"foo"}) { if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;} if (params.gunAbility) {this.gunAbility = params.gunAbility;} } + +Skill.prototype.calculateCost = function(currentLevel) { + return (this.baseCost + (currentLevel * this.costInc)) * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerSkillCost; +} var Skills = {}; var SkillNames = { BladesIntuition: "Blade's Intuition", @@ -26344,7 +26423,7 @@ function Action(params={}) { this.level = 1; this.maxLevel = 1; this.autoLevel = true; - this.baseDifficulty = params.baseDifficulty ? Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(params.baseDifficulty, 10) : 100; + this.baseDifficulty = params.baseDifficulty ? Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(params.baseDifficulty, 10) : 100; this.difficultyFac = params.difficultyFac ? params.difficultyFac : 1.01; //Rank increase/decrease is affected by this exponent @@ -26367,8 +26446,8 @@ function Action(params={}) { //Number of this contract remaining, and its growth rate //Growth rate is an integer and the count will increase by that integer every "cycle" - this.count = params.count ? params.count : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1e3, 25e3); - this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5); + this.count = params.count ? params.count : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1e3, 25e3); + this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, 5); //Weighting of each stat in determining action success rate var defaultWeights = {hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7}; @@ -26415,7 +26494,7 @@ Action.prototype.getSuccessChance = function(inst, params={}) { var competence = 0; for (var stat in this.weights) { if (this.weights.hasOwnProperty(stat)) { - var playerStatLvl = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].queryStatFromString(stat); + var playerStatLvl = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queryStatFromString(stat); var key = "eff" + stat.charAt(0).toUpperCase() + stat.slice(1); var effMultiplier = inst.skillMultipliers[key]; if (effMultiplier == null) { @@ -26474,7 +26553,7 @@ Action.prototype.getSuccessChance = function(inst, params={}) { } //Augmentation multiplier - competence *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_success_chance_mult; + competence *= _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult; if (isNaN(competence)) {throw new Error("Competence calculated as NaN in Action.getSuccessChance()");} return Math.min(1, competence / difficulty); @@ -26491,8 +26570,8 @@ Action.prototype.getActionTime = function(inst) { var baseTime = difficulty / DifficultyToTimeFactor; var skillFac = inst.skillMultipliers.actionTime; //Always < 1 - var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * inst.skillMultipliers.effAgi; - var effDexterity = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity * inst.skillMultipliers.effDex; + var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility * inst.skillMultipliers.effAgi; + var effDexterity = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity * inst.skillMultipliers.effDex; var statFac = 0.5 * (Math.pow(effAgility, EffAgiExponentialFactor) + Math.pow(effDexterity, EffDexExponentialFactor) + (effAgility / EffAgiLinearFactor) + @@ -26522,12 +26601,12 @@ Action.prototype.setMaxLevel = function(baseSuccessesPerLevel) { } Action.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Action", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("Action", this); } Action.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Action, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(Action, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Action = Action; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.Action = Action; var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc. //Action Identifier @@ -26547,12 +26626,12 @@ function ActionIdentifier(params={}) { if (params.type) {this.type = params.type;} } ActionIdentifier.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("ActionIdentifier", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("ActionIdentifier", this); } ActionIdentifier.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(ActionIdentifier, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(ActionIdentifier, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.ActionIdentifier = ActionIdentifier; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.ActionIdentifier = ActionIdentifier; //Contracts function Contract(params={}) { @@ -26560,12 +26639,12 @@ function Contract(params={}) { } Contract.prototype = Object.create(Action.prototype); Contract.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Contract", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("Contract", this); } Contract.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Contract, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(Contract, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Contract = Contract; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.Contract = Contract; //Operations function Operation(params={}) { @@ -26575,12 +26654,12 @@ function Operation(params={}) { } Operation.prototype = Object.create(Action.prototype); Operation.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Operation", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("Operation", this); } Operation.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Operation, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(Operation, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Operation = Operation; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.Operation = Operation; //Black Operations function BlackOperation(params={}) { @@ -26592,12 +26671,12 @@ function BlackOperation(params={}) { } BlackOperation.prototype = Object.create(Action.prototype); BlackOperation.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("BlackOperation", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("BlackOperation", this); } BlackOperation.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(BlackOperation, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(BlackOperation, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.BlackOperation = BlackOperation; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.BlackOperation = BlackOperation; var BlackOperations = {}; function Bladeburner(params={}) { @@ -26614,7 +26693,7 @@ function Bladeburner(params={}) { this.storedCycles = 0; - this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 600); //5-10 minutes + this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(300, 600); //5-10 minutes //These times are in seconds this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training) @@ -26628,7 +26707,7 @@ function Bladeburner(params={}) { for (var i = 0; i < CityNames.length; ++i) { this.cities[CityNames[i]] = new City({name:CityNames[i]}); } - this.city = _Location_js__WEBPACK_IMPORTED_MODULE_4__["Locations"].Sector12; + this.city = _Location_js__WEBPACK_IMPORTED_MODULE_5__["Locations"].Sector12; //Map of SkillNames -> level this.skills = {}; @@ -26674,9 +26753,9 @@ function Bladeburner(params={}) { Bladeburner.prototype.prestige = function() { this.resetAction(); - var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Bladeburners"]; + var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Factions"]["Bladeburners"]; if (this.rank >= RankNeededForFaction) { - Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac); + Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["joinFaction"])(bladeburnerFac); } } @@ -26689,7 +26768,7 @@ Bladeburner.prototype.create = function() { "whatever city you are currently in.", baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041, rankGain:0.3, hpLoss:0.5, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 800), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5), + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(300, 800), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, 5), weights:{hack:0,str:0.05,def:0.05,dex:0.35,agi:0.35,cha:0.1, int:0.05}, decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.9, int:1}, isStealth:true @@ -26701,7 +26780,7 @@ Bladeburner.prototype.create = function() { "current city, and will also increase its chaos level.", baseDifficulty:250, difficultyFac:1.04,rewardFac:1.085, rankGain:0.9, hpLoss:1, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(200, 750), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 3), + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(200, 750), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, 3), weights:{hack:0,str:0.15,def:0.15,dex:0.25,agi:0.25,cha:0.1, int:0.1}, decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9}, isKill:true @@ -26713,7 +26792,7 @@ Bladeburner.prototype.create = function() { "city, and will also increase its chaos level.", baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065, rankGain:0.6, hpLoss:1, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 900), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1,4), + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(300, 900), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1,4), weights:{hack:0,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0.1, int:0.1}, decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9}, isKill:true @@ -26728,7 +26807,7 @@ Bladeburner.prototype.create = function() { "You will NOT lose HP from failed Investigation ops.", baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25, rankGain:2, rankLoss:0.2, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(50, 400), countGrowth:1, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(50, 400), countGrowth:1, weights:{hack:0.25,str:0.05,def:0.05,dex:0.2,agi:0.1,cha:0.25, int:0.1}, decays:{hack:0.85,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9}, isStealth:true @@ -26741,7 +26820,7 @@ Bladeburner.prototype.create = function() { "data.", baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100, rankGain:4, rankLoss:0.4, hpLoss:2, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(50, 300), countGrowth:1, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(50, 300), countGrowth:1, weights:{hack:0.2,str:0.05,def:0.05,dex:0.2,agi:0.2,cha:0.2, int:0.1}, decays:{hack:0.8,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9}, isStealth:true @@ -26752,7 +26831,7 @@ Bladeburner.prototype.create = function() { "notorious Synthoid criminals.", baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500, rankGain:5, rankLoss:0.5, hpLoss:2.5, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25,400), countGrowth:0.75, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(25,400), countGrowth:0.75, weights:{hack:0.25,str:0.05,def:0.05,dex:0.25,agi:0.1,cha:0.2, int:0.1}, decays:{hack:0.8,str:0.85,def:0.85,dex:0.85,agi:0.85,cha:0.7, int:0.9}, isStealth:true @@ -26764,7 +26843,7 @@ Bladeburner.prototype.create = function() { "in order for this Operation to be successful", baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000, rankGain:50,rankLoss:2.5,hpLoss:50, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 150), countGrowth:0.2, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(25, 150), countGrowth:0.2, weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1}, decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9}, isKill:true @@ -26776,7 +26855,7 @@ Bladeburner.prototype.create = function() { "drawing any attention. Stealth and discretion are key.", baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3, rankGain:20, rankLoss:2, hpLoss:10, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 250), countGrowth:0.1, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(25, 250), countGrowth:0.1, weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1}, decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9}, isStealth:true, isKill:true @@ -26788,7 +26867,7 @@ Bladeburner.prototype.create = function() { "in the Synthoid communities.", baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3, rankGain:40, rankLoss:4, hpLoss:5, - count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 200), countGrowth:0.1, + count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(25, 200), countGrowth:0.1, weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1}, decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.8}, isStealth:true, isKill:true @@ -26801,14 +26880,14 @@ Bladeburner.prototype.storeCycles = function(numCycles=1) { Bladeburner.prototype.process = function() { //Extreme condition...if Operation Daedalus is complete trigger the BitNode - if (_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["redPillFlag"] === false && this.blackops.hasOwnProperty("Operation Daedalus")) { - return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN); + if (_RedPill_js__WEBPACK_IMPORTED_MODULE_7__["redPillFlag"] === false && this.blackops.hasOwnProperty("Operation Daedalus")) { + return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_7__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN); } //If the Player starts doing some other actions, set action to idle and alert - if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].BladesSimulacrum].owned === false && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].isWorking) { + if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].BladesSimulacrum].owned === false && _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].isWorking) { if (this.action.type !== ActionTypes["Idle"]) { - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Your Bladeburner action was cancelled because you started " + + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Your Bladeburner action was cancelled because you started " + "doing something else"); } this.resetAction(); @@ -26851,7 +26930,7 @@ Bladeburner.prototype.process = function() { this.randomEventCounter -= seconds; if (this.randomEventCounter <= 0) { this.randomEvent(); - this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 600); + this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(300, 600); } this.processAction(seconds); @@ -26871,26 +26950,26 @@ Bladeburner.prototype.process = function() { } } - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) { + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner) { this.updateContent(); } } } Bladeburner.prototype.calculateMaxStamina = function() { - var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * this.skillMultipliers.effAgi; + var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility * this.skillMultipliers.effAgi; var maxStamina = (Math.pow(effAgility, 0.8) + this.staminaBonus); maxStamina *= this.skillMultipliers.stamina; - maxStamina *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_max_stamina_mult; + maxStamina *= _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult; if (isNaN(maxStamina)) {throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()");} this.maxStamina = maxStamina; } Bladeburner.prototype.calculateStaminaGainPerSecond = function() { - var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * this.skillMultipliers.effAgi; + var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility * this.skillMultipliers.effAgi; var maxStaminaBonus = this.maxStamina / MaxStaminaToGainFactor; var gain = (StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17); - return gain * (this.skillMultipliers.stamina * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_stamina_gain_mult); + return gain * (this.skillMultipliers.stamina * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult); } Bladeburner.prototype.calculateStaminaPenalty = function() { @@ -26904,14 +26983,14 @@ Bladeburner.prototype.changeRank = function(change) { this.maxRank = Math.max(this.rank, this.maxRank); var bladeburnersFactionName = "Bladeburners"; - if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(bladeburnersFactionName)) { - var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][bladeburnersFactionName]; - if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Faction"])) { + if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["factionExists"])(bladeburnersFactionName)) { + var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Factions"][bladeburnersFactionName]; + if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Faction"])) { throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button"); } if (bladeburnerFac.isMember) { var favorBonus = 1 + (bladeburnerFac.favor / 100); - bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].faction_rep_mult * favorBonus); + bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult * favorBonus); } } @@ -27039,7 +27118,7 @@ Bladeburner.prototype.startAction = function(actionId) { if (action.count < 1) {return this.resetAction();} this.actionTimeToComplete = action.getActionTime(this); } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } break; case ActionTypes["Operation"]: @@ -27051,7 +27130,7 @@ Bladeburner.prototype.startAction = function(actionId) { if (action.count < 1) {return this.resetAction();} this.actionTimeToComplete = action.getActionTime(this); } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } break; case ActionTypes["BlackOp"]: @@ -27063,7 +27142,7 @@ Bladeburner.prototype.startAction = function(actionId) { } this.actionTimeToComplete = action.getActionTime(this); } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } break; case ActionTypes["Training"]: @@ -27126,7 +27205,7 @@ Bladeburner.prototype.completeAction = function() { var moneyGain = 0; if (!isOperation) { moneyGain = ContractBaseMoneyGain * rewardMultiplier; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainMoney(moneyGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainMoney(moneyGain); } if (isOperation) { @@ -27135,12 +27214,12 @@ Bladeburner.prototype.completeAction = function() { action.setMaxLevel(ContractSuccessesPerLevel); } if (action.rankGain) { - var gain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankGain * rewardMultiplier, 10); + var gain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(action.rankGain * rewardMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerRank, 10); this.changeRank(gain); if (isOperation && this.logging.ops) { - this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(gain, 3) + " rank"); + this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(gain, 3) + " rank"); } else if (!isOperation && this.logging.contracts) { - this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(gain, 3) + " rank and " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(moneyGain).format("$0.000a")); + this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(gain, 3) + " rank and " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12___default()(moneyGain).format("$0.000a")); } } isOperation ? this.completeOperation(true) : this.completeContract(true); @@ -27149,21 +27228,21 @@ Bladeburner.prototype.completeAction = function() { ++action.failures; var loss = 0, damage = 0; if (action.rankLoss) { - loss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankLoss * rewardMultiplier, 10); + loss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(action.rankLoss * rewardMultiplier, 10); this.changeRank(-1 * loss); } if (action.hpLoss) { damage = action.hpLoss * difficultyMultiplier; - damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(damage, 10)); + damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(damage, 10)); this.hpLost += damage; - if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].takeDamage(damage)) { + if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].takeDamage(damage)) { ++this.numHosp; - this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].max_hp); + this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].max_hp); } } var logLossText = ""; - if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(loss, 3) + " rank.";} - if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(damage, 0) + " damage.";} + if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(loss, 3) + " rank.";} + if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(damage, 0) + " damage.";} if (isOperation && this.logging.ops) { this.log(action.name + " failed! " + logLossText); } else if (!isOperation && this.logging.contracts) { @@ -27174,7 +27253,7 @@ Bladeburner.prototype.completeAction = function() { if (action.autoLevel) {action.level = action.maxLevel;} //Autolevel this.startAction(this.action); //Repeat action } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } break; case ActionTypes["BlackOp"]: @@ -27200,7 +27279,7 @@ Bladeburner.prototype.completeAction = function() { this.blackops[action.name] = true; var rankGain = 0; if (action.rankGain) { - rankGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankGain, 10); + rankGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(action.rankGain * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerRank, 10); this.changeRank(rankGain); } teamLossMax = Math.ceil(teamCount/2); @@ -27208,35 +27287,35 @@ Bladeburner.prototype.completeAction = function() { //Operation Daedalus if (action.name === "Operation Daedalus") { this.resetAction(); - return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN); + return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_7__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN); } - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) { + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner) { this.createActionAndSkillsContent(); } if (this.logging.blackops) { - this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(rankGain, 1) + " rank"); + this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(rankGain, 1) + " rank"); } } else { this.gainActionStats(action, false); var rankLoss = 0, damage = 0; if (action.rankLoss) { - rankLoss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankLoss, 10); + rankLoss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(action.rankLoss, 10); this.changeRank(-1 * rankLoss); } if (action.hpLoss) { damage = action.hpLoss * difficultyMultiplier; - damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(damage, 10)); - if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].takeDamage(damage)) { + damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["addOffset"])(damage, 10)); + if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].takeDamage(damage)) { ++this.numHosp; - this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].max_hp); + this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].max_hp); } } teamLossMax = Math.floor(teamCount); if (this.logging.blackops) { - this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(rankLoss, 1) + " rank and took" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(damage, 0) + " damage"); + this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(rankLoss, 1) + " rank and took" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(damage, 0) + " damage"); } } @@ -27244,59 +27323,59 @@ Bladeburner.prototype.completeAction = function() { //Calculate team lossses if (teamCount >= 1) { - var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, teamLossMax); + var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, teamLossMax); this.teamSize -= losses; this.teamLost += losses; if (this.logging.blackops) { - this.log("You lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(losses, 0) + " team members during " + action.name); + this.log("You lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(losses, 0) + " team members during " + action.name); } } } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } break; case ActionTypes["Training"]: this.stamina -= (0.5 * BaseStaminaLoss); - var strExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].strength_exp_mult, - defExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].defense_exp_mult, - dexExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity_exp_mult, - agiExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility_exp_mult, + var strExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult, + defExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult, + dexExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult, + agiExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult, staminaGain = 0.04 * this.skillMultipliers.stamina; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainStrengthExp(strExpGain); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDefenseExp(defExpGain); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDexterityExp(dexExpGain); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainAgilityExp(agiExpGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainStrengthExp(strExpGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainDefenseExp(defExpGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainDexterityExp(dexExpGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainAgilityExp(agiExpGain); this.staminaBonus += (staminaGain); if (this.logging.general) { this.log("Training completed. Gained: " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(strExpGain, 1) + " str exp, " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(defExpGain, 1) + " def exp, " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(dexExpGain, 1) + " dex exp, " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(agiExpGain, 1) + " agi exp, " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(staminaGain, 3) + " max stamina"); + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(strExpGain, 1) + " str exp, " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(defExpGain, 1) + " def exp, " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(dexExpGain, 1) + " dex exp, " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(agiExpGain, 1) + " agi exp, " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(staminaGain, 3) + " max stamina"); } this.startAction(this.action); //Repeat action break; case ActionTypes["FieldAnalysis"]: case ActionTypes["Field Analysis"]: //Does not use stamina. Effectiveness depends on hacking, int, and cha - var eff = 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_skill, 0.3) + - 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].intelligence, 0.9) + - 0.02 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma, 0.3); - eff *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_analysis_mult; + var eff = 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_skill, 0.3) + + 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].intelligence, 0.9) + + 0.02 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma, 0.3); + eff *= _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult; if (isNaN(eff) || eff < 0) { throw new Error("Field Analysis Effectiveness calculated to be NaN or negative"); } - var hackingExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_exp_mult, - charismaExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma_exp_mult; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainHackingExp(hackingExpGain); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainIntelligenceExp(BaseIntGain); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(charismaExpGain); + var hackingExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult, + charismaExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult; + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainHackingExp(hackingExpGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainIntelligenceExp(BaseIntGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainCharismaExp(charismaExpGain); this.changeRank(0.1); console.log("DEBUG: Field Analysis effectiveness is " + (eff * this.skillMultipliers.successChanceEstimate)); this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate); if (this.logging.general) { - this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(charismaExpGain, 1) + " charisma exp"); + this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(charismaExpGain, 1) + " charisma exp"); } this.startAction(this.action); //Repeat action break; @@ -27305,16 +27384,16 @@ Bladeburner.prototype.completeAction = function() { console.log("Bladeburner recruitment success chance: " + successChance); if (Math.random() < successChance) { var expGain = 2 * BaseStatGain * this.actionTimeToComplete; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(expGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainCharismaExp(expGain); ++this.teamSize; if (this.logging.general) { - this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(expGain, 1) + " charisma exp"); + this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(expGain, 1) + " charisma exp"); } } else { var expGain = BaseStatGain * this.actionTimeToComplete; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(expGain); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainCharismaExp(expGain); if (this.logging.general) { - this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(expGain, 1) + " charisma exp"); + this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(expGain, 1) + " charisma exp"); } } this.startAction(this.action); //Repeat action @@ -27333,7 +27412,7 @@ Bladeburner.prototype.completeContract = function(success) { switch (this.action.name) { case "Tracking": //Increase estimate accuracy by a relatively small amount - city.improvePopulationEstimateByCount(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(100, 1e3)); + city.improvePopulationEstimateByCount(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(100, 1e3)); break; case "Bounty Hunter": city.changePopulationByCount(-1, {estChange:-1}); @@ -27366,11 +27445,11 @@ Bladeburner.prototype.completeOperation = function(success) { } else { max = Math.floor(teamCount) } - var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, max); + var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, max); this.teamSize -= losses; this.teamLost += losses; if (this.logging.ops && losses > 0) { - this.log("Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(losses, 0) + " team members during this " + action.name); + this.log("Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(losses, 0) + " team members during this " + action.name); } } @@ -27415,22 +27494,22 @@ Bladeburner.prototype.completeOperation = function(success) { --city.comms; --city.commsEst; } else { - var change = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-3, -1); + var change = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(-3, -1); city.changePopulationByPercentage(change, {nonZero:true}); } - city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5)); + city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(1, 5)); break; case "Stealth Retirement Operation": if (success) { city.changePopulationByPercentage(-0.5, {changeEstEqually:true,nonZero:true}); } - city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-3, -1)); + city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(-3, -1)); break; case "Assassination": if (success) { city.changePopulationByCount(-1, {estChange:-1}); } - city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-5, 5)); + city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(-5, 5)); break; default: throw new Error("Invalid Action name in completeOperation: " + this.action.name); @@ -27438,13 +27517,13 @@ Bladeburner.prototype.completeOperation = function(success) { } Bladeburner.prototype.getRecruitmentTime = function() { - var effCharisma = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma * this.skillMultipliers.effCha; + var effCharisma = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma * this.skillMultipliers.effCha; var charismaFactor = Math.pow(effCharisma, 0.81) + effCharisma / 90; return Math.max(10, Math.round(BaseRecruitmentTimeNeeded - charismaFactor)); } Bladeburner.prototype.getRecruitmentSuccessChance = function() { - return Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma, 0.45) / (this.teamSize + 1); + return Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma, 0.45) / (this.teamSize + 1); } //Process stat gains from Contracts, Operations, and Black Operations @@ -27462,28 +27541,28 @@ Bladeburner.prototype.gainActionStats = function(action, success) { var unweightedGain = time * BaseStatGain * successMult * difficultyMult; var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult; - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainHackingExp(unweightedGain * action.weights.hack * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainStrengthExp(unweightedGain * action.weights.str * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].strength_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDefenseExp(unweightedGain * action.weights.def * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].defense_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDexterityExp(unweightedGain * action.weights.dex * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainAgilityExp(unweightedGain * action.weights.agi * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(unweightedGain * action.weights.cha * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma_exp_mult); - _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainIntelligenceExp(unweightedIntGain * action.weights.int); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainHackingExp(unweightedGain * action.weights.hack * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainStrengthExp(unweightedGain * action.weights.str * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainDefenseExp(unweightedGain * action.weights.def * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainDexterityExp(unweightedGain * action.weights.dex * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainAgilityExp(unweightedGain * action.weights.agi * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainCharismaExp(unweightedGain * action.weights.cha * _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult); + _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].gainIntelligenceExp(unweightedIntGain * action.weights.int); } Bladeburner.prototype.randomEvent = function() { var chance = Math.random(); //Choose random source/destination city for events - var sourceCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)]; + var sourceCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, 5)]; var sourceCity = this.cities[sourceCityName]; if (!(sourceCity instanceof City)) { throw new Error("sourceCity was not a City object in Bladeburner.randomEvent()"); } - var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)]; + var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, 5)]; while (destCityName === sourceCityName) { - destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)]; + destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, 5)]; } var destCity = this.cities[destCityName]; @@ -27494,7 +27573,7 @@ Bladeburner.prototype.randomEvent = function() { if (chance <= 0.05) { //New Synthoid Community, 5% ++sourceCity.comms; - var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100; + var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(10, 20) / 100; var count = Math.round(sourceCity.pop * percentage); sourceCity.pop += count; if (this.logging.events) { @@ -27505,7 +27584,7 @@ Bladeburner.prototype.randomEvent = function() { if (sourceCity.comms <= 0) { //If no comms in source city, then instead trigger a new Synthoid community event ++sourceCity.comms; - var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100; + var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(10, 20) / 100; var count = Math.round(sourceCity.pop * percentage); sourceCity.pop += count; if (this.logging.events) { @@ -27516,7 +27595,7 @@ Bladeburner.prototype.randomEvent = function() { ++destCity.comms; //Change pop - var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100; + var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(10, 20) / 100; var count = Math.round(sourceCity.pop * percentage); sourceCity.pop -= count; destCity.pop += count; @@ -27527,7 +27606,7 @@ Bladeburner.prototype.randomEvent = function() { } } else if (chance <= 0.3) { //New Synthoids (non community), 20% - var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(8, 24) / 100; + var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(8, 24) / 100; var count = Math.round(sourceCity.pop * percentage); sourceCity.pop += count; if (this.logging.events) { @@ -27542,13 +27621,13 @@ Bladeburner.prototype.randomEvent = function() { } else if (chance <= 0.7) { //Synthoid Riots (+chaos), 20% sourceCity.chaos += 1; - sourceCity.chaos *= (1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(5, 10) / 100); + sourceCity.chaos *= (1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(5, 10) / 100); if (this.logging.events) { this.log("Tensions between Synthoids and humans lead to riots in " + sourceCityName + "! Chaos increased"); } } else if (chance <= 0.9) { //Less Synthoids, 20% - var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(5, 20) / 100; + var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(5, 20) / 100; var count = Math.round(sourceCity.pop * percentage); sourceCity.pop -= count; if (this.logging.events) { @@ -27567,19 +27646,19 @@ Bladeburner.prototype.triggerPotentialMigration = function(sourceCityName, chanc } Bladeburner.prototype.triggerMigration = function(sourceCityName) { - var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)]; + var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, 5)]; while (destCityName === sourceCityName) { - destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)]; + destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(0, 5)]; } var destCity = this.cities[destCityName]; var sourceCity = this.cities[sourceCityName]; if (destCity == null || sourceCity == null) { throw new Error("Failed to find City with name: " + destCityName); } - var rand = Math.random(), percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(3, 15) / 100; + var rand = Math.random(), percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(3, 15) / 100; if (rand < 0.05 && sourceCity.comms > 0) { //5% chance for community migration - percentage *= Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(2, 4); //Migration increases population change + percentage *= Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["getRandomInt"])(2, 4); //Migration increases population change --sourceCity.comms; ++destCity.comms; } @@ -27636,21 +27715,21 @@ Bladeburner.prototype.initializeDomElementRefs = function() { } Bladeburner.prototype.createContent = function() { - DomElems.bladeburnerDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.bladeburnerDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { id:"bladeburner-container", position:"fixed", class:"generic-menupage-container", }); //Parent Div for Overview and Console - DomElems.overviewConsoleParentDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.overviewConsoleParentDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { height:"60%", display:"block", position:"relative", }); //Overview and Action/Skill pane - DomElems.overviewDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.overviewDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { width:"30%", display:"inline-block", border:"1px solid white", }); - DomElems.actionAndSkillsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.actionAndSkillsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { height:"60%", width:"70%", display:"block", border:"1px solid white", margin:"6px", padding:"6px", }); @@ -27661,7 +27740,7 @@ Bladeburner.prototype.createContent = function() { this.createActionAndSkillsContent(); //Console - DomElems.consoleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.consoleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-console-div", clickListener:()=>{ if (DomElems.consoleInput instanceof Element) { @@ -27670,11 +27749,11 @@ Bladeburner.prototype.createContent = function() { return false; } }); - DomElems.consoleTable = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("table", {class:"bladeburner-console-table"}); - DomElems.consoleInputRow = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"}); - DomElems.consoleInputCell = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("td", {class:"bladeburner-console-input-cell"}); - DomElems.consoleInputHeader = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", {innerText:"> "}); - DomElems.consoleInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", { + DomElems.consoleTable = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("table", {class:"bladeburner-console-table"}); + DomElems.consoleInputRow = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"}); + DomElems.consoleInputCell = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("td", {class:"bladeburner-console-input-cell"}); + DomElems.consoleInputHeader = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", {innerText:"> "}); + DomElems.consoleInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("input", { type:"text", class:"bladeburner-console-input", tabIndex:1, onfocus:()=>{DomElems.consoleInput.value = DomElems.consoleInput.value} }); @@ -27699,10 +27778,10 @@ Bladeburner.prototype.createContent = function() { Bladeburner.prototype.clearContent = function() { if (DomElems.bladeburnerDiv instanceof Element) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.bladeburnerDiv); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElement"])(DomElems.bladeburnerDiv); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(DomElems.bladeburnerDiv); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElement"])(DomElems.bladeburnerDiv); } - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems); this.initializeDomElementRefs(); } @@ -27711,20 +27790,20 @@ Bladeburner.prototype.createOverviewContent = function() { throw new Error("Bladeburner.createOverviewContent() called with DomElems.overviewDiv = null"); } - DomElems.overviewRank = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewRank = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"Rank: ", display:"inline-block", tooltip:"Your rank within the Bladeburner division", }); - DomElems.overviewStamina = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewStamina = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"inline-block", }); - DomElems.overviewStaminaHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.overviewStaminaHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { innerText:"?", class:"help-tip", clickListener:()=>{ - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Performing actions will use up your stamina.

" + + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Performing actions will use up your stamina.

" + "Your max stamina is determined primarily by your agility stat.

" + "Your stamina gain rate is determined by both your agility and your " + "max stamina. Higher max stamina leads to a higher gain rate.

" + @@ -27738,21 +27817,21 @@ Bladeburner.prototype.createOverviewContent = function() { } }); - DomElems.overviewGen1 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewGen1 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", }); - DomElems.overviewEstPop = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewEstPop = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"Est. Synthoid Population: ", display:"inline-block", tooltip:"This is your Bladeburner division's estimate of how many Synthoids exist " + "in your current city." }); - DomElems.overviewEstPopHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.overviewEstPopHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { innerText:"?", class:"help-tip", clickListener:()=>{ - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("The success rate of your contracts/operations depends on " + + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("The success rate of your contracts/operations depends on " + "the population of Synthoids in your current city. " + "The success rate that is shown to you is only an estimate, " + "and it is based on your Synthoid population estimate.

" + @@ -27767,61 +27846,61 @@ Bladeburner.prototype.createOverviewContent = function() { } }); - DomElems.overviewEstComms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewEstComms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"Est. Synthoid Communities: ", display:"inline-block", tooltip:"This is your Bladeburner divison's estimate of how many Synthoid " + "communities exist in your current city.", }); - DomElems.overviewChaos = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.overviewChaos = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"City Chaos: ", display:"inline-block", tooltip:"The city's chaos level due to tensions and conflicts between humans and Synthoids. " + "Having too high of a chaos level can make contracts and operations harder." }); - DomElems.overviewSkillPoints = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"}); + DomElems.overviewSkillPoints = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", {display:"block"}); - DomElems.overviewAugSuccessMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"}); - DomElems.overviewAugMaxStaminaMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"}); - DomElems.overviewAugStaminaGainMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"}); - DomElems.overviewAugAnalysisMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"}); + DomElems.overviewAugSuccessMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", {display:"block"}); + DomElems.overviewAugMaxStaminaMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", {display:"block"}); + DomElems.overviewAugStaminaGainMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", {display:"block"}); + DomElems.overviewAugAnalysisMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", {display:"block"}); DomElems.overviewDiv.appendChild(DomElems.overviewRank); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 1); DomElems.overviewDiv.appendChild(DomElems.overviewStamina); DomElems.overviewDiv.appendChild(DomElems.overviewStaminaHelpTip); DomElems.overviewDiv.appendChild(DomElems.overviewGen1); DomElems.overviewDiv.appendChild(DomElems.overviewEstPop); DomElems.overviewDiv.appendChild(DomElems.overviewEstPopHelpTip); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 1); DomElems.overviewDiv.appendChild(DomElems.overviewEstComms); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 1); DomElems.overviewDiv.appendChild(DomElems.overviewChaos); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 2); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 2); DomElems.overviewDiv.appendChild(DomElems.overviewSkillPoints); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 1); DomElems.overviewDiv.appendChild(DomElems.overviewAugSuccessMult); DomElems.overviewDiv.appendChild(DomElems.overviewAugMaxStaminaMult); DomElems.overviewDiv.appendChild(DomElems.overviewAugStaminaGainMult); DomElems.overviewDiv.appendChild(DomElems.overviewAugAnalysisMult); //Travel to new city button - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1); - DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(DomElems.overviewDiv, 1); + DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerHTML:"Travel", class:"a-link-button", display:"inline-block", clickListener:()=>{ var popupId = "bladeburner-travel-popup-cancel-btn"; var popupArguments = []; - popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Cancel Button + popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { //Cancel Button innerText:"Cancel", class:"a-link-button", clickListener:()=>{ - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); return false; + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); return false; } })) - popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { //Info Text + popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { //Info Text innerText:"Travel to a different city for your Bladeburner " + "activities. This does not cost any money. The city you are " + "in for your Bladeburner duties does not affect " + @@ -27829,46 +27908,46 @@ Bladeburner.prototype.createOverviewContent = function() { })); for (var i = 0; i < CityNames.length; ++i) { (function(inst, i) { - popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { //Reusing this css class...it adds a border and makes it //so that background color changes when you hover class:"cmpy-mgmt-find-employee-option", innerText:CityNames[i], clickListener:()=>{ inst.city = CityNames[i]; - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); inst.updateOverviewContent(); return false; } })); })(this, i); } - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, popupArguments); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createPopup"])(popupId, popupArguments); } })); //Faction button const bladeburnersFactionName = "Bladeburners"; - if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(bladeburnersFactionName)) { - var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][bladeburnersFactionName]; - if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Faction"])) { + if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["factionExists"])(bladeburnersFactionName)) { + var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Factions"][bladeburnersFactionName]; + if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Faction"])) { throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button"); } - DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Faction", class:"a-link-button", display:"inline-block", tooltip:"Apply to the Bladeburner Faction, or go to the faction page if you are already a member", clickListener:()=>{ if (bladeburnerFac.isMember) { - _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].loadFactionContent(); - Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["displayFactionContent"])(bladeburnersFactionName); + _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionContent(); + Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["displayFactionContent"])(bladeburnersFactionName); } else { if (this.rank >= RankNeededForFaction) { - Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac); - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction"); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.overviewDiv); + Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["joinFaction"])(bladeburnerFac); + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction"); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(DomElems.overviewDiv); this.createOverviewContent(); } else { - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!") + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!") } } return false; @@ -27876,8 +27955,8 @@ Bladeburner.prototype.createOverviewContent = function() { })); } - DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br")); - DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br")); + DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("br")); + DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("br")); this.updateOverviewContent(); } @@ -27885,12 +27964,12 @@ Bladeburner.prototype.createOverviewContent = function() { Bladeburner.prototype.createActionAndSkillsContent = function() { if (DomElems.currentTab == null) {DomElems.currentTab = "general";} - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.generalActions); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.contracts); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.operations); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.blackops); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.skills); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems.generalActions); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems.contracts); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems.operations); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems.blackops); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["clearObject"])(DomElems.skills); //Navigation buttons var currTab = DomElems.currentTab.toLowerCase(); @@ -27898,7 +27977,7 @@ Bladeburner.prototype.createActionAndSkillsContent = function() { for (var i = 0; i < buttons.length; ++i) { (function(buttons, i, inst, currTab) { - DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:buttons[i], class:currTab === buttons[i].toLowerCase() ? "bladeburner-nav-button-inactive" : "bladeburner-nav-button", clickListener:()=>{ @@ -27911,13 +27990,13 @@ Bladeburner.prototype.createActionAndSkillsContent = function() { } //General info/description for each action - DomElems.actionsAndSkillsDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + DomElems.actionsAndSkillsDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", margin:"4px", padding:"4px" }); //List for actions/skills - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList); - DomElems.actionsAndSkillsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("ul"); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList); + DomElems.actionsAndSkillsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("ul"); switch(currTab) { case "general": @@ -27956,7 +28035,7 @@ Bladeburner.prototype.createGeneralActionsContent = function() { for (var actionName in GeneralActions) { if (GeneralActions.hasOwnProperty(actionName)) { - DomElems.generalActions[actionName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.generalActions[actionName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-action", name:actionName }); DomElems.actionsAndSkillsList.appendChild(DomElems.generalActions[actionName]); @@ -27978,7 +28057,7 @@ Bladeburner.prototype.createContractsContent = function() { for (var contractName in this.contracts) { if (this.contracts.hasOwnProperty(contractName)) { - DomElems.contracts[contractName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.contracts[contractName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-action", name:contractName }); DomElems.actionsAndSkillsList.appendChild(DomElems.contracts[contractName]); @@ -28007,7 +28086,7 @@ Bladeburner.prototype.createOperationsContent = function() { for (var operationName in this.operations) { if (this.operations.hasOwnProperty(operationName)) { - DomElems.operations[operationName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.operations[operationName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-action", name:operationName }); DomElems.actionsAndSkillsList.appendChild(DomElems.operations[operationName]); @@ -28040,7 +28119,7 @@ Bladeburner.prototype.createBlackOpsContent = function() { }); for (var i = 0; i < blackops.length; ++i) { - DomElems.blackops[blackops[i].name] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.blackops[blackops[i].name] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-action", name:blackops[i].name }); DomElems.actionsAndSkillsList.appendChild(DomElems.blackops[blackops[i].name]); @@ -28063,7 +28142,7 @@ Bladeburner.prototype.createSkillsContent = function() { for (var i = 0; i < multKeys.length; ++i) { var mult = this.skillMultipliers[multKeys[i]]; if (mult && mult !== 1) { - mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(mult, 3); + mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(mult, 3); switch(multKeys[i]) { case "successChanceAll": DomElems.actionsAndSkillsDesc.innerHTML += "Total Success Chance: x" + mult + "
"; @@ -28124,15 +28203,15 @@ Bladeburner.prototype.createSkillsContent = function() { } //Skill Points - DomElems.skillPointsDisplay = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { - innerHTML:"
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0) + "" + DomElems.skillPointsDisplay = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { + innerHTML:"
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.skillPoints, 0) + "" }); DomElems.actionAndSkillsDiv.appendChild(DomElems.skillPointsDisplay); //UI Element for each skill for (var skillName in Skills) { if (Skills.hasOwnProperty(skillName)) { - DomElems.skills[skillName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", { + DomElems.skills[skillName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("div", { class:"bladeburner-action", name:skillName }); DomElems.actionsAndSkillsList.appendChild(DomElems.skills[skillName]); @@ -28146,25 +28225,25 @@ Bladeburner.prototype.updateContent = function() { } Bladeburner.prototype.updateOverviewContent = function() { - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {return;} - DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.rank, 2); - DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.maxStamina, 3); + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner) {return;} + DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.rank, 2); + DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.maxStamina, 3); DomElems.overviewGen1.innerHTML = - "Stamina Penalty: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%

" + - "Team Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.teamSize, 0) + "
" + - "Team Members Lost: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.teamLost, 0) + "

" + + "Stamina Penalty: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%

" + + "Team Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.teamSize, 0) + "
" + + "Team Members Lost: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.teamLost, 0) + "

" + "Num Times Hospitalized: " + this.numHosp + "
" + - "Money Lost From Hospitalizations: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(this.moneyLost).format("$0.000a") + "

" + + "Money Lost From Hospitalizations: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12___default()(this.moneyLost).format("$0.000a") + "

" + "Current City: " + this.city + "
"; - DomElems.overviewEstPop.childNodes[0].nodeValue = "Est. Synthoid Population: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(this.getCurrentCity().popEst).format("0.000a"); - DomElems.overviewEstComms.childNodes[0].nodeValue = "Est. Synthoid Communities: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.getCurrentCity().comms, 0); - DomElems.overviewChaos.childNodes[0].nodeValue = "City Chaos: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.getCurrentCity().chaos); - DomElems.overviewSkillPoints.innerText = "Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0); - DomElems.overviewAugSuccessMult.innerText = "Aug. Success Chance Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_success_chance_mult*100, 1) + "%"; - DomElems.overviewAugMaxStaminaMult.innerText = "Aug. Max Stamina Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_max_stamina_mult*100, 1) + "%"; - DomElems.overviewAugStaminaGainMult.innerText = "Aug. Stamina Gain Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_stamina_gain_mult*100, 1) + "%"; - DomElems.overviewAugAnalysisMult.innerText = "Aug. Field Analysis Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_analysis_mult*100, 1) + "%"; + DomElems.overviewEstPop.childNodes[0].nodeValue = "Est. Synthoid Population: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_12___default()(this.getCurrentCity().popEst).format("0.000a"); + DomElems.overviewEstComms.childNodes[0].nodeValue = "Est. Synthoid Communities: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.getCurrentCity().comms, 0); + DomElems.overviewChaos.childNodes[0].nodeValue = "City Chaos: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.getCurrentCity().chaos); + DomElems.overviewSkillPoints.innerText = "Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.skillPoints, 0); + DomElems.overviewAugSuccessMult.innerText = "Aug. Success Chance Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult*100, 1) + "%"; + DomElems.overviewAugMaxStaminaMult.innerText = "Aug. Max Stamina Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult*100, 1) + "%"; + DomElems.overviewAugStaminaGainMult.innerText = "Aug. Stamina Gain Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult*100, 1) + "%"; + DomElems.overviewAugAnalysisMult.innerText = "Aug. Field Analysis Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult*100, 1) + "%"; } Bladeburner.prototype.updateActionAndSkillsContent = function() { @@ -28239,7 +28318,7 @@ Bladeburner.prototype.updateActionAndSkillsContent = function() { } break; case "skills": - DomElems.skillPointsDisplay.innerHTML = "
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0) + ""; + DomElems.skillPointsDisplay.innerHTML = "
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.skillPoints, 0) + ""; var skillElems = Object.keys(DomElems.skills); for (var i = 0; i < skillElems.length; ++i) { @@ -28258,26 +28337,26 @@ Bladeburner.prototype.updateActionAndSkillsContent = function() { } Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(el); var isActive = el.classList.contains(ActiveActionCssClass); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { //Header innerText:isActive ? action.name + " (IN PROGRESS - " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeToComplete, 0) + ")" : action.name, display:"inline-block", })); if (isActive) { //Progress bar if its active var progress = this.actionTimeCurrent / this.actionTimeToComplete; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", - innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress}) + innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createProgressBarText"])({progress:progress}) })); } else { //Start button - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Start", class: "a-link-button", margin:"3px", padding:"3px", clickListener:()=>{ @@ -28290,8 +28369,8 @@ Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) { })); } - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { //Info + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", { //Info innerHTML:action.desc, display:"inline-block" })); @@ -28299,26 +28378,26 @@ Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) { } Bladeburner.prototype.updateContractsUIElement = function(el, action) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(el); var isActive = el.classList.contains(ActiveActionCssClass); var estimatedSuccessChance = action.getSuccessChance(this, {est:true}); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { //Header innerText:isActive ? action.name + " (IN PROGRESS - " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeToComplete, 0) + ")" : action.name, display:"inline-block" })); if (isActive) { //Progress bar if its active var progress = this.actionTimeCurrent / this.actionTimeToComplete; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", - innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress}) + innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createProgressBarText"])({progress:progress}) })); } else { //Start button - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Start", class: "a-link-button", padding:"3px", margin:"3px", clickListener:()=>{ @@ -28333,14 +28412,14 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) { //Level and buttons to change level var maxLevel = (action.level >= action.maxLevel); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", { display:"inline-block", innerText:"Level: " + action.level + " / " + action.maxLevel, tooltip:action.getSuccessesNeededForNextLevel(ContractSuccessesPerLevel) + " successes " + "needed for next level" })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑", padding:"2px", margin:"2px", tooltip: isActive ? "WARNING: changing the level will restart the contract" : "", @@ -28352,7 +28431,7 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) { return false; } })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓", padding:"2px", margin:"2px", tooltip: isActive ? "WARNING: changing the level will restart the contract" : "", @@ -28366,25 +28445,25 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) { })); var actionTime = action.getActionTime(this); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { //Info + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", { //Info display:"inline-block", innerHTML:action.desc + "\n\n" + - "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + - "Time Required (s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 0) + "\n" + + "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + + "Time Required (s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(actionTime, 0) + "\n" + "Contracts remaining: " + Math.floor(action.count) + "\n" + "Successes: " + action.successes + "\n" + "Failures: " + action.failures, })); //Autolevel Checkbox - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br")); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("br")); var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox"; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("label", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("label", { for:autolevelCheckboxId, innerText:"Autolevel",color:"white", tooltip:"Automatically increase contract level when possible" })); - var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", { + var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("input", { type:"checkbox", id:autolevelCheckboxId, margin:"4px", checked:action.autoLevel, changeListener:()=>{ @@ -28395,25 +28474,25 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) { } Bladeburner.prototype.updateOperationsUIElement = function(el, action) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(el); var isActive = el.classList.contains(ActiveActionCssClass); var estimatedSuccessChance = action.getSuccessChance(this, {est:true}); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { //Header innerText:isActive ? action.name + " (IN PROGRESS - " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeToComplete, 0) + ")" : action.name, display:"inline-block" })); if (isActive) { //Progress bar if its active var progress = this.actionTimeCurrent / this.actionTimeToComplete; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", - innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress}) + innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createProgressBarText"])({progress:progress}) })); } else { //Start button and set Team Size button - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Start", class: "a-link-button", margin:"3px", padding:"3px", clickListener:()=>{ @@ -28424,57 +28503,57 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) { return false; } })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { - innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button", + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { + innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button", margin:"3px", padding:"3px", clickListener:()=>{ var popupId = "bladeburner-operation-set-team-size-popup"; - var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"Enter the amount of team members you would like to take on these " + "operations. If you do not have the specified number of team members, " + "then as many as possible will be used. Note that team members may " + "be lost during operations." }); - var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", { + var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("input", { type:"number", placeholder: "Team Members" }); - var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Confirm", class:"a-link-button", clickListener:()=>{ var num = Math.round(parseFloat(input.value)); if (isNaN(num)) { - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)") + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)") } else { action.teamCount = num; this.updateOperationsUIElement(el, action); } - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); return false; } }); - var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Cancel", class:"a-link-button", clickListener:()=>{ - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); return false; } }); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]); } })); } //Level and buttons to change level var maxLevel = (action.level >= action.maxLevel); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", { display:"inline-block", innerText:"Level: " + action.level + " / " + action.maxLevel, tooltip:action.getSuccessesNeededForNextLevel(OperationSuccessesPerLevel) + " successes " + "needed for next level" })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑", padding:"2px", margin:"2px", tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "", @@ -28486,7 +28565,7 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) { return false; } })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓", padding:"2px", margin:"2px", tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "", @@ -28502,25 +28581,25 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) { //General Info var difficulty = action.getDifficulty(); var actionTime = action.getActionTime(this); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("pre", { display:"inline-block", innerHTML:action.desc + "\n\n" + - "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + - "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 1) + "\n" + + "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + + "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(actionTime, 1) + "\n" + "Operations remaining: " + Math.floor(action.count) + "\n" + "Successes: " + action.successes + "\n" + "Failures: " + action.failures, })); //Autolevel Checkbox - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br")); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("br")); var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox"; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("label", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("label", { for:autolevelCheckboxId, innerText:"Autolevel",color:"white", tooltip:"Automatically increase operation level when possible" })); - var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", { + var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("input", { type:"checkbox", id:autolevelCheckboxId, margin:"4px", checked:action.autoLevel, changeListener:()=>{ @@ -28531,7 +28610,7 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) { } Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(el); var isActive = el.classList.contains(ActiveActionCssClass); var isCompleted = (this.blackops[action.name] != null); var estimatedSuccessChance = action.getSuccessChance(this, {est:true}); @@ -28541,28 +28620,28 @@ Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) { //UI for Completed Black Op if (isCompleted) { - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { innerText:action.name + " (COMPLETED)", display:"block", })); return; } - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { //Header innerText:isActive ? action.name + " (IN PROGRESS - " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeCurrent, 0) + " / " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.actionTimeToComplete, 0) + ")" : action.name, display:"inline-block", })); if (isActive) { //Progress bar if its active var progress = this.actionTimeCurrent / this.actionTimeToComplete; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", - innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress}) + innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createProgressBarText"])({progress:progress}) })); } else { - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Start button + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { //Start button innerText:"Start", margin:"3px", padding:"3px", class:hasReqdRank ? "a-link-button" : "a-link-button-inactive", clickListener:()=>{ @@ -28573,80 +28652,80 @@ Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) { return false; } })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Set Team Size Button - innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button", + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { //Set Team Size Button + innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button", margin:"3px", padding:"3px", clickListener:()=>{ var popupId = "bladeburner-operation-set-team-size-popup"; - var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { innerText:"Enter the amount of team members you would like to take on this " + "BlackOp. If you do not have the specified number of team members, " + "then as many as possible will be used. Note that team members may " + "be lost during operations." }); - var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", { + var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("input", { type:"number", placeholder: "Team Members" }); - var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Confirm", class:"a-link-button", clickListener:()=>{ var num = Math.round(parseFloat(input.value)); if (isNaN(num)) { - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)") + Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)") } else { action.teamCount = num; this.updateBlackOpsUIElement(el, action); } - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); return false; } }); - var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { + var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { innerText:"Cancel", class:"a-link-button", clickListener:()=>{ - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeElementById"])(popupId); return false; } }); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]); } })); } //Info - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"inline-block", innerHTML:"
" + action.desc + "

", })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", color:hasReqdRank ? "white" : "red", - innerHTML:"Required Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.reqdRank, 0) + "
" + innerHTML:"Required Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(action.reqdRank, 0) + "
" })); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"inline-block", - innerHTML:"Estimated Success Chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + - "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 1), + innerHTML:"Estimated Success Chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" + + "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(actionTime, 1), })) } Bladeburner.prototype.updateSkillsUIElement = function(el, skill) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(el); var skillName = skill.name; var currentLevel = 0; if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var pointCost = skill.baseCost + (currentLevel * skill.costInc); + var pointCost = skill.calculateCost(currentLevel); - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("h2", { //Header innerText:skill.name + " (Lvl " + currentLevel + ")", display:"inline-block" })); var canLevel = this.skillPoints >= pointCost; var maxLvl = skill.maxLvl ? currentLevel >= skill.maxLvl : false; - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Level up button + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("a", { //Level up button innerText:"Level", display:"inline-block", class: canLevel && !maxLvl ? "a-link-button" : "a-link-button-inactive", margin:"3px", padding:"3px", @@ -28658,19 +28737,19 @@ Bladeburner.prototype.updateSkillsUIElement = function(el, skill) { return false; } })); - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["appendLineBreaks"])(el, 2); if (maxLvl) { - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { color:"red", display:"block", innerText:"MAX LEVEL" })); } else { - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { display:"block", - innerText:"Skill Points required: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(pointCost, 0), + innerText:"Skill Points required: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(pointCost, 0), })); } - el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { //Info/Description + el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["createElement"])("p", { //Info/Description innerHTML:skill.desc, display:"inline-block", })); } @@ -28723,7 +28802,7 @@ Bladeburner.prototype.executeConsoleCommands = function(commands) { this.executeConsoleCommand(arrayOfCommands[i]); } } catch(e) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e); + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["exceptionAlert"])(e); } } @@ -28806,10 +28885,10 @@ Bladeburner.prototype.executeAutomateConsoleCommand = function(args) { if (flag.toLowerCase() === "status") { this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled")); if (this.automateEnabled) { - this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.automateThreshLow, 0) + + this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.automateThreshLow, 0) + ", you will automatically switch to " + this.automateActionLow.name + ". When your stamina recovers to " + - Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " + + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " + "switch to " + this.automateActionHigh.name + "."); } @@ -28992,7 +29071,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) { var skill = Skills[skillNames[i]]; var level = 0; if (this.skills[skill.name] != null) {level = this.skills[skill.name];} - this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(level, 0)); + this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(level, 0)); } this.postToConsole(" "); this.postToConsole("Effects: "); @@ -29000,7 +29079,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) { for (var i = 0; i < multKeys.length; ++i) { var mult = this.skillMultipliers[multKeys[i]]; if (mult && mult !== 1) { - mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(mult, 3); + mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(mult, 3); switch(multKeys[i]) { case "successChanceAll": this.postToConsole("Total Success Chance: x" + mult); @@ -29071,20 +29150,20 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) { return this.postToConsole("Invalid skill name (Note that this is case-sensitive): " + skillName); } if (args[1].toLowerCase() === "list") { - this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skills[skill.name]), 0); + this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(this.skills[skill.name]), 0); } else if (args[1].toLowerCase() === "level") { var currentLevel = 0; if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var pointCost = skill.baseCost + (currentLevel * skill.costInc); + var pointCost = skill.calculateCost(currentLevel); if (this.skillPoints >= pointCost) { this.skillPoints -= pointCost; this.upgradeSkill(skill); this.log(skill.name + " upgraded to Level " + this.skills[skillName]); this.createActionAndSkillsContent(); } else { - this.postToConsole("You do not have enough Skill Points to upgrade this. You need " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(pointCost, 0)); + this.postToConsole("You do not have enough Skill Points to upgrade this. You need " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["formatNumber"])(pointCost, 0)); } } else { @@ -29230,24 +29309,25 @@ Bladeburner.prototype.getActionIdFromTypeAndName = function(type="", name="") { } } -Bladeburner.prototype.isContractNameNetscriptFn = function(name) { - return this.contracts.hasOwnProperty(name); +Bladeburner.prototype.getContractNamesNetscriptFn = function(name) { + return Object.keys(this.contracts); } -Bladeburner.prototype.isOperationNameNetscriptFn = function(name) { - return this.operations.hasOwnProperty(name); +Bladeburner.prototype.getOperationNamesNetscriptFn = function(name) { + return Object.keys(this.operations); } -Bladeburner.prototype.isBlackOpNameNetscriptFn = function(name) { - return BlackOperations.hasOwnProperty(name); +Bladeburner.prototype.getBlackOpNamesNetscriptFn = function(name) { + return Object.keys(BlackOperations); } -Bladeburner.prototype.isGeneralActionNameNetscriptFn = function(name) { - return GeneralActions.hasOwnProperty(name); +Bladeburner.prototype.getGeneralActionNamesNetscriptFn = function(name) { + return Object.keys(GeneralActions); } -Bladeburner.prototype.isSkillNameNetscriptFn = function(name) { +Bladeburner.prototype.getSkillNamesNetscriptFn = function(name) { return Skills.hasOwnProperty(name); + return Object.keys(Skills); } Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript) { @@ -29329,7 +29409,7 @@ Bladeburner.prototype.getActionEstimatedSuccessChanceNetscriptFn = function(type case ActionTypes["Operation"]: case ActionTypes["BlackOp"]: case ActionTypes["BlackOperation"]: - return actionObj.getSuccessChance(this); + return actionObj.getSuccessChance(this, {est:true}); case ActionTypes["Training"]: case ActionTypes["Field Analysis"]: case ActionTypes["FieldAnalysis"]: @@ -29405,7 +29485,7 @@ Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var cost = skill.baseCost + (currentLevel * skill.costInc); + var cost = skill.calculateCost(currentLevel); if (this.skillPoints < cost) { if (workerScript.shouldLog("upgradeSkill")) { @@ -29418,7 +29498,7 @@ Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript this.skillPoints -= cost; this.upgradeSkill(skill); - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner && DomElems.currentTab.toLowerCase() === "skills") { + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner && DomElems.currentTab.toLowerCase() === "skills") { this.createActionAndSkillsContent(); } if (workerScript.shouldLog("upgradeSkill")) { @@ -29532,16 +29612,16 @@ Bladeburner.prototype.switchCityNetscriptFn = function(cityName, workerScript) { } Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) { - var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Bladeburners"]; + var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_4__["Factions"]["Bladeburners"]; if (bladeburnerFac.isMember) { return true; } else if (this.rank >= RankNeededForFaction) { - Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac); + Object(_Faction_js__WEBPACK_IMPORTED_MODULE_4__["joinFaction"])(bladeburnerFac); if (workerScript.shouldLog("joinBladeburnerFaction")) { workerScript.log("Joined Bladeburners Faction"); } - if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) { - Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.overviewDiv); + if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Bladeburner) { + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["removeChildrenFromElement"])(DomElems.overviewDiv); this.createOverviewContent(); } return true; @@ -29555,12 +29635,12 @@ Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) } Bladeburner.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Bladeburner", this); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_toJSON"])("Bladeburner", this); } Bladeburner.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Bladeburner, value.data); + return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Generic_fromJSON"])(Bladeburner, value.data); } -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Bladeburner = Bladeburner; +_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_11__["Reviver"].constructors.Bladeburner = Bladeburner; //This initialized Bladeburner-related data that is NOT saved/loaded // eg: Skill Objects, BLack Operations @@ -30686,7 +30766,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Company.js */ 10); /* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Constants.js */ 3); /* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CreateProgram.js */ 16); -/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DarkWeb.js */ 56); +/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DarkWeb.js */ 50); /* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./engine.js */ 5); /* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Gang.js */ 34); /* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Faction.js */ 11); @@ -30701,7 +30781,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./SpecialServerIps.js */ 18); /* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./StockMarket.js */ 20); /* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./Terminal.js */ 21); -/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./TextFile.js */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./TextFile */ 43); +/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptWorker.js */ 19); /* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6); /* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 67); @@ -30844,8 +30925,8 @@ function NetscriptFunctions(workerScript) { workerScript.dynamicRamUsage += ramCost; if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) { throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, - "Dynamic RAM usage calculated to be greater than initial RAM usage. " + - "This is probably because you somehow circumvented the static RAM " + + "Dynamic RAM usage calculated to be greater than initial RAM usage on fn: " + fnName + + ". This is probably because you somehow circumvented the static RAM " + "calculation.

Please don't do that :("); } }; @@ -31542,7 +31623,7 @@ function NetscriptFunctions(workerScript) { return true; } } - var newFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_23__["TextFile"](txtFile.fn, txtFile.text); + var newFile = new _TextFile__WEBPACK_IMPORTED_MODULE_23__["TextFile"](txtFile.fn, txtFile.text); destServer.textFiles.push(newFile); if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) { workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname); @@ -31940,7 +32021,7 @@ function NetscriptFunctions(workerScript) { return true; } } - var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(filename, server); + var txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(filename, server); if (txtFile != null) { return true; } @@ -32395,9 +32476,9 @@ function NetscriptFunctions(workerScript) { if (server == null) { throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev"); } - var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); + var txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); if (txtFile == null) { - txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["createTextFile"])(fn, data, server); + txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_23__["createTextFile"])(fn, data, server); return true; } if (mode === "w") { @@ -32432,7 +32513,7 @@ function NetscriptFunctions(workerScript) { if (server == null) { throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev"); } - var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); + var txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); if (txtFile !== null) { return txtFile.text; } else { @@ -32481,7 +32562,7 @@ function NetscriptFunctions(workerScript) { if (server == null) { throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev"); } - var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); + var txtFile = Object(_TextFile__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server); if (txtFile != null) { txtFile.write(""); } @@ -33911,59 +33992,59 @@ function NetscriptFunctions(workerScript) { //Bladeburner API bladeburner : { - isContractName : function(name) { + getContractNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isContractName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getContractNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isContractName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getContractNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { - return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isContractNameNetscriptFn(name); + return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getContractNamesNetscriptFn(name); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getContractNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isOperationName : function(name) { + getOperationNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isOperationName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getOperationNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isOperationName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getOperationNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { - return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isOperationNameNetscriptFn(name); + return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getOperationNamesNetscriptFn(name); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isOperationName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getOperationNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isBlackOpName : function(name) { + getBlackOpNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isBlackOpName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getBlackOpNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isBlackOpName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getBlackOpNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { - return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isBlackOpNameNetscriptFn(name); + return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getBlackOpNamesNetscriptFn(name); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isBlackOpName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getBlackOpNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isGeneralActionName : function(name) { + getGeneralActionNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isGeneralActionName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getGeneralActionNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isGeneralActionName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getGeneralActionNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { - return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isGeneralActionNameNetscriptFn(name); + return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getGeneralActionNamesNetscriptFn(name); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isGeneralActionName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getGeneralActionNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isSkillName : function(name) { + getSkillNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isSkillName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getSkillNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isSkillName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getSkillNames", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { - return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isSkillNameNetscriptFn(name); + return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getSkillNamesNetscriptFn(name); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isSkillName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getSkillNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, startAction : function(type="", name="") { @@ -33981,15 +34062,15 @@ function NetscriptFunctions(workerScript) { throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "startAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - stopAction : function() { + stopBladeburnerAction : function() { if (workerScript.checkingRam) { - return updateStaticRam("stopAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2); + return updateStaticRam("stopBladeburnerAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2); } - updateDynamicRam("stopAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2); + updateDynamicRam("stopBladeburnerAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2); if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) { return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.resetAction(); } - throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "stopAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "stopBladeburnerAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, getActionTime : function(type="", name="") { @@ -34200,7 +34281,7 @@ function NetscriptFunctions(workerScript) { } throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "joinBladeburnerFaction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); - } + }, } } //End return } //End NetscriptFunction() @@ -42196,7 +42277,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 14); /* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5); /* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player.js */ 0); -/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Prestige.js */ 55); +/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Prestige.js */ 56); /* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceFile.js */ 40); /* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Terminal.js */ 21); /* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); @@ -42409,7 +42490,8 @@ function loadBitVerse(destroyedBitNodeNum, flume=false) { var elemId = "bitnode-" + i.toString(); var elem = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])(elemId); if (elem == null) {return;} - if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || i === 6 || i === 8 || i === 11 || i === 12) { + if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || + i === 6 || i === 7 || i === 8 || i === 11 || i === 12) { elem.addEventListener("click", function() { var bitNodeKey = "BitNode" + i; var bitNode = _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodes"][bitNodeKey]; @@ -53359,6 +53441,17 @@ function applySourceFile(srcFile) { _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= incMult; _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= incMult; break; + case 7: //Bladeburner 2079 + var mult = 0; + for (var i = 0; i < srcFile.lvl; ++i) { + mult += (8 / (Math.pow(2, i))); + } + var incMult = 1 + (mult / 100); + _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bladeburner_max_stamina_mult *= incMult; + _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bladeburner_stamina_gain_mult *= incMult; + _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bladeburner_analysis_mult *= incMult; + _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bladeburner_success_chance_mult *= incMult; + break; case 8: //Ghost of Wall Street var mult = 0; for (var i = 0; i < srcFile.lvl; ++i) { @@ -53739,7 +53832,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 14); /* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5); /* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11); -/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Literature.js */ 51); +/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Literature.js */ 52); /* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Location.js */ 4); /* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player.js */ 0); /* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! decimal.js */ 23); @@ -58670,99 +58763,128 @@ _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Corpo /***/ }), /* 43 */ /*!*************************!*\ - !*** ./src/TextFile.js ***! + !*** ./src/TextFile.ts ***! \*************************/ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFile", function() { return TextFile; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextFile", function() { return getTextFile; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTextFile", function() { return createTextFile; }); -/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Server.js */ 8); -/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); -/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 9); - - - -function TextFile(fn="", txt="") { - this.fn = fn.endsWith(".txt") ? fn : fn + ".txt"; - this.fn = this.fn.replace(/\s+/g, ''); - this.text = String(txt); -} - -TextFile.prototype.append = function(txt) { - this.text += String(txt); -} - -TextFile.prototype.write = function(txt) { - this.text = String(txt); -} - -TextFile.prototype.read = function() { - return this.txt; -} - -TextFile.prototype.show = function() { - Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_1__["dialogBoxCreate"])(this.fn + "

" + this.text, true); -} - -TextFile.prototype.download = function() { - var filename = this.fn; - var file = new Blob([this.text], {type: 'text/plain'}); - if (window.navigator.msSaveOrOpenBlob) {// IE10+ - window.navigator.msSaveOrOpenBlob(file, filename); - } else { // Others - var a = document.createElement("a"), - url = URL.createObjectURL(file); - a.href = url; - a.download = this.fn; - document.body.appendChild(a); - a.click(); - setTimeout(function() { - document.body.removeChild(a); - window.URL.revokeObjectURL(url); - }, 0); +Object.defineProperty(exports, "__esModule", { value: true }); +const DialogBox_1 = __webpack_require__(/*! ../utils/DialogBox */ 7); +const JSONReviver_1 = __webpack_require__(/*! ../utils/JSONReviver */ 9); +/** + * Represents a plain text file that is typically stored on a server. + */ +class TextFile { + /** + * Initiatizes a TextFile from a JSON save state. + */ + static fromJSON(value) { + return JSONReviver_1.Generic_fromJSON(TextFile, value.data); + } + constructor(fn = "", txt = "") { + this.fn = (fn.endsWith(".txt") ? fn : `${fn}.txt`).replace(/\s+/g, ""); + this.text = txt; + } + /** + * Concatenates the raw values to the end of current content. + */ + append(txt) { + this.text += txt; + } + /** + * Serves the file to the user as a downloadable resource through the browser. + */ + download() { + const filename = this.fn; + const file = new Blob([this.text], { type: "text/plain" }); + /* tslint:disable-next-line:strict-boolean-expressions */ + if (window.navigator.msSaveOrOpenBlob) { + // IE10+ + window.navigator.msSaveOrOpenBlob(file, filename); + } + else { + // Others + const a = document.createElement("a"); + const url = URL.createObjectURL(file); + a.href = url; + a.download = this.fn; + document.body.appendChild(a); + a.click(); + setTimeout(() => { + document.body.removeChild(a); + window.URL.revokeObjectURL(url); + }, 0); + } + } + /** + * Retrieve the content of the file. + */ + read() { + return this.text; + } + /** + * Shows the content to the user via the game's dialog box. + */ + show() { + DialogBox_1.dialogBoxCreate(`${this.fn}

${this.text}`, true); + } + /** + * Serialize the current file to a JSON save state. + */ + toJSON() { + return JSONReviver_1.Generic_toJSON("TextFile", this); + } + /** + * Replaces the current content with the text provided. + */ + write(txt) { + this.text = txt; } } - -TextFile.prototype.toJSON = function() { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__["Generic_toJSON"])("TextFile", this); -} - -TextFile.fromJSON = function(value) { - return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__["Generic_fromJSON"])(TextFile, value.data); -} - -_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__["Reviver"].constructors.TextFile = TextFile; - +exports.TextFile = TextFile; +JSONReviver_1.Reviver.constructors.TextFile = TextFile; +/** + * Retrieve the file object for the filename on the specified server. + * @param fn The file name to look for + * @param server The server object to look in + * @returns The file object, or null if it couldn't find it. + */ function getTextFile(fn, server) { - if (!fn.endsWith(".txt")) {fn += ".txt";} - for (var i = 0; i < server.textFiles.length; ++i) { - if (server.textFiles[i].fn === fn) { - return server.textFiles[i]; + const filename = !fn.endsWith(".txt") ? `${fn}.txt` : fn; + for (const file of server.textFiles) { + if (file.fn === filename) { + return file; } } return null; } - -//Returns the TextFile object that was just created +exports.getTextFile = getTextFile; +/** + * Creates a TextFile on the target server. + * @param fn The file name to create. + * @param txt The contents of the file. + * @param server The server that the file should be created on. + * @returns The instance of the file. + */ function createTextFile(fn, txt, server) { if (getTextFile(fn, server) !== null) { - console.log("ERROR: createTextFile failed because the specified " + - "server already has a text file with the same fn"); - return; + // This should probably be a `throw`... + /* tslint:disable-next-line:no-console */ + console.error(`A file named "${fn}" already exists on server ${server.hostname}.`); + return undefined; } - var file = new TextFile(fn, txt); + const file = new TextFile(fn, txt); server.textFiles.push(file); return file; } - +exports.createTextFile = createTextFile; +/* tslint:disable-next-line:no-unused-variable */ function deleteTextFile(fn, server) { - if (!fn.endsWith(".txt")) {fn += ".txt";} - for (var i = 0; i < server.textFiles.length; ++i) { - if (server.textFiles[i].fn === fn) { + const filename = !fn.endsWith(".txt") ? `${fn}.txt` : fn; + /* tslint:disable-next-line:typedef */ + for (let i = 0; i < server.textFiles.length; ++i) { + if (server.textFiles[i].fn === filename) { server.textFiles.splice(i, 1); return true; } @@ -58771,8 +58893,6 @@ function deleteTextFile(fn, server) { } - - /***/ }), /* 44 */ /*!******************************!*\ @@ -58864,7 +58984,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./SpecialServerIps.js */ 18); /* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./StockMarket.js */ 20); /* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7); -/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/GameOptions.js */ 52); +/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/GameOptions.js */ 53); /* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1); /* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 9); /* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); @@ -59368,8 +59488,10 @@ function loadImportedGame(saveObj, saveString) { var time = numCyclesOffline * _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"]._idleSpeed; if (_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].totalPlaytime == null) {_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].totalPlaytime = 0;} if (_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastAug == null) {_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastAug = 0;} + if (_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastBitnode == null) {_Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastBitnode = 0;} _Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].totalPlaytime += time; _Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastAug += time; + _Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].playtimeSinceLastBitnode += time; //Re-apply augmentations _Player_js__WEBPACK_IMPORTED_MODULE_9__["Player"].reapplyAllAugmentations(); @@ -59767,6 +59889,142 @@ function logBoxUpdateText() { /***/ }), /* 50 */ +/*!************************!*\ + !*** ./src/DarkWeb.js ***! + \************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkIfConnectedToDarkweb", function() { return checkIfConnectedToDarkweb; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeDarkwebTerminalCommand", function() { return executeDarkwebTerminalCommand; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DarkWebItems", function() { return DarkWebItems; }); +/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateProgram.js */ 16); +/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0); +/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SpecialServerIps.js */ 18); +/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Terminal.js */ 21); +/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/IPAddress.js */ 15); +/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); + + + + + + + + + +/* DarkWeb.js */ +//Posts a "help" message if connected to DarkWeb +function checkIfConnectedToDarkweb() { + if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"].hasOwnProperty("Darkweb Server")) { + var darkwebIp = _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"]["Darkweb Server"]; + if (!Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__["isValidIPAddress"])(darkwebIp)) {return;} + if (darkwebIp == _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getCurrentServer().ip) { + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You are now connected to the dark web. From the dark web you can purchase illegal items. " + + "Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name] " + + "to purchase an item"); + } + } +} + +//Handler for dark web commands. The terminal's executeCommand() function will pass +//dark web-specific commands into this. It will pass in the raw split command array +//rather than the command string +function executeDarkwebTerminalCommand(commandArray) { + if (commandArray.length == 0) {return;} + switch (commandArray[0]) { + case "buy": + if (commandArray.length != 2) { + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Incorrect number of arguments. Usage: "); + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy -l"); + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy [item name]"); + return; + } + var arg = commandArray[1]; + if (arg == "-l") { + listAllDarkwebItems(); + } else { + buyDarkwebItem(arg); + } + break; + default: + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Command not found"); + break; + } +} + +function listAllDarkwebItems() { + for(const key in DarkWebItems) { + const item = DarkWebItems[key]; + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])(item.toString()); + } +} + +function buyDarkwebItem(itemName) { + itemName = itemName.toLowerCase(); + + // find the program that matches, if any + let item = null; + for(const key in DarkWebItems) { + const i = DarkWebItems[key]; + if(i.program.toLowerCase() == itemName) { + item = i; + } + } + + // return if invalid + if(item === null) { + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Unrecognized item: "+itemName); + return; + } + + // return if the player already has it. + if(_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hasProgram(item.program)) { + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])('You already have the '+item.program+' program'); + return; + } + + // return if the player doesn't have enough money + if(_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.lt(item.price)) { + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + item.program); + return; + } + + // buy and push + _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(item.price); + _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(item.program); + Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])('You have purchased the '+item.program+' program. The new program can be found on your home computer.'); +} + +function DarkWebItem(program, price, description) { + this.program = program; + this.price = price; + this.description = description; +} + +// formats the item for the terminal (eg. "BruteSSH.exe - $500,000 - Opens up SSH Ports") +DarkWebItem.prototype.toString = function() { + return [this.program, "$"+Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["formatNumber"])(this.price), this.description].join(' - '); +} + +const DarkWebItems = { + BruteSSHProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].BruteSSHProgram, 500000, "Opens up SSH Ports"), + FTPCrackProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].FTPCrackProgram, 1500000, "Opens up FTP Ports"), + RelaySMTPProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].RelaySMTPProgram, 5000000, "Opens up SMTP Ports"), + HTTPWormProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].HTTPWormProgram, 30000000, "Opens up HTTP Ports"), + SQLInjectProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].SQLInjectProgram, 250000000, "Opens up SQL Ports"), + DeepscanV1: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV1, 500000, "Enables 'scan-analyze' with a depth up to 5"), + DeepscanV2: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV2, 25000000, "Enables 'scan-analyze' with a depth up to 10"), + AutolinkProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].AutoLink, 1000000, "Enables direct connect via 'scan-analyze'"), +}; + + + + + +/***/ }), +/* 51 */ /*!************************************************************!*\ !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***! \************************************************************/ @@ -59819,7 +60077,7 @@ module.exports = Duplex; /**/ var util = __webpack_require__(/*! core-util-is */ 58); -util.inherits = __webpack_require__(/*! inherits */ 53); +util.inherits = __webpack_require__(/*! inherits */ 54); /**/ var Readable = __webpack_require__(/*! ./_stream_readable */ 113); @@ -59899,7 +60157,7 @@ function forEach(xs, f) { } /***/ }), -/* 51 */ +/* 52 */ /*!***************************!*\ !*** ./src/Literature.js ***! \***************************/ @@ -60345,7 +60603,7 @@ function initLiterature() { /***/ }), -/* 52 */ +/* 53 */ /*!******************************!*\ !*** ./utils/GameOptions.js ***! \******************************/ @@ -60404,7 +60662,7 @@ function gameOptionsBoxOpen() { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39))) /***/ }), -/* 53 */ +/* 54 */ /*!***************************************************!*\ !*** ./node_modules/inherits/inherits_browser.js ***! \***************************************************/ @@ -60436,7 +60694,7 @@ if (typeof Object.create === 'function') { /***/ }), -/* 54 */ +/* 55 */ /*!****************************************!*\ !*** ./node_modules/jszip/lib/utf8.js ***! \****************************************/ @@ -60721,7 +60979,7 @@ exports.Utf8EncodeWorker = Utf8EncodeWorker; /***/ }), -/* 55 */ +/* 56 */ /*!*************************!*\ !*** ./src/Prestige.js ***! \*************************/ @@ -61069,141 +61327,6 @@ function prestigeSourceFile() { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39))) -/***/ }), -/* 56 */ -/*!************************!*\ - !*** ./src/DarkWeb.js ***! - \************************/ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkIfConnectedToDarkweb", function() { return checkIfConnectedToDarkweb; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeDarkwebTerminalCommand", function() { return executeDarkwebTerminalCommand; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DarkWebItems", function() { return DarkWebItems; }); -/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateProgram.js */ 16); -/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0); -/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SpecialServerIps.js */ 18); -/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Terminal.js */ 21); -/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/IPAddress.js */ 15); -/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2); - - - - - - - - - -/* DarkWeb.js */ -//Posts a "help" message if connected to DarkWeb -function checkIfConnectedToDarkweb() { - if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"].hasOwnProperty("Darkweb Server")) { - var darkwebIp = _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"]["Darkweb Server"]; - if (!Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__["isValidIPAddress"])(darkwebIp)) {return;} - if (darkwebIp == _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getCurrentServer().ip) { - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You are now connected to the dark web. From the dark web you can purchase illegal items. " + - "Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name] " + - "to purchase an item"); - } - } -} - -//Handler for dark web commands. The terminal's executeCommand() function will pass -//dark web-specific commands into this. It will pass in the raw split command array -//rather than the command string -function executeDarkwebTerminalCommand(commandArray) { - if (commandArray.length == 0) {return;} - switch (commandArray[0]) { - case "buy": - if (commandArray.length != 2) { - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Incorrect number of arguments. Usage: "); - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy -l"); - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy [item name]"); - return; - } - var arg = commandArray[1]; - if (arg == "-l") { - listAllDarkwebItems(); - } else { - buyDarkwebItem(arg); - } - break; - default: - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Command not found"); - break; - } -} - -function listAllDarkwebItems() { - for(const key in DarkWebItems) { - const item = DarkWebItems[key]; - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])(item.toString()); - } -} - -function buyDarkwebItem(itemName) { - itemName = itemName.toLowerCase(); - - // find the program that matches, if any - let item = null; - for(const key in DarkWebItems) { - const i = DarkWebItems[key]; - if(i.program.toLowerCase() == itemName) { - item = i; - } - } - - // return if invalid - if(item === null) { - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Unrecognized item: "+itemName); - return; - } - - // return if the player already has it. - if(_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hasProgram(item.program)) { - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])('You already have the '+item.program+' program'); - return; - } - - // return if the player doesn't have enough money - if(_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.lt(item.price)) { - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + item.program); - return; - } - - // buy and push - _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(item.price); - _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(item.program); - Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])('You have purchased the '+item.program+' program. The new program can be found on your home computer.'); -} - -function DarkWebItem(program, price, description) { - this.program = program; - this.price = price; - this.description = description; -} - -// formats the item for the terminal (eg. "BruteSSH.exe - $500,000 - Opens up SSH Ports") -DarkWebItem.prototype.toString = function() { - return [this.program, "$"+Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["formatNumber"])(this.price), this.description].join(' - '); -} - -const DarkWebItems = { - BruteSSHProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].BruteSSHProgram, 500000, "Opens up SSH Ports"), - FTPCrackProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].FTPCrackProgram, 1500000, "Opens up FTP Ports"), - RelaySMTPProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].RelaySMTPProgram, 5000000, "Opens up SMTP Ports"), - HTTPWormProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].HTTPWormProgram, 30000000, "Opens up HTTP Ports"), - SQLInjectProgram: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].SQLInjectProgram, 250000000, "Opens up SQL Ports"), - DeepscanV1: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV1, 500000, "Enables 'scan-analyze' with a depth up to 5"), - DeepscanV2: new DarkWebItem(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV2, 25000000, "Enables 'scan-analyze' with a depth up to 10"), -}; - - - - - /***/ }), /* 57 */ /*!********************************************!*\ @@ -64000,231 +64123,225 @@ function cinematicTextEnd() { /***/ }), /* 69 */ /*!*************************!*\ - !*** ./src/HelpText.js ***! + !*** ./src/HelpText.ts ***! \*************************/ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TerminalHelpText", function() { return TerminalHelpText; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HelpTexts", function() { return HelpTexts; }); -/* HelpText.js */ -let TerminalHelpText = - "Type 'help name' to learn more about the command 'name'

" + - 'alias [-g] [name="value"] Create or display Terminal aliases
' + - "analyze Get information about the current machine
" + - "buy [-l/program] Purchase a program through the Dark Web
" + - "cat [file] Display a .msg, .lit, or .txt file
" + - "check [script] [args...] Print a script's logs to Terminal
" + - "clear Clear all text on the terminal
" + - "cls See 'clear' command
" + - "connect [ip/hostname] Connects to a remote server
" + - "download [script/text file] Downloads scripts or text files to your computer
" + - "free Check the machine's memory (RAM) usage
" + - "hack Hack the current machine
" + - "help [command] Display this help text, or the help text for a command
" + - "home Connect to home computer
" + - "hostname Displays the hostname of the machine
" + - "ifconfig Displays the IP address of the machine
" + - "kill [script] [args...] Stops the specified script on the current server
" + - "killall Stops all running scripts on the current machine
" + - "ls [| grep pattern] Displays all files on the machine
" + - "lscpu Displays the number of CPU cores on the machine
" + - "mem [script] [-t] [n] Displays the amount of RAM required to run the script
" + - "nano [file] Text editor - Open up and edit a script or text file
" + - "ps Display all scripts that are currently running
" + - "rm [file] Delete a file from the server
" + - "run [name] [-t] [n] [args...] Execute a program or script
" + - "scan Prints all immediately-available network connections
" + - "scan-analyze [d] [-a] Prints info for all servers up to d nodes away
" + - "scp [file] [server] Copies a file to a destination server
" + - "sudov Shows whether you have root access on this computer
" + - "tail [script] [args...] Displays dynamic logs for the specified script
" + - "theme [preset] | bg txt hlgt Change the color scheme of the UI
" + - "top Displays all running scripts and their RAM usage
" + - 'unalias "[alias name]" Deletes the specified alias
'; -let HelpTexts = { - alias: 'alias [-g] [name="value"]
' + - "Create or display aliases. An alias enables a replacement of a word with another string. " + - "It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME " + - "of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, " + - "you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following:

" + - 'alias nuke="run NUKE.exe"

' + - "Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. " + - "It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For " + - "example, if the following alias was set:

" + - 'alias worm="HTTPWorm.exe"

' + - "and then you tried to run the following terminal command:

" + - "run worm

" + - "This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted " + - "anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag:

" + - 'alias -g worm="HTTPWorm.exe"

' + - "Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command.

" + - "Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form " + - "'alias NAME=VALUE' on the Terminal.

" + - "The 'unalias' command can be used to remove aliases.

", - analyze: "analze
" + - "Prints details and statistics about the current server. The information that is printed includes basic " + - "server details such as the hostname, whether the player has root access, what ports are opened/closed, and also " + - "hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is " + - "available on the server, etc.", - buy: "buy [-l / program]
" + - "Purchase a program through the Dark Web. Requires a TOR router to use.

" + - "If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the " + - "dark web to the Terminal, as well as their costs.

" + - "Otherwise, the name of the program must be passed in as a parameter. This is name is NOT case-sensitive.", - cat: "cat [file]
" + - "Display message (.msg), literature (.lit), or text (.txt) files. Examples:

" + - "cat j1.msg
" + - "cat foo.lit
" + - "cat servers.txt", - check: "check [script name] [args...]
" + - "Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by " + - "a space. Remember that a running script is uniquely " + - "identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments:

" + - "run foo.script 1 2 foodnstuff

" + - "Then to run the 'check' command on this script you would have to pass the same arguments in:

" + - "check foo.script 1 2 foodnstuff", - clear: "clear
" + - "Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up " + - "and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command", - cls: "cls
" + - "Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up " + - "and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command", - connect: "connect [hostname/ip]
" + - "Connect to a remote server. The hostname or IP address of the remote server must be given as the argument " + - "to this command. Note that only servers that are immediately adjacent to the current server in the network can be connected to. To " + - "see which servers can be connected to, use the 'scan' command.", - download: "download [script/text file]
" + - "Downloads a script or text file to your computer (like your real life computer).
" + - "You can also download all of your scripts/text files as a zip file using the following Terminal commands:

" + - "Download all scripts and text files: download *
" + - "Download all scripts: download *.script
" + - "Download all text files: download *.txt
", - free: "free
" + - "Display's the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as " + - "how much of it is being used.", - hack: "hack
" + - "Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics
", - help: "help [command]
" + - "Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief " + - "description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print " + - "more detailed information about the Terminal command. Examples:

" + - "help alias
" + - "help scan-analyze", - home: "home
" + - "Connect to your home computer. This will work no matter what server you are currently connected to.", - hostname: "hostname
" + - "Prints the hostname of the current server", - ifconfig: "ipconfig
" + - "Prints the IP address of the current server", - kill: "kill [script name] [args...]
" + - "Kill the script specified by the script name and arguments. Each argument must be separated by " + - "a space. Remember that a running script is uniquely identified by " + - "both its name and the arguments that are used to start it. So, if a script was ran with the following arguments:

" + - "run foo.script 1 sigma-cosmetics

" + - "Then to kill this script the same arguments would have to be used:

" + - "kill foo.script 1 sigma-cosmetics

" + - "Note that after issuing the 'kill' command for a script, it may take a while for the script to actually stop running. " + - "This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. " + - "The script will not be stopped/killed until after that time has elapsed.", - killall: "killall
" + - "Kills all scripts on the current server. " + - "Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. " + - "This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. " + - "The script will not be stopped/killed until after that time has elapsed.", - ls: "ls [| grep pattern]
" + - "The ls command, with no arguments, prints all files on the current server to the Terminal screen. " + - "This includes all scripts, programs, and message files. " + - "The files will be displayed in alphabetical order.

" + - "The '| grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern. " + - "For example, if you wanted to only display files with the .script extension, you could use:

" + - "ls | grep .script

" + - "Alternatively, if you wanted to display all files with the word purchase in the filename, you could use:

" + - "ls | grep purchase", - lscpu: "lscpu
" + - "Prints the number of CPU Cores the current server has", - mem: "mem [script name] [-t] [num threads]
" + - "Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print " + - "the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then " + - "an argument for the number of threads must be passed in afterwards. Examples:

" + - "mem foo.script
" + - "mem foo.script -t 50
" + - "The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example " + - "above will print the amount of RAM needed to run 'foo.script' with 50 threads.", - nano: "nano [file name]
" + - "Opens up the specified file in the Text Editor. Only scripts (.script) or text files (.txt) can be " + - "edited using the Text Editor. If the file does not already exist, then a new, empty one " + - "will be created", - ps: "ps
" + - "Prints all scripts that are running on the current server", - rm: "rm [file]
" + - "Removes the specified file from the current server. A file can be a script, a program, or a message file.

" + - "WARNING: This is permanent and cannot be undone", - run: "run [file name] [-t] [num threads] [args...]
" + - "Execute a program or a script.

" + - "The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used " + - "to indicate that the script should be run with the specified number of threads. If the flag is omitted, " + - "then the script will be run with a single thread by default. " + - "If the '-t' flag is used, then it MUST come immediately " + - "after the script name, and the [num threads] argument MUST come immediately afterwards.

" + - "[args...] represents a variable number of arguments that will be passed into the script. See the documentation " + - "about script arguments. Each specified argument must be separated by a space.

", - scan: "scan
" + - "Prints all immediately-available network connection. This will print a list of all servers that you can currently connect " + - "to using the 'connect' Terminal command.", +Object.defineProperty(exports, "__esModule", { value: true }); +/* tslint:disable:max-line-length completed-docs variable-name*/ +exports.TerminalHelpText = "Type 'help name' to learn more about the command 'name'

" + + 'alias [-g] [name="value"] Create or display Terminal aliases
' + + "analyze Get information about the current machine
" + + "buy [-l/program] Purchase a program through the Dark Web
" + + "cat [file] Display a .msg, .lit, or .txt file
" + + "check [script] [args...] Print a script's logs to Terminal
" + + "clear Clear all text on the terminal
" + + "cls See 'clear' command
" + + "connect [ip/hostname] Connects to a remote server
" + + "download [script/text file] Downloads scripts or text files to your computer
" + + "free Check the machine's memory (RAM) usage
" + + "hack Hack the current machine
" + + "help [command] Display this help text, or the help text for a command
" + + "home Connect to home computer
" + + "hostname Displays the hostname of the machine
" + + "ifconfig Displays the IP address of the machine
" + + "kill [script] [args...] Stops the specified script on the current server
" + + "killall Stops all running scripts on the current machine
" + + "ls [| grep pattern] Displays all files on the machine
" + + "lscpu Displays the number of CPU cores on the machine
" + + "mem [script] [-t] [n] Displays the amount of RAM required to run the script
" + + "nano [file] Text editor - Open up and edit a script or text file
" + + "ps Display all scripts that are currently running
" + + "rm [file] Delete a file from the server
" + + "run [name] [-t] [n] [args...] Execute a program or script
" + + "scan Prints all immediately-available network connections
" + + "scan-analyze [d] [-a] Prints info for all servers up to d nodes away
" + + "scp [file] [server] Copies a file to a destination server
" + + "sudov Shows whether you have root access on this computer
" + + "tail [script] [args...] Displays dynamic logs for the specified script
" + + "theme [preset] | bg txt hlgt Change the color scheme of the UI
" + + "top Displays all running scripts and their RAM usage
" + + 'unalias "[alias name]" Deletes the specified alias
'; +exports.HelpTexts = { + alias: 'alias [-g] [name="value"]
' + + "Create or display aliases. An alias enables a replacement of a word with another string. " + + "It can be used to abbreviate a commonly used command, or commonly used parts of a command. The NAME " + + "of an alias defines the word that will be replaced, while the VALUE defines what it will be replaced by. For example, " + + "you could create the alias 'nuke' for the Terminal command 'run NUKE.exe' using the following:

" + + 'alias nuke="run NUKE.exe"

' + + "Then, to run the NUKE.exe program you would just have to enter 'nuke' in Terminal rather than the full command. " + + "It is important to note that 'default' aliases will only be substituted for the first word of a Terminal command. For " + + "example, if the following alias was set:

" + + 'alias worm="HTTPWorm.exe"

' + + "and then you tried to run the following terminal command:

" + + "run worm

" + + "This would fail because the worm alias is not the first word of a Terminal command. To allow an alias to be substituted " + + "anywhere in a Terminal command, rather than just the first word, you must set it to be a global alias using the -g flag:

" + + 'alias -g worm="HTTPWorm.exe"

' + + "Now, the 'worm' alias will be substituted anytime it shows up as an individual word in a Terminal command.

" + + "Entering just the command 'alias' without any arguments prints the list of all defined aliases in the reusable form " + + "'alias NAME=VALUE' on the Terminal.

" + + "The 'unalias' command can be used to remove aliases.

", + analyze: "analze
" + + "Prints details and statistics about the current server. The information that is printed includes basic " + + "server details such as the hostname, whether the player has root access, what ports are opened/closed, and also " + + "hacking-related information such as an estimated chance to successfully hack, an estimate of how much money is " + + "available on the server, etc.", + buy: "buy [-l / program]
" + + "Purchase a program through the Dark Web. Requires a TOR router to use.

" + + "If this command is ran with the '-l' flag, it will display a list of all programs that can be bought through the " + + "dark web to the Terminal, as well as their costs.

" + + "Otherwise, the name of the program must be passed in as a parameter. This is name is NOT case-sensitive.", + cat: "cat [file]
" + + "Display message (.msg), literature (.lit), or text (.txt) files. Examples:

" + + "cat j1.msg
" + + "cat foo.lit
" + + "cat servers.txt", + check: "check [script name] [args...]
" + + "Print the logs of the script specified by the script name and arguments to the Terminal. Each argument must be separated by " + + "a space. Remember that a running script is uniquely " + + "identified both by its name and the arguments that are used to start it. So, if a script was ran with the following arguments:

" + + "run foo.script 1 2 foodnstuff

" + + "Then to run the 'check' command on this script you would have to pass the same arguments in:

" + + "check foo.script 1 2 foodnstuff", + clear: "clear
" + + "Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up " + + "and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'cls' command", + cls: "cls
" + + "Clear the Terminal screen, deleting all of the text. Note that this does not delete the user's command history, so using the up " + + "and down arrow keys is still valid. Also note that this is permanent and there is no way to undo this. Synonymous with 'clear' command", + connect: "connect [hostname/ip]
" + + "Connect to a remote server. The hostname or IP address of the remote server must be given as the argument " + + "to this command. Note that only servers that are immediately adjacent to the current server in the network can be connected to. To " + + "see which servers can be connected to, use the 'scan' command.", + download: "download [script/text file]
" + + "Downloads a script or text file to your computer (like your real life computer).
" + + "You can also download all of your scripts/text files as a zip file using the following Terminal commands:

" + + "Download all scripts and text files: download *
" + + "Download all scripts: download *.script
" + + "Download all text files: download *.txt
", + free: "free
" + + "Display's the memory usage on the current machine. Print the amount of RAM that is available on the current server as well as " + + "how much of it is being used.", + hack: "hack
" + + "Attempt to hack the current server. Requires root access in order to be run. See the wiki page for hacking mechanics
", + help: "help [command]
" + + "Display Terminal help information. Without arguments, 'help' prints a list of all valid Terminal commands and a brief " + + "description of their functionality. You can also pass the name of a Terminal command as an argument to 'help' to print " + + "more detailed information about the Terminal command. Examples:

" + + "help alias
" + + "help scan-analyze", + home: "home
" + + "Connect to your home computer. This will work no matter what server you are currently connected to.", + hostname: "hostname
" + + "Prints the hostname of the current server", + ifconfig: "ipconfig
" + + "Prints the IP address of the current server", + kill: "kill [script name] [args...]
" + + "Kill the script specified by the script name and arguments. Each argument must be separated by " + + "a space. Remember that a running script is uniquely identified by " + + "both its name and the arguments that are used to start it. So, if a script was ran with the following arguments:

" + + "run foo.script 1 sigma-cosmetics

" + + "Then to kill this script the same arguments would have to be used:

" + + "kill foo.script 1 sigma-cosmetics

" + + "Note that after issuing the 'kill' command for a script, it may take a while for the script to actually stop running. " + + "This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. " + + "The script will not be stopped/killed until after that time has elapsed.", + killall: "killall
" + + "Kills all scripts on the current server. " + + "Note that after the 'kill' command is issued for a script, it may take a while for the script to actually stop running. " + + "This will happen if the script is in the middle of a command such as grow() or weaken() that takes time to execute. " + + "The script will not be stopped/killed until after that time has elapsed.", + ls: "ls [| grep pattern]
" + + "The ls command, with no arguments, prints all files on the current server to the Terminal screen. " + + "This includes all scripts, programs, and message files. " + + "The files will be displayed in alphabetical order.

" + + "The '| grep pattern' optional parameter can be used to only display files whose filenames match the specified pattern. " + + "For example, if you wanted to only display files with the .script extension, you could use:

" + + "ls | grep .script

" + + "Alternatively, if you wanted to display all files with the word purchase in the filename, you could use:

" + + "ls | grep purchase", + lscpu: "lscpu
" + + "Prints the number of CPU Cores the current server has", + mem: "mem [script name] [-t] [num threads]
" + + "Displays the amount of RAM needed to run the specified script with a single thread. The command can also be used to print " + + "the amount of RAM needed to run a script with multiple threads using the '-t' flag. If the '-t' flag is specified, then " + + "an argument for the number of threads must be passed in afterwards. Examples:

" + + "mem foo.script
" + + "mem foo.script -t 50
" + + "The first example above will print the amount of RAM needed to run 'foo.script' with a single thread. The second example " + + "above will print the amount of RAM needed to run 'foo.script' with 50 threads.", + nano: "nano [file name]
" + + "Opens up the specified file in the Text Editor. Only scripts (.script) or text files (.txt) can be " + + "edited using the Text Editor. If the file does not already exist, then a new, empty one " + + "will be created", + ps: "ps
" + + "Prints all scripts that are running on the current server", + rm: "rm [file]
" + + "Removes the specified file from the current server. A file can be a script, a program, or a message file.

" + + "WARNING: This is permanent and cannot be undone", + run: "run [file name] [-t] [num threads] [args...]
" + + "Execute a program or a script.

" + + "The '[-t]', '[num threads]', and '[args...]' arguments are only valid when running a script. The '-t' flag is used " + + "to indicate that the script should be run with the specified number of threads. If the flag is omitted, " + + "then the script will be run with a single thread by default. " + + "If the '-t' flag is used, then it MUST come immediately " + + "after the script name, and the [num threads] argument MUST come immediately afterwards.

" + + "[args...] represents a variable number of arguments that will be passed into the script. See the documentation " + + "about script arguments. Each specified argument must be separated by a space.

", + scan: "scan
" + + "Prints all immediately-available network connection. This will print a list of all servers that you can currently connect " + + "to using the 'connect' Terminal command.", "scan-analyze": "scan-analyze [depth] [-a]
" + - "Prints detailed information about all servers up to [depth] nodes away on the network. Calling " + - "'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal " + - "command. This command also shows the relative paths to reach each server.

" + - "By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have " + - "the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to " + - "5 and 10, respectively.

" + - "The information 'scan-analyze' displays about each server includes whether or not you have root access to it, " + - "its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM " + - "it has.

" + - "By default, this command will not display servers that you have purchased. However, you can pass in the " + - "-a flag at the end of the command if you would like to enable that.", - scp: "scp [filename] [target server]
" + - "Copies the specified file from the current server to the target server. " + - "This command only works for script files (.script extension), literature files (.lit extension), " + - "and text files (.txt extension). " + - "The second argument passed in must be the hostname or IP of the target server.", - sudov: "sudov
" + - "Prints whether or not you have root access to the current machine", - tail: "tail [script name] [args...]
" + - "Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated " + - "by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used " + - "to run it. So, if a script was ran with the following arguments:

" + - "run foo.script 10 50000

" + - "Then in order to check its logs with 'tail' the same arguments must be used:

" + - "tail foo.script 10 50000", - theme: "theme [preset] | [#background #text #highlight]
" + - "Change the color of the game's user interface

" + - "This command can be called with a preset theme. Currently, the supported presets are 'default', 'muted', and 'solarized'. " + - "However, you can also specify your own color scheme using hex values. To do so, you must specify three hex color values " + - "for the background color, the text color, and the highlight color. These hex values must be preceded by a pound sign (#) and " + - "must be either 3 or 6 digits. Example:

" + - "theme #ffffff #385 #235012

" + - "A color picker such as " + - "Google's " + - "can be used to get your desired hex color values

" + - "Themes are not saved, so when the game is closed and then re-opened or reloaded then it will revert back to the default theme.", - top: "top
" + - "Prints a list of all scripts running on the current server as well as their thread count and how much " + - "RAM they are using in total.", - unalias: 'unalias "[alias name]"
' + - "Deletes the specified alias. Note that the double quotation marks are required.

" + - "As an example, if an alias was declared using:

" + - 'alias r="run"

' + - "Then it could be removed using:

" + - 'unalias "r"

' + - "It is not necessary to differentiate between global and non-global aliases when using 'unalias'", - -} - - + "Prints detailed information about all servers up to [depth] nodes away on the network. Calling " + + "'scan-analyze 1' will display information for the same servers that are shown by the 'scan' Terminal " + + "command. This command also shows the relative paths to reach each server.

" + + "By default, the maximum depth that can be specified for 'scan-analyze' is 3. However, once you have " + + "the DeepscanV1.exe and DeepscanV2.exe programs, you can execute 'scan-analyze' with a depth up to " + + "5 and 10, respectively.

" + + "The information 'scan-analyze' displays about each server includes whether or not you have root access to it, " + + "its required hacking level, the number of open ports required to run NUKE.exe on it, and how much RAM " + + "it has.

" + + "By default, this command will not display servers that you have purchased. However, you can pass in the " + + "-a flag at the end of the command if you would like to enable that.", + scp: "scp [filename] [target server]
" + + "Copies the specified file from the current server to the target server. " + + "This command only works for script files (.script extension), literature files (.lit extension), " + + "and text files (.txt extension). " + + "The second argument passed in must be the hostname or IP of the target server.", + sudov: "sudov
" + + "Prints whether or not you have root access to the current machine", + tail: "tail [script name] [args...]
" + + "Displays dynamic logs for the script specified by the script name and arguments. Each argument must be separated " + + "by a space. Remember that a running script is uniquely identified by both its name and the arguments that were used " + + "to run it. So, if a script was ran with the following arguments:

" + + "run foo.script 10 50000

" + + "Then in order to check its logs with 'tail' the same arguments must be used:

" + + "tail foo.script 10 50000", + theme: "theme [preset] | [#background #text #highlight]
" + + "Change the color of the game's user interface

" + + "This command can be called with a preset theme. Currently, the supported presets are 'default', 'muted', and 'solarized'. " + + "However, you can also specify your own color scheme using hex values. To do so, you must specify three hex color values " + + "for the background color, the text color, and the highlight color. These hex values must be preceded by a pound sign (#) and " + + "must be either 3 or 6 digits. Example:

" + + "theme #ffffff #385 #235012

" + + "A color picker such as " + + "Google's " + + "can be used to get your desired hex color values

" + + "Themes are not saved, so when the game is closed and then re-opened or reloaded then it will revert back to the default theme.", + top: "top
" + + "Prints a list of all scripts running on the current server as well as their thread count and how much " + + "RAM they are using in total.", + unalias: 'unalias "[alias name]"
' + + "Deletes the specified alias. Note that the double quotation marks are required.

" + + "As an example, if an alias was declared using:

" + + 'alias r="run"

' + + "Then it could be removed using:

" + + 'unalias "r"

' + + "It is not necessary to differentiate between global and non-global aliases when using 'unalias'", +}; /***/ }), @@ -64542,7 +64659,7 @@ Writable.WritableState = WritableState; /**/ var util = __webpack_require__(/*! core-util-is */ 58); -util.inherits = __webpack_require__(/*! inherits */ 53); +util.inherits = __webpack_require__(/*! inherits */ 54); /**/ /**/ @@ -64575,7 +64692,7 @@ util.inherits(Writable, Stream); function nop() {} function WritableState(options, stream) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 50); + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 51); options = options || {}; @@ -64725,7 +64842,7 @@ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.protot } function Writable(options) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 50); + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 51); // Writable ctor is applied to Duplexes, too. // `realHasInstance` is necessary because using plain `instanceof` @@ -65165,7 +65282,7 @@ exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ exports.Stream = exports; exports.Readable = exports; exports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ 78); -exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ 50); +exports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ 51); exports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ 108); exports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ 174); @@ -71214,11 +71331,11 @@ exports.decode = function(input) { module.exports = Transform; -var Duplex = __webpack_require__(/*! ./_stream_duplex */ 50); +var Duplex = __webpack_require__(/*! ./_stream_duplex */ 51); /**/ var util = __webpack_require__(/*! core-util-is */ 58); -util.inherits = __webpack_require__(/*! inherits */ 53); +util.inherits = __webpack_require__(/*! inherits */ 54); /**/ util.inherits(Transform, Duplex); @@ -71884,7 +72001,7 @@ function _isUint8Array(obj) { /**/ var util = __webpack_require__(/*! core-util-is */ 58); -util.inherits = __webpack_require__(/*! inherits */ 53); +util.inherits = __webpack_require__(/*! inherits */ 54); /**/ /**/ @@ -71918,7 +72035,7 @@ function prependListener(emitter, event, fn) { } function ReadableState(options, stream) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 50); + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 51); options = options || {}; @@ -71995,7 +72112,7 @@ function ReadableState(options, stream) { } function Readable(options) { - Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 50); + Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ 51); if (!(this instanceof Readable)) return new Readable(options); @@ -79703,7 +79820,7 @@ var readerFor = __webpack_require__(/*! ./reader/readerFor */ 90); var utils = __webpack_require__(/*! ./utils */ 31); var CompressedObject = __webpack_require__(/*! ./compressedObject */ 75); var crc32fn = __webpack_require__(/*! ./crc32 */ 74); -var utf8 = __webpack_require__(/*! ./utf8 */ 54); +var utf8 = __webpack_require__(/*! ./utf8 */ 55); var compressions = __webpack_require__(/*! ./compressions */ 97); var support = __webpack_require__(/*! ./support */ 48); @@ -80082,7 +80199,7 @@ var readerFor = __webpack_require__(/*! ./reader/readerFor */ 90); var utils = __webpack_require__(/*! ./utils */ 31); var sig = __webpack_require__(/*! ./signature */ 91); var ZipEntry = __webpack_require__(/*! ./zipEntry */ 133); -var utf8 = __webpack_require__(/*! ./utf8 */ 54); +var utf8 = __webpack_require__(/*! ./utf8 */ 55); var support = __webpack_require__(/*! ./support */ 48); // class ZipEntries {{{ /** @@ -80352,7 +80469,7 @@ module.exports = ZipEntries; var utils = __webpack_require__(/*! ./utils */ 31); var external = __webpack_require__(/*! ./external */ 57); -var utf8 = __webpack_require__(/*! ./utf8 */ 54); +var utf8 = __webpack_require__(/*! ./utf8 */ 55); var utils = __webpack_require__(/*! ./utils */ 31); var ZipEntries = __webpack_require__(/*! ./zipEntries */ 136); var Crc32Probe = __webpack_require__(/*! ./stream/Crc32Probe */ 98); @@ -80529,7 +80646,7 @@ module.exports = NodejsStreamInputAdapter; var utils = __webpack_require__(/*! ../utils */ 31); var GenericWorker = __webpack_require__(/*! ../stream/GenericWorker */ 38); -var utf8 = __webpack_require__(/*! ../utf8 */ 54); +var utf8 = __webpack_require__(/*! ../utf8 */ 55); var crc32 = __webpack_require__(/*! ../crc32 */ 74); var signature = __webpack_require__(/*! ../signature */ 91); @@ -87559,7 +87676,7 @@ exports.generateWorker = function (zip, options, comment) { var StreamHelper = __webpack_require__(/*! ./stream/StreamHelper */ 102); var DataWorker = __webpack_require__(/*! ./stream/DataWorker */ 100); -var utf8 = __webpack_require__(/*! ./utf8 */ 54); +var utf8 = __webpack_require__(/*! ./utf8 */ 55); var CompressedObject = __webpack_require__(/*! ./compressedObject */ 75); var GenericWorker = __webpack_require__(/*! ./stream/GenericWorker */ 38); @@ -88482,7 +88599,7 @@ module.exports = __webpack_require__(/*! ./readable */ 79).Transform \********************************************************/ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ 50); +module.exports = __webpack_require__(/*! ./lib/_stream_duplex.js */ 51); /***/ }), @@ -88536,7 +88653,7 @@ var Transform = __webpack_require__(/*! ./_stream_transform */ 108); /**/ var util = __webpack_require__(/*! core-util-is */ 58); -util.inherits = __webpack_require__(/*! inherits */ 53); +util.inherits = __webpack_require__(/*! inherits */ 54); /**/ util.inherits(PassThrough, Transform); @@ -88961,7 +89078,7 @@ if (util && util.inspect && util.inspect.custom) { module.exports = Stream; var EE = __webpack_require__(/*! events */ 80).EventEmitter; -var inherits = __webpack_require__(/*! inherits */ 53); +var inherits = __webpack_require__(/*! inherits */ 54); inherits(Stream, EE); Stream.Readable = __webpack_require__(/*! readable-stream/readable.js */ 79); @@ -89329,7 +89446,7 @@ function fromByteArray (uint8) { "use strict"; -var utf8 = __webpack_require__(/*! ./utf8 */ 54); +var utf8 = __webpack_require__(/*! ./utf8 */ 55); var utils = __webpack_require__(/*! ./utils */ 31); var GenericWorker = __webpack_require__(/*! ./stream/GenericWorker */ 38); var StreamHelper = __webpack_require__(/*! ./stream/StreamHelper */ 102); diff --git a/package-lock.json b/package-lock.json index 73b7d5e88..035eb1c79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -999,9 +999,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000856", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz", - "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==", + "version": "1.0.30000858", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000858.tgz", + "integrity": "sha512-oJRGfVfwHr0VKcoy2UqIoRmQcDOugnNAQsWYI3/JTzExrlzxSKtmLW1N4h+gmjgpYCEJthHmaIjok894H5il/g==", "dev": true }, "ccount": { @@ -10300,7 +10300,7 @@ "dev": true, "requires": { "browserslist": "3.2.8", - "caniuse-lite": "1.0.30000856", + "caniuse-lite": "1.0.30000858", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "6.0.23", @@ -10324,7 +10324,7 @@ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000856", + "caniuse-lite": "1.0.30000858", "electron-to-chromium": "1.3.50" } }, diff --git a/src/BitNode.js b/src/BitNode.js index 5327e5f54..80be78a22 100644 --- a/src/BitNode.js +++ b/src/BitNode.js @@ -115,7 +115,29 @@ function initBitNodes() { "Level 1: 8%
" + "Level 2: 12%
" + "Level 3: 14%"); - BitNodes["BitNode7"] = new BitNode(7, "Hacktocracy", "COMING SOON"); //Healthy Hacknet balancing mechanic + BitNodes["BitNode7"] = new BitNode(7, "Bladeburners 2079", "More human than humans", + "In the middle of the 21st century, you were doing cutting-edge work at OmniTek Incorporated as part of the AI design team " + + "for advanced synthetic androids, or Synthoids for short. You helped achieve a major technological " + + "breakthrough in the sixth generation of the company's Synthoid design, called MK-VI, by developing a hyperintelligent AI. " + + "Many argue that this was the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, " + + "and more intelligent than the humans that had created them.

" + + "In this BitNode you will be able to access the Bladeburner API, which allows you to access Bladeburner " + + "functionality through Netscript. Furthermore:

" + + "The rank you gain from Bladeburner contracts/operations is reduced by 50%
" + + "Bladeburner skills cost twice as many skill points
" + + "Augmentations are 3x more expensive
" + + "Hacking and Hacknet Nodes will be significantly less profitable
" + + "Your hacking level is reduced by 50%
" + + "Hacking experience gain from scripts is reduced by 75%
" + + "Corporations have 80% lower valuations and are therefore less profitable
" + + "Working for companies is 50% less profitable
" + + "Crimes and Infiltration are 50% less profitable

" + + "Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade " + + "its level up to a maximum of 3. This Source-File allows you to access the Bladeburner Netscript API in other " + + "BitNodes. In addition, this Source-File will increase all of your Bladeburner multipliers by:

" + + "Level 1: 8%
" + + "Level 2: 12%
" + + "Level 3: 14%"); BitNodes["BitNode8"] = new BitNode(8, "Ghost of Wall Street", "Money never sleeps", "You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.

" + "In this BitNode:

" + @@ -208,6 +230,9 @@ let BitNodeMultipliers = { InfiltrationRep: 1, CorporationValuation: 1, + + BladeburnerRank: 1, + BladeburnerSkillCost: 1, } function initBitNodeMultipliers() { @@ -284,6 +309,23 @@ function initBitNodeMultipliers() { BitNodeMultipliers.FactionPassiveRepGain = 0; BitNodeMultipliers.HackExpGain = 0.25; break; + case 7: //Bladeburner 2079 + BitNodeMultipliers.BladeburnerRank = 0.5; + BitNodeMultipliers.BladeburnerSkillCost = 2; + BitNodeMultipliers.AugmentationMoneyCost = 3; + BitNodeMultipliers.HackingLevelMultiplier = 0.5; + BitNodeMultipliers.ServerMaxMoney = 0.5; + BitNodeMultipliers.ServerStartingMoney = 0.5; + BitNodeMultipliers.ServerStartingSecurity = 1.5; + BitNodeMultipliers.ScriptHackMoney = 0.5; + BitNodeMultipliers.CompanyWorkMoney = 0.5; + BitNodeMultipliers.CrimeMoney = 0.5; + BitNodeMultipliers.InfiltrationMoney = 0.5; + BitNodeMultipliers.CorporationValuation = 0.2; + BitNodeMultipliers.HacknetNodeMoney = 0.2; + BitNodeMultipliers.FactionPassiveRepGain = 0; + BitNodeMultipliers.HackExpGain = 0.25; + break; case 8: //Ghost of Wall Street BitNodeMultipliers.ScriptHackMoney = 0; BitNodeMultipliers.ManualHackMoney = 0; diff --git a/src/Bladeburner.js b/src/Bladeburner.js index 3dfee17fb..55e8000c5 100644 --- a/src/Bladeburner.js +++ b/src/Bladeburner.js @@ -1,4 +1,5 @@ import {Augmentations, AugmentationNames} from "./Augmentations.js"; +import {BitNodeMultipliers} from "./BitNode.js"; import {CONSTANTS} from "./Constants.js"; import {Engine} from "./engine.js"; import {Faction, Factions, factionExists, @@ -349,6 +350,10 @@ function Skill(params={name:"foo", desc:"foo"}) { if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;} if (params.gunAbility) {this.gunAbility = params.gunAbility;} } + +Skill.prototype.calculateCost = function(currentLevel) { + return (this.baseCost + (currentLevel * this.costInc)) * BitNodeMultipliers.BladeburnerSkillCost; +} var Skills = {}; var SkillNames = { BladesIntuition: "Blade's Intuition", @@ -1168,7 +1173,7 @@ Bladeburner.prototype.completeAction = function() { action.setMaxLevel(ContractSuccessesPerLevel); } if (action.rankGain) { - var gain = addOffset(action.rankGain * rewardMultiplier, 10); + var gain = addOffset(action.rankGain * rewardMultiplier * BitNodeMultipliers.BladeburnerRank, 10); this.changeRank(gain); if (isOperation && this.logging.ops) { this.log(action.name + " successfully completed! Gained " + formatNumber(gain, 3) + " rank"); @@ -1233,7 +1238,7 @@ Bladeburner.prototype.completeAction = function() { this.blackops[action.name] = true; var rankGain = 0; if (action.rankGain) { - rankGain = addOffset(action.rankGain, 10); + rankGain = addOffset(action.rankGain * BitNodeMultipliers.BladeburnerRank, 10); this.changeRank(rankGain); } teamLossMax = Math.ceil(teamCount/2); @@ -2671,7 +2676,7 @@ Bladeburner.prototype.updateSkillsUIElement = function(el, skill) { if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var pointCost = skill.baseCost + (currentLevel * skill.costInc); + var pointCost = skill.calculateCost(currentLevel); el.appendChild(createElement("h2", { //Header innerText:skill.name + " (Lvl " + currentLevel + ")", display:"inline-block" @@ -3110,7 +3115,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) { if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var pointCost = skill.baseCost + (currentLevel * skill.costInc); + var pointCost = skill.calculateCost(currentLevel); if (this.skillPoints >= pointCost) { this.skillPoints -= pointCost; this.upgradeSkill(skill); @@ -3263,24 +3268,25 @@ Bladeburner.prototype.getActionIdFromTypeAndName = function(type="", name="") { } } -Bladeburner.prototype.isContractNameNetscriptFn = function(name) { - return this.contracts.hasOwnProperty(name); +Bladeburner.prototype.getContractNamesNetscriptFn = function(name) { + return Object.keys(this.contracts); } -Bladeburner.prototype.isOperationNameNetscriptFn = function(name) { - return this.operations.hasOwnProperty(name); +Bladeburner.prototype.getOperationNamesNetscriptFn = function(name) { + return Object.keys(this.operations); } -Bladeburner.prototype.isBlackOpNameNetscriptFn = function(name) { - return BlackOperations.hasOwnProperty(name); +Bladeburner.prototype.getBlackOpNamesNetscriptFn = function(name) { + return Object.keys(BlackOperations); } -Bladeburner.prototype.isGeneralActionNameNetscriptFn = function(name) { - return GeneralActions.hasOwnProperty(name); +Bladeburner.prototype.getGeneralActionNamesNetscriptFn = function(name) { + return Object.keys(GeneralActions); } -Bladeburner.prototype.isSkillNameNetscriptFn = function(name) { +Bladeburner.prototype.getSkillNamesNetscriptFn = function(name) { return Skills.hasOwnProperty(name); + return Object.keys(Skills); } Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript) { @@ -3362,7 +3368,7 @@ Bladeburner.prototype.getActionEstimatedSuccessChanceNetscriptFn = function(type case ActionTypes["Operation"]: case ActionTypes["BlackOp"]: case ActionTypes["BlackOperation"]: - return actionObj.getSuccessChance(this); + return actionObj.getSuccessChance(this, {est:true}); case ActionTypes["Training"]: case ActionTypes["Field Analysis"]: case ActionTypes["FieldAnalysis"]: @@ -3438,7 +3444,7 @@ Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript if (this.skills[skillName] && !isNaN(this.skills[skillName])) { currentLevel = this.skills[skillName]; } - var cost = skill.baseCost + (currentLevel * skill.costInc); + var cost = skill.calculateCost(currentLevel); if (this.skillPoints < cost) { if (workerScript.shouldLog("upgradeSkill")) { diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js index bbe707e84..285077099 100644 --- a/src/NetscriptFunctions.js +++ b/src/NetscriptFunctions.js @@ -148,8 +148,8 @@ function NetscriptFunctions(workerScript) { workerScript.dynamicRamUsage += ramCost; if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) { throw makeRuntimeRejectMsg(workerScript, - "Dynamic RAM usage calculated to be greater than initial RAM usage. " + - "This is probably because you somehow circumvented the static RAM " + + "Dynamic RAM usage calculated to be greater than initial RAM usage on fn: " + fnName + + ". This is probably because you somehow circumvented the static RAM " + "calculation.

Please don't do that :("); } }; @@ -3215,59 +3215,59 @@ function NetscriptFunctions(workerScript) { //Bladeburner API bladeburner : { - isContractName : function(name) { + getContractNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isContractName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getContractNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isContractName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getContractNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { - return Player.bladeburner.isContractNameNetscriptFn(name); + return Player.bladeburner.getContractNamesNetscriptFn(name); } - throw makeRuntimeRejectMsg(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "getContractNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isOperationName : function(name) { + getOperationNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isOperationName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getOperationNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isOperationName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getOperationNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { - return Player.bladeburner.isOperationNameNetscriptFn(name); + return Player.bladeburner.getOperationNamesNetscriptFn(name); } - throw makeRuntimeRejectMsg(workerScript, "isOperationName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "getOperationNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isBlackOpName : function(name) { + getBlackOpNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isBlackOpName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getBlackOpNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isBlackOpName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getBlackOpNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { - return Player.bladeburner.isBlackOpNameNetscriptFn(name); + return Player.bladeburner.getBlackOpNamesNetscriptFn(name); } - throw makeRuntimeRejectMsg(workerScript, "isBlackOpName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "getBlackOpNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isGeneralActionName : function(name) { + getGeneralActionNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isGeneralActionName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getGeneralActionNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isGeneralActionName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getGeneralActionNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { - return Player.bladeburner.isGeneralActionNameNetscriptFn(name); + return Player.bladeburner.getGeneralActionNamesNetscriptFn(name); } - throw makeRuntimeRejectMsg(workerScript, "isGeneralActionName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "getGeneralActionNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - isSkillName : function(name) { + getSkillNames : function(name) { if (workerScript.checkingRam) { - return updateStaticRam("isSkillName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + return updateStaticRam("getSkillNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); } - updateDynamicRam("isSkillName", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); + updateDynamicRam("getSkillNames", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 10); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { - return Player.bladeburner.isSkillNameNetscriptFn(name); + return Player.bladeburner.getSkillNamesNetscriptFn(name); } - throw makeRuntimeRejectMsg(workerScript, "isSkillName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "getSkillNames() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, startAction : function(type="", name="") { @@ -3285,15 +3285,15 @@ function NetscriptFunctions(workerScript) { throw makeRuntimeRejectMsg(workerScript, "startAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, - stopAction : function() { + stopBladeburnerAction : function() { if (workerScript.checkingRam) { - return updateStaticRam("stopAction", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 2); + return updateStaticRam("stopBladeburnerAction", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 2); } - updateDynamicRam("stopAction", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 2); + updateDynamicRam("stopBladeburnerAction", CONSTANTS.ScriptBladeburnerApiBaseRamCost / 2); if (Player.bladeburner instanceof Bladeburner && (Player.bitNodeN === 7 || hasBladeburner2079SF)) { return Player.bladeburner.resetAction(); } - throw makeRuntimeRejectMsg(workerScript, "stopAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + + throw makeRuntimeRejectMsg(workerScript, "stopBladeburnerAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); }, getActionTime : function(type="", name="") { @@ -3504,7 +3504,7 @@ function NetscriptFunctions(workerScript) { } throw makeRuntimeRejectMsg(workerScript, "joinBladeburnerFaction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " + "at the Bladeburner division or because you do not have Source-File 7"); - } + }, } } //End return } //End NetscriptFunction() diff --git a/src/NetscriptWorker.js b/src/NetscriptWorker.js index 7686bcca4..28902f47d 100644 --- a/src/NetscriptWorker.js +++ b/src/NetscriptWorker.js @@ -194,7 +194,7 @@ function runScriptsLoop() { } else { try { var ast = parse(workerScripts[i].code, {sourceType:"module"}); - console.log(ast); + //console.log(ast); } catch (e) { console.log("Error parsing script: " + workerScripts[i].name); dialogBoxCreate("Syntax ERROR in " + workerScripts[i].name + ":
" + e); diff --git a/src/RedPill.js b/src/RedPill.js index 60ad4104e..31f89a7f3 100644 --- a/src/RedPill.js +++ b/src/RedPill.js @@ -208,7 +208,8 @@ function loadBitVerse(destroyedBitNodeNum, flume=false) { var elemId = "bitnode-" + i.toString(); var elem = clearEventListeners(elemId); if (elem == null) {return;} - if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || i === 6 || i === 8 || i === 11 || i === 12) { + if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || + i === 6 || i === 7 || i === 8 || i === 11 || i === 12) { elem.addEventListener("click", function() { var bitNodeKey = "BitNode" + i; var bitNode = BitNodes[bitNodeKey]; diff --git a/src/Script.js b/src/Script.js index 462c86a99..a636b8506 100644 --- a/src/Script.js +++ b/src/Script.js @@ -474,19 +474,32 @@ function parseOnlyRamCalculate(server, code, workerScript) { // // TODO it would be simpler to just reference a dictionary. try { - var func = workerScript.env.get(ref); - if (typeof func === "function") { - try { - var res = func.apply(null, []); - if (typeof res === "number") { - ram += res; + function applyFuncRam(func) { + if (typeof func === "function") { + try { + let res = func.apply(null, []); + if (typeof res === "number") { + return res; + } + return 0; + } catch(e) { + console.log("ERROR applying function: " + e); + return 0; } - } catch(e) { - console.log("ERROR applying function: " + e); + } else { + return 0; } } - } catch (error) { continue; } + //Special logic for Bladeburner + var func; + if (ref in workerScript.env.vars.bladeburner) { + func = workerScript.env.vars.bladeburner[ref]; + } else { + func = workerScript.env.get(ref); + } + ram += applyFuncRam(func); + } catch (error) {continue;} } return ram; diff --git a/src/SourceFile.js b/src/SourceFile.js index 3071d6760..99eb5e72d 100644 --- a/src/SourceFile.js +++ b/src/SourceFile.js @@ -164,6 +164,17 @@ function applySourceFile(srcFile) { Player.dexterity_exp_mult *= incMult; Player.agility_exp_mult *= incMult; break; + case 7: //Bladeburner 2079 + var mult = 0; + for (var i = 0; i < srcFile.lvl; ++i) { + mult += (8 / (Math.pow(2, i))); + } + var incMult = 1 + (mult / 100); + Player.bladeburner_max_stamina_mult *= incMult; + Player.bladeburner_stamina_gain_mult *= incMult; + Player.bladeburner_analysis_mult *= incMult; + Player.bladeburner_success_chance_mult *= incMult; + break; case 8: //Ghost of Wall Street var mult = 0; for (var i = 0; i < srcFile.lvl; ++i) {