diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js
index 7e02ab831..e05ca9c72 100644
--- a/dist/engine.bundle.js
+++ b/dist/engine.bundle.js
@@ -147,7 +147,7 @@
/******/
/******/
/******/ // add entry module to deferred list
-/******/ deferredModules.push([9,0]);
+/******/ deferredModules.push([11,0]);
/******/ // run deferred modules when ready
/******/ return checkDeferredModules();
/******/ })
@@ -164,54 +164,67 @@
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Player; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return loadPlayer; });
-/* harmony import */ var _Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations */ 21);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CodingContracts */ 42);
-/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_CodingContracts__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _Company_Company__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Company/Company */ 76);
-/* harmony import */ var _Company_Company__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Company_Company__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Company/Companies */ 17);
-/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Company_Companies__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Company/GetNextCompanyPosition */ 102);
-/* harmony import */ var _Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Company/GetJobRequirementText */ 94);
-/* harmony import */ var _Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_6__);
-/* harmony import */ var _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Company/CompanyPositions */ 29);
-/* harmony import */ var _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Company/data/CompanyPositionNames */ 37);
-/* harmony import */ var _Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Constants */ 1);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Corporation/Corporation */ 58);
-/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Programs/Programs */ 24);
-/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Programs_Programs__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _Crimes__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Crimes */ 38);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Faction/Faction */ 57);
-/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_Faction_Faction__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Faction/Factions */ 14);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_15__);
-/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 46);
-/* harmony import */ var _Gang__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Gang */ 50);
-/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Locations */ 5);
-/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./NetscriptFunctions */ 43);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Server */ 11);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Settings */ 18);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_21__);
-/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./SpecialServerIps */ 33);
-/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./SourceFile */ 70);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! decimal.js */ 35);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 16);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27__);
-/* harmony import */ var _utils_IPAddress__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/IPAddress */ 62);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__);
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentation/Augmentations */ 13);
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _Augmentation_AugmentationHelpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Augmentation/AugmentationHelpers */ 61);
+/* harmony import */ var _Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Augmentation/PlayerOwnedAugmentation */ 98);
+/* harmony import */ var _Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Augmentation/data/AugmentationNames */ 6);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _Bladeburner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Bladeburner */ 34);
+/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./CodingContracts */ 46);
+/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_CodingContracts__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _Company_Company__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Company/Company */ 72);
+/* harmony import */ var _Company_Company__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Company_Company__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Company/Companies */ 19);
+/* harmony import */ var _Company_Companies__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Company_Companies__WEBPACK_IMPORTED_MODULE_8__);
+/* harmony import */ var _Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Company/GetNextCompanyPosition */ 109);
+/* harmony import */ var _Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_Company_GetNextCompanyPosition__WEBPACK_IMPORTED_MODULE_9__);
+/* harmony import */ var _Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Company/GetJobRequirementText */ 100);
+/* harmony import */ var _Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_Company_GetJobRequirementText__WEBPACK_IMPORTED_MODULE_10__);
+/* harmony import */ var _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Company/CompanyPositions */ 33);
+/* harmony import */ var _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__);
+/* harmony import */ var _Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Company/data/CompanyPositionNames */ 41);
+/* harmony import */ var _Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_Company_data_CompanyPositionNames__WEBPACK_IMPORTED_MODULE_12__);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Constants */ 1);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_13__);
+/* harmony import */ var _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Corporation/Corporation */ 62);
+/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Programs/Programs */ 26);
+/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_Programs_Programs__WEBPACK_IMPORTED_MODULE_15__);
+/* harmony import */ var _Crime_CrimeHelpers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Crime/CrimeHelpers */ 101);
+/* harmony import */ var _Crime_Crimes__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Crime/Crimes */ 37);
+/* harmony import */ var _Crime_Crimes__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_Crime_Crimes__WEBPACK_IMPORTED_MODULE_17__);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Faction/Faction */ 58);
+/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_Faction_Faction__WEBPACK_IMPORTED_MODULE_19__);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Faction/Factions */ 16);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_20__);
+/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 49);
+/* harmony import */ var _Gang__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./Gang */ 53);
+/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Locations */ 5);
+/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_23__);
+/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptFunctions */ 47);
+/* harmony import */ var _PersonObjects_Sleeve_Sleeve__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./PersonObjects/Sleeve/Sleeve */ 144);
+/* harmony import */ var _PersonObjects_Sleeve_Sleeve__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_PersonObjects_Sleeve_Sleeve__WEBPACK_IMPORTED_MODULE_25__);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Server */ 12);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./Settings */ 20);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_27__);
+/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./SpecialServerIps */ 36);
+/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./SourceFile */ 80);
+/* harmony import */ var _SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./SourceFile/SourceFileFlags */ 83);
+/* harmony import */ var _SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_30__);
+/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! decimal.js */ 39);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 22);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34__);
+/* harmony import */ var _utils_IPAddress__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../utils/IPAddress */ 66);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__);
@@ -244,7 +257,14 @@
-const CYCLES_PER_SEC = 1000 / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MilliPerCycle;
+
+
+
+
+
+
+
+const CYCLES_PER_SEC = 1000 / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MilliPerCycle;
function PlayerObject() {
//Skills and stats
@@ -297,20 +317,24 @@ function PlayerObject() {
this.faction_rep_mult = 1;
//Money
- this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"](1000);
- this.total_money = new decimal_js__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"](0); //Total money ever earned in this "simulation"
- this.lifetime_money = new decimal_js__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"](0); //Total money ever earned
+ this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"](1000);
+ this.total_money = new decimal_js__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"](0); //Total money ever earned in this "simulation"
+ this.lifetime_money = new decimal_js__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"](0); //Total money ever earned
//IP Address of Starting (home) computer
this.homeComputer = "";
//Location information
- this.city = _Locations__WEBPACK_IMPORTED_MODULE_18__["Locations"].Sector12;
+ this.city = _Locations__WEBPACK_IMPORTED_MODULE_23__["Locations"].Sector12;
this.location = "";
- //Company Information
+ // Jobs that the player holds
+ // Map of company name (key) -> name of company position (value. Just the name, not the CompanyPosition object)
+ // The CompanyPosition name must match a key value in CompanyPositions
+ this.jobs = {};
+
+ // Company at which player is CURRENTLY working (only valid when the player is actively working)
this.companyName = ""; // Name of Company. Must match a key value in Companies map
- this.companyPosition = ""; // Name of Company Position. Must match a key value in CompanyPositions map
//Servers
this.currentServer = ""; //IP address of Server currently being accessed through terminal
@@ -400,6 +424,10 @@ function PlayerObject() {
this.bladeburner_analysis_mult = 1; //Field Analysis Only
this.bladeburner_success_chance_mult = 1;
+ // Sleeves & Re-sleeving
+ this.sleeves = [];
+ this.resleeves = [];
+
//bitnode
this.bitNodeN = 1;
@@ -424,15 +452,15 @@ function PlayerObject() {
PlayerObject.prototype.init = function() {
/* Initialize Player's home computer */
- var t_homeComp = new _Server__WEBPACK_IMPORTED_MODULE_20__[/* Server */ "d"]({
- ip:Object(_utils_IPAddress__WEBPACK_IMPORTED_MODULE_28__[/* createRandomIp */ "a"])(), hostname:"home", organizationName:"Home PC",
+ var t_homeComp = new _Server__WEBPACK_IMPORTED_MODULE_26__[/* Server */ "d"]({
+ ip:Object(_utils_IPAddress__WEBPACK_IMPORTED_MODULE_35__[/* createRandomIp */ "a"])(), hostname:"home", organizationName:"Home PC",
isConnectedTo:true, adminRights:true, purchasedByPlayer:true, maxRam:8
});
this.homeComputer = t_homeComp.ip;
this.currentServer = t_homeComp.ip;
- Object(_Server__WEBPACK_IMPORTED_MODULE_20__[/* AddToAllServers */ "a"])(t_homeComp);
+ Object(_Server__WEBPACK_IMPORTED_MODULE_26__[/* AddToAllServers */ "a"])(t_homeComp);
- this.getHomeComputer().programs.push(_Programs_Programs__WEBPACK_IMPORTED_MODULE_11__["Programs"].NukeProgram.name);
+ this.getHomeComputer().programs.push(_Programs_Programs__WEBPACK_IMPORTED_MODULE_15__["Programs"].NukeProgram.name);
}
PlayerObject.prototype.prestigeAugmentation = function() {
@@ -460,13 +488,13 @@ PlayerObject.prototype.prestigeAugmentation = function() {
this.agility_exp = 0;
this.charisma_exp = 0;
- this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"](1000);
+ this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"](1000);
- this.city = _Locations__WEBPACK_IMPORTED_MODULE_18__["Locations"].Sector12;
+ this.city = _Locations__WEBPACK_IMPORTED_MODULE_23__["Locations"].Sector12;
this.location = "";
this.companyName = "";
- this.companyPosition = "";
+ this.jobs = {};
this.purchasedServers = [];
@@ -475,6 +503,8 @@ PlayerObject.prototype.prestigeAugmentation = function() {
this.queuedAugmentations = [];
+ this.resleeves = [];
+
this.isWorking = false;
this.currentWorkFactionName = "";
this.currentWorkFactionDescription = "";
@@ -540,13 +570,13 @@ PlayerObject.prototype.prestigeSourceFile = function() {
this.agility_exp = 0;
this.charisma_exp = 0;
- this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"](1000);
+ this.money = new decimal_js__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"](1000);
- this.city = _Locations__WEBPACK_IMPORTED_MODULE_18__["Locations"].Sector12;
+ this.city = _Locations__WEBPACK_IMPORTED_MODULE_23__["Locations"].Sector12;
this.location = "";
this.companyName = "";
- this.companyPosition = "";
+ this.jobs = {};
this.purchasedServers = [];
@@ -556,6 +586,16 @@ PlayerObject.prototype.prestigeSourceFile = function() {
this.queuedAugmentations = [];
this.augmentations = [];
+ this.resleeves = [];
+
+ // Duplicate sleeves are reset to level 1 every Bit Node (but the number of sleeves you have persists)
+ if (this.sleeves.length < _SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_30__["SourceFileFlags"][10]) {
+ this.sleeves.length = _SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_30__["SourceFileFlags"][10];
+ }
+ for (let i = 0; i < this.sleeves.length; ++i) {
+ this.sleeves[i] = new _PersonObjects_Sleeve_Sleeve__WEBPACK_IMPORTED_MODULE_25__["Sleeve"]();
+ }
+
this.isWorking = false;
this.currentWorkFactionName = "";
this.currentWorkFactionDescription = "";
@@ -590,7 +630,7 @@ PlayerObject.prototype.prestigeSourceFile = function() {
//Gang
this.gang = null;
- Object(_Gang__WEBPACK_IMPORTED_MODULE_17__[/* resetGangs */ "d"])();
+ Object(_Gang__WEBPACK_IMPORTED_MODULE_22__[/* resetGangs */ "d"])();
//Reset Stock market
this.hasWseAccount = false;
@@ -610,11 +650,11 @@ PlayerObject.prototype.prestigeSourceFile = function() {
}
PlayerObject.prototype.getCurrentServer = function() {
- return _Server__WEBPACK_IMPORTED_MODULE_20__[/* AllServers */ "b"][this.currentServer];
+ return _Server__WEBPACK_IMPORTED_MODULE_26__[/* AllServers */ "b"][this.currentServer];
}
PlayerObject.prototype.getHomeComputer = function() {
- return _Server__WEBPACK_IMPORTED_MODULE_20__[/* AllServers */ "b"][this.homeComputer];
+ return _Server__WEBPACK_IMPORTED_MODULE_26__[/* AllServers */ "b"][this.homeComputer];
}
PlayerObject.prototype.getUpgradeHomeRamCost = function() {
@@ -625,7 +665,7 @@ PlayerObject.prototype.getUpgradeHomeRamCost = function() {
//Calculate cost
//Have cost increase by some percentage each time RAM has been upgraded
const mult = Math.pow(1.58, numUpgrades);
- var cost = currentRam * _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].BaseCostFor1GBOfRamHome * mult;
+ var cost = currentRam * _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].BaseCostFor1GBOfRamHome * mult;
return cost;
}
@@ -643,12 +683,12 @@ PlayerObject.prototype.calculateSkill = function(exp, mult=1) {
}
PlayerObject.prototype.updateSkillLevels = function() {
- this.hacking_skill = Math.max(1, Math.floor(this.calculateSkill(this.hacking_exp, this.hacking_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].HackingLevelMultiplier)));
- this.strength = this.calculateSkill(this.strength_exp, this.strength_mult);
- this.defense = this.calculateSkill(this.defense_exp, this.defense_mult);
- this.dexterity = this.calculateSkill(this.dexterity_exp, this.dexterity_mult);
- this.agility = this.calculateSkill(this.agility_exp, this.agility_mult);
- this.charisma = this.calculateSkill(this.charisma_exp, this.charisma_mult);
+ this.hacking_skill = Math.max(1, Math.floor(this.calculateSkill(this.hacking_exp, this.hacking_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].HackingLevelMultiplier)));
+ this.strength = Math.max(1, Math.floor(this.calculateSkill(this.strength_exp, this.strength_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].StrengthLevelMultiplier)));
+ this.defense = Math.max(1, Math.floor(this.calculateSkill(this.defense_exp, this.defense_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].DefenseLevelMultiplier)));
+ this.dexterity = Math.max(1, Math.floor(this.calculateSkill(this.dexterity_exp, this.dexterity_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].DexterityLevelMultiplier)));
+ this.agility = Math.max(1, Math.floor(this.calculateSkill(this.agility_exp, this.agility_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].AgilityLevelMultiplier)));
+ this.charisma = Math.max(1, Math.floor(this.calculateSkill(this.charisma_exp, this.charisma_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CharismaLevelMultiplier)));
if (this.intelligence > 0) {
this.intelligence = Math.floor(this.calculateSkill(this.intelligence_exp));
@@ -798,7 +838,7 @@ PlayerObject.prototype.gainIntelligenceExp = function(exp) {
if (isNaN(exp)) {
console.log("ERROR: NaN passed into Player.gainIntelligenceExp()"); return;
}
- if (_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_19__[/* hasAISF */ "b"] || this.intelligence > 0) {
+ if (_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_24__[/* hasAISF */ "b"] || this.intelligence > 0) {
this.intelligence_exp += exp;
}
}
@@ -875,10 +915,11 @@ PlayerObject.prototype.processWorkEarnings = function(numCycles=1) {
}
/* Working for Company */
-PlayerObject.prototype.startWork = function() {
+PlayerObject.prototype.startWork = function(companyName) {
this.resetWorkStatus();
this.isWorking = true;
- this.workType = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].WorkTypeCompany;
+ this.companyName = companyName;
+ this.workType = _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCompany;
this.workHackExpGainRate = this.getWorkHackExpGain();
this.workStrExpGainRate = this.getWorkStrExpGain();
@@ -889,10 +930,10 @@ PlayerObject.prototype.startWork = function() {
this.workRepGainRate = this.getWorkRepGain();
this.workMoneyGainRate = this.getWorkMoneyGain();
- this.timeNeededToCompleteWork = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours;
+ this.timeNeededToCompleteWork = _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours;
//Remove all old event listeners from Cancel button
- var newCancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27__["clearEventListeners"])("work-in-progress-cancel-button");
+ var newCancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34__["clearEventListeners"])("work-in-progress-cancel-button");
newCancelButton.innerHTML = "Cancel Work";
newCancelButton.addEventListener("click", function() {
Player.finishWork(true);
@@ -900,48 +941,50 @@ PlayerObject.prototype.startWork = function() {
});
//Display Work In Progress Screen
- _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"].loadWorkInProgressContent();
+ _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"].loadWorkInProgressContent();
}
PlayerObject.prototype.work = function(numCycles) {
//Cap the number of cycles being processed to whatever would put you at
//the work time limit (8 hours)
var overMax = false;
- if (this.timeWorked + (_engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles) >= _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours) {
+ if (this.timeWorked + (_engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles) >= _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours) {
overMax = true;
- numCycles = Math.round((_Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours - this.timeWorked) / _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed);
+ numCycles = Math.round((_Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours - this.timeWorked) / _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed);
}
- this.timeWorked += _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles;
+ this.timeWorked += _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles;
this.workRepGainRate = this.getWorkRepGain();
this.processWorkEarnings(numCycles);
//If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money
- if (overMax || this.timeWorked >= _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours) {
+ if (overMax || this.timeWorked >= _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours) {
return this.finishWork(false);
}
- var comp = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName], companyRep = "0";
- if (comp == null || !(comp instanceof _Company_Company__WEBPACK_IMPORTED_MODULE_3__["Company"])) {
+ var comp = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName], companyRep = "0";
+ if (comp == null || !(comp instanceof _Company_Company__WEBPACK_IMPORTED_MODULE_7__["Company"])) {
console.error(`Could not find Company: ${this.companyName}`);
} else {
companyRep = comp.playerReputation;
}
+ const position = this.jobs[this.companyName];
+
var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently working as a " + this.companyPosition +
+ txt.innerHTML = "You are currently working as a " + position +
" at " + this.companyName + " (Current Company Reputation: " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(companyRep, '0,0') + ")
" +
- "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
+ "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
"You will automatically finish after working for 8 hours. You can cancel earlier if you wish, " +
"but you will only gain half of the reputation you've earned so far."
}
@@ -952,54 +995,55 @@ PlayerObject.prototype.finishWork = function(cancelled, sing=false) {
this.workRepGained /= 2;
}
- var company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
+ var company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
company.playerReputation += (this.workRepGained);
this.updateSkillLevels();
var txt = "You earned a total of: " +
- "$" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + " " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation for the company " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp ";
+ "$" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + " " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation for the company " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp ";
if (cancelled) {
- txt = "You worked a short shift of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
+ txt = "You worked a short shift of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
"Since you cancelled your work early, you only gained half of the reputation you earned.
" + txt;
} else {
txt = "You worked a full shift of 8 hours!
" + txt;
}
- if (!sing) {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_26__["dialogBoxCreate"])(txt);}
+ if (!sing) {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_33__["dialogBoxCreate"])(txt);}
var mainMenu = document.getElementById("mainmenu-container");
mainMenu.style.visibility = "visible";
this.isWorking = false;
- _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"].loadLocationContent();
+ _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"].loadLocationContent();
if (sing) {
- var res = "You worked a short shift of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + " and " +
- "earned $" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + ", " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp, and " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp.";
+ var res = "You worked a short shift of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + " and " +
+ "earned $" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + ", " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp, and " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp.";
this.resetWorkStatus();
return res;
}
this.resetWorkStatus();
}
-PlayerObject.prototype.startWorkPartTime = function() {
+PlayerObject.prototype.startWorkPartTime = function(companyName) {
this.resetWorkStatus();
this.isWorking = true;
- this.workType = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].WorkTypeCompanyPartTime;
+ this.companyName = companyName;
+ this.workType = _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCompanyPartTime;
this.workHackExpGainRate = this.getWorkHackExpGain();
this.workStrExpGainRate = this.getWorkStrExpGain();
@@ -1010,9 +1054,9 @@ PlayerObject.prototype.startWorkPartTime = function() {
this.workRepGainRate = this.getWorkRepGain();
this.workMoneyGainRate = this.getWorkMoneyGain();
- this.timeNeededToCompleteWork = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours;
+ this.timeNeededToCompleteWork = _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours;
- var newCancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27__["clearEventListeners"])("work-in-progress-cancel-button");
+ var newCancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34__["clearEventListeners"])("work-in-progress-cancel-button");
newCancelButton.innerHTML = "Stop Working";
newCancelButton.addEventListener("click", function() {
Player.finishWorkPartTime();
@@ -1020,86 +1064,88 @@ PlayerObject.prototype.startWorkPartTime = function() {
});
//Display Work In Progress Screen
- _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"].loadWorkInProgressContent();
+ _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"].loadWorkInProgressContent();
}
PlayerObject.prototype.workPartTime = function(numCycles) {
//Cap the number of cycles being processed to whatever would put you at the
//work time limit (8 hours)
var overMax = false;
- if (this.timeWorked + (_engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles) >= _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours) {
+ if (this.timeWorked + (_engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles) >= _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours) {
overMax = true;
- numCycles = Math.round((_Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours - this.timeWorked) / _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed);
+ numCycles = Math.round((_Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours - this.timeWorked) / _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed);
}
- this.timeWorked += _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles;
+ this.timeWorked += _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles;
this.workRepGainRate = this.getWorkRepGain();
this.processWorkEarnings(numCycles);
//If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money
- if (overMax || this.timeWorked >= _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MillisecondsPer8Hours) {
+ if (overMax || this.timeWorked >= _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MillisecondsPer8Hours) {
return this.finishWorkPartTime();
}
- var comp = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName], companyRep = "0";
- if (comp == null || !(comp instanceof _Company_Company__WEBPACK_IMPORTED_MODULE_3__["Company"])) {
+ var comp = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName], companyRep = "0";
+ if (comp == null || !(comp instanceof _Company_Company__WEBPACK_IMPORTED_MODULE_7__["Company"])) {
console.log("ERROR: Could not find Company: " + this.companyName);
} else {
companyRep = comp.playerReputation;
}
+ const position = this.jobs[this.companyName];
+
var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently working as a " + this.companyPosition +
- " at " + Player.companyName + " (Current Company Reputation: " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(companyRep, '0,0') + ")
" +
- "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
+ txt.innerHTML = "You are currently working as a " + position +
+ " at " + this.companyName + " (Current Company Reputation: " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(companyRep, '0,0') + ")
" +
+ "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
"You will automatically finish after working for 20 hours. You can cancel earlier if you wish. " +
"There is no penalty for cancelling earlier.";
}
PlayerObject.prototype.finishFactionWork = function(cancelled, sing=false) {
- var faction = _Faction_Factions__WEBPACK_IMPORTED_MODULE_15__["Factions"][this.currentWorkFactionName];
+ var faction = _Faction_Factions__WEBPACK_IMPORTED_MODULE_20__["Factions"][this.currentWorkFactionName];
faction.playerReputation += (this.workRepGained);
this.updateSkillLevels();
- var txt = "You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
+ var txt = "You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
"You earned a total of: " +
- "$" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + " " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation for the faction " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp ";
- if (!sing) {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_26__["dialogBoxCreate"])(txt);}
+ "$" + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workMoneyGained, '0,0.00') + " " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " reputation for the faction " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " strength exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " defense exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dexterity exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agility exp " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " charisma exp ";
+ if (!sing) {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_33__["dialogBoxCreate"])(txt);}
var mainMenu = document.getElementById("mainmenu-container");
mainMenu.style.visibility = "visible";
this.isWorking = false;
- _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"].loadFactionContent();
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_16__[/* displayFactionContent */ "a"])(faction.name);
+ _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"].loadFactionContent();
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_21__[/* displayFactionContent */ "a"])(faction.name);
if (sing) {
- var res="You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + ". " +
+ var res="You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + ". " +
"You earned " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " rep, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " str exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " def exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dex exp, " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agi exp, and " +
- _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_25__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " cha exp.";
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workRepGained, '0,0.0000') + " rep, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workHackExpGained, '0,0.0000') + " hacking exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workStrExpGained, '0,0.0000') + " str exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDefExpGained, '0,0.0000') + " def exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workDexExpGained, '0,0.0000') + " dex exp, " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workAgiExpGained, '0,0.0000') + " agi exp, and " +
+ _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_32__["numeralWrapper"].format(this.workChaExpGained, '0,0.0000') + " cha exp.";
this.resetWorkStatus();
return res;
}
@@ -1279,110 +1325,118 @@ PlayerObject.prototype.finishFactionWork = function(cancelled, sing=false) {
PlayerObject.prototype.getWorkMoneyGain = function() {
// If player has SF-11, calculate salary multiplier from favor
let bn11Mult = 1;
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- if (_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_19__[/* hasBn11SF */ "d"]) { bn11Mult = 1 + (company.favor / 100); }
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ if (_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_24__[/* hasBn11SF */ "d"]) { bn11Mult = 1 + (company.favor / 100); }
// Get base salary
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (companyPosition == null) {
- console.error(`Could not find CompanyPosition object for ${this.companyPosition}. Work salary will be 0`);
+ console.error(`Could not find CompanyPosition object for ${companyPositionName}. Work salary will be 0`);
return 0;
}
- return companyPosition.baseSalary * company.salaryMultiplier * this.work_money_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkMoney * bn11Mult;
+ return companyPosition.baseSalary * company.salaryMultiplier * this.work_money_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkMoney * bn11Mult;
}
//Hack exp gained per game cycle
PlayerObject.prototype.getWorkHackExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work hack exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.hackingExpGain * company.expMultiplier * this.hacking_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.hackingExpGain * company.expMultiplier * this.hacking_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Str exp gained per game cycle
PlayerObject.prototype.getWorkStrExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work str exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.strengthExpGain * company.expMultiplier * this.strength_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.strengthExpGain * company.expMultiplier * this.strength_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Def exp gained per game cycle
PlayerObject.prototype.getWorkDefExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work def exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.defenseExpGain * company.expMultiplier * this.defense_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.defenseExpGain * company.expMultiplier * this.defense_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Dex exp gained per game cycle
PlayerObject.prototype.getWorkDexExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work dex exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.dexterityExpGain * company.expMultiplier * this.dexterity_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.dexterityExpGain * company.expMultiplier * this.dexterity_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Agi exp gained per game cycle
PlayerObject.prototype.getWorkAgiExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work agi exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.agilityExpGain * company.expMultiplier * this.agility_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.agilityExpGain * company.expMultiplier * this.agility_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Charisma exp gained per game cycle
PlayerObject.prototype.getWorkChaExpGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work cha exp gain will be 0`].join(" "));
return 0;
}
- return companyPosition.charismaExpGain * company.expMultiplier * this.charisma_exp_mult * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
+ return companyPosition.charismaExpGain * company.expMultiplier * this.charisma_exp_mult * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_4__["BitNodeMultipliers"].CompanyWorkExpGain;
}
//Reputation gained per game cycle
PlayerObject.prototype.getWorkRepGain = function() {
- const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_4__["Companies"][this.companyName];
- const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_7__["CompanyPositions"][this.companyPosition];
+ const company = _Company_Companies__WEBPACK_IMPORTED_MODULE_8__["Companies"][this.companyName];
+ const companyPositionName = this.jobs[this.companyName];
+ const companyPosition = _Company_CompanyPositions__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"][companyPositionName];
if (company == null || companyPosition == null) {
console.error([`Could not find Company object for ${this.companyName}`,
- `or CompanyPosition object for ${this.companyPosition}.`,
+ `or CompanyPosition object for ${companyPositionName}.`,
`Work rep gain will be 0`].join(" "));
return 0;
}
@@ -1392,7 +1446,7 @@ PlayerObject.prototype.getWorkRepGain = function() {
this.agility, this.charisma);
//Intelligence provides a flat bonus to job performance
- jobPerformance += (this.intelligence / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel);
+ jobPerformance += (this.intelligence / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel);
//Update reputation gain rate to account for company favor
var favorMult = 1 + (company.favor / 100);
@@ -1401,22 +1455,22 @@ PlayerObject.prototype.getWorkRepGain = function() {
}
PlayerObject.prototype.getFactionSecurityWorkRepGain = function() {
- var t = 0.9 * (this.hacking_skill / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.strength / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.defense / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.dexterity / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.agility / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel) / 4.5;
+ var t = 0.9 * (this.hacking_skill / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.strength / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.defense / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.dexterity / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.agility / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel) / 4.5;
return t * this.faction_rep_mult;
}
PlayerObject.prototype.getFactionFieldWorkRepGain = function() {
- var t = 0.9 * (this.hacking_skill / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.strength / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.defense / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.dexterity / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.agility / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.charisma / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel +
- this.intelligence / _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].MaxSkillLevel) / 5.5;
+ var t = 0.9 * (this.hacking_skill / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.strength / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.defense / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.dexterity / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.agility / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.charisma / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel +
+ this.intelligence / _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].MaxSkillLevel) / 5.5;
return t * this.faction_rep_mult;
}
@@ -1424,7 +1478,7 @@ PlayerObject.prototype.getFactionFieldWorkRepGain = function() {
PlayerObject.prototype.startCreateProgramWork = function(programName, time, reqLevel) {
this.resetWorkStatus();
this.isWorking = true;
- this.workType = _Constants__WEBPACK_IMPORTED_MODULE_9__["CONSTANTS"].WorkTypeCreateProgram;
+ this.workType = _Constants__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCreateProgram;
//Time needed to complete work affected by hacking skill (linearly based on
//ratio of (your skill - required level) to MAX skill)
@@ -1449,7 +1503,7 @@ PlayerObject.prototype.startCreateProgramWork = function(programName, time, reqL
this.createProgramName = programName;
- var cancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_27__["clearEventListeners"])("work-in-progress-cancel-button");
+ var cancelButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_34__["clearEventListeners"])("work-in-progress-cancel-button");
cancelButton.innerHTML = "Cancel work on creating program";
cancelButton.addEventListener("click", function() {
Player.finishCreateProgramWork(true);
@@ -1457,7 +1511,7 @@ PlayerObject.prototype.startCreateProgramWork = function(programName, time, reqL
});
//Display Work In Progress Screen
- _engine__WEBPACK_IMPORTED_MODULE_13__["Engine"].loadWorkInProgressContent();
+ _engine__WEBPACK_IMPORTED_MODULE_18__["Engine"].loadWorkInProgressContent();
}
PlayerObject.prototype.createProgramWork = function(numCycles) {
@@ -1467,8 +1521,8 @@ PlayerObject.prototype.createProgramWork = function(numCycles) {
skillMult = 1 + ((skillMult - 1) / 5); //The divider constant can be adjusted as necessary
//Skill multiplier directly applied to "time worked"
- this.timeWorked += (_engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles);
- this.timeWorkedCreateProgram += (_engine__WEBPACK_IMPORTED_MODULE_13__["Engine"]._idleSpeed * numCycles * skillMult);
+ this.timeWorked += (_engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles);
+ this.timeWorkedCreateProgram += (_engine__WEBPACK_IMPORTED_MODULE_18__["Engine"]._idleSpeed * numCycles * skillMult);
var programName = this.createProgramName;
if (this.timeWorkedCreateProgram >= this.timeNeededToCompleteWork) {
@@ -1477,7 +1531,7 @@ PlayerObject.prototype.createProgramWork = function(numCycles) {
var txt = document.getElementById("work-in-progress-text");
txt.innerHTML = "You are currently working on coding " + programName + ".
" +
- "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_30__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
+ "You have been working for " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_37__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
' +
+ `Employer at which you last worked: ${_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].companyName} ` +
+ `Job you last worked: ${companyPosition} ` +
+ `All Employers: ${Object.keys(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].jobs).join(", ")}
",
}));
- Engine.Display.characterInfo.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("p", {
+ Engine.Display.characterInfo.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("p", {
width:"60%", fontSize: "13px", marginLeft:"4%",
- innerHTML:_BitNode__WEBPACK_IMPORTED_MODULE_14__[/* BitNodes */ "a"][index].info,
+ innerHTML:_BitNode_BitNode__WEBPACK_IMPORTED_MODULE_6__[/* BitNodes */ "a"][index].info,
}))
}
},
@@ -5432,32 +5660,32 @@ const Engine = {
Engine.ishimaLocationsList.style.display = "none";
Engine.volhavenLocationsList.style.display = "none";
- document.getElementById("world-city-name").innerHTML = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].city;
+ document.getElementById("world-city-name").innerHTML = _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].city;
var cityDesc = document.getElementById("world-city-desc"); //TODO
- switch(_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].city) {
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].Aevum:
+ switch(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].city) {
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].Aevum:
Engine.aevumLocationsList.style.display = "inline";
break;
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].Chongqing:
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].Chongqing:
Engine.chongqingLocationsList.style.display = "inline";
break;
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].Sector12:
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].Sector12:
Engine.sector12LocationsList.style.display = "inline";
//City hall only in BitNode-3/with Source-File 3
- if ((_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bitNodeN === 3 || _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_34__[/* hasCorporationSF */ "e"]) && _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bitNodeN !== 8) {
+ if ((_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bitNodeN === 3 || _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_26__[/* hasCorporationSF */ "e"]) && _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bitNodeN !== 8) {
document.getElementById("sector12-cityhall-li").style.display = "block";
} else {
document.getElementById("sector12-cityhall-li").style.display = "none";
}
break;
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].NewTokyo:
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].NewTokyo:
Engine.newTokyoLocationsList.style.display = "inline";
break;
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].Ishima:
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].Ishima:
Engine.ishimaLocationsList.style.display = "inline";
break;
- case _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].Volhaven:
+ case _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].Volhaven:
Engine.volhavenLocationsList.style.display = "inline";
break;
default:
@@ -5471,22 +5699,22 @@ const Engine = {
// Bladeburner HQ (if applicable);
var genericLocationsList = document.getElementById("generic-locations-list");
genericLocationsList.style.display = "inline";
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_3__["removeChildrenFromElement"])(genericLocationsList);
- var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("li");
- li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("a", {
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_52__["removeChildrenFromElement"])(genericLocationsList);
+ var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("li");
+ li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("a", {
innerText:"World Stock Exchange", class:"a-link-button",
clickListener:()=>{
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].location = _Locations__WEBPACK_IMPORTED_MODULE_28__["Locations"].WorldStockExchange;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].location = _Locations__WEBPACK_IMPORTED_MODULE_20__["Locations"].WorldStockExchange;
Engine.loadStockMarketContent();
return false;
}
}));
genericLocationsList.appendChild(li);
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"] && document.getElementById("location-corporation-button") == null) {
- var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("li");
- li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("a", {
- innerText:_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation.name, id:"location-corporation-button",
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_13__[/* Corporation */ "a"] && document.getElementById("location-corporation-button") == null) {
+ var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("li");
+ li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("a", {
+ innerText:_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation.name, id:"location-corporation-button",
class:"a-link-button",
clickListener:()=>{
Engine.loadCorporationContent();
@@ -5496,9 +5724,9 @@ const Engine = {
genericLocationsList.appendChild(li);
}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"]) {
- var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("li");
- li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("a", {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_7__[/* Bladeburner */ "a"]) {
+ var li = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("li");
+ li.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("a", {
innerText:"Bladeburner Headquarters", class:"a-link-button",
clickListener:()=>{
Engine.loadBladeburnerContent();
@@ -5510,67 +5738,67 @@ const Engine = {
},
displayFactionsInfo: function() {
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_3__["removeChildrenFromElement"])(Engine.Display.factionsContent);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_52__["removeChildrenFromElement"])(Engine.Display.factionsContent);
//Factions
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("h1", {
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("h1", {
innerText:"Factions"
}));
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("p", {
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("p", {
innerText:"Lists all factions you have joined"
}));
- var factionsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("ul");
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("br"));
+ var factionsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("ul");
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("br"));
//Add a button for each faction you are a member of
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factions.length; ++i) {
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factions.length; ++i) {
(function () {
- var factionName = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factions[i];
+ var factionName = _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factions[i];
- factionsList.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("a", {
+ factionsList.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("a", {
class:"a-link-button", innerText:factionName, padding:"4px", margin:"4px",
display:"inline-block",
clickListener:()=>{
Engine.loadFactionContent();
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_25__[/* displayFactionContent */ "a"])(factionName);
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_17__[/* displayFactionContent */ "a"])(factionName);
return false;
}
}));
- factionsList.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("br"));
+ factionsList.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("br"));
}()); //Immediate invocation
}
Engine.Display.factionsContent.appendChild(factionsList);
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("br"));
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("br"));
//Invited Factions
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("h1", {
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("h1", {
innerText:"Outstanding Faction Invitations"
}));
- Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("p", {
+ Engine.Display.factionsContent.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("p", {
width:"70%",
innerText:"Lists factions you have been invited to, as well as " +
"factions you have previously rejected. You can accept " +
"these faction invitations at any time."
}));
- var invitationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("ul");
+ var invitationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("ul");
//Add a button to accept for each faction you have invitiations for
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations.length; ++i) {
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations.length; ++i) {
(function () {
- var factionName = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations[i];
+ var factionName = _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations[i];
- var item = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("li", {padding:"6px", margin:"6px"});
- item.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("p", {
+ var item = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("li", {padding:"6px", margin:"6px"});
+ item.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("p", {
innerText:factionName, display:"inline", margin:"4px", padding:"4px"
}));
- item.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_5__["createElement"])("a", {
+ item.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_54__["createElement"])("a", {
innerText:"Accept Faction Invitation",
class:"a-link-button", display:"inline", margin:"4px", padding:"4px",
clickListener:()=>{
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_25__[/* joinFaction */ "c"])(_Faction_Factions__WEBPACK_IMPORTED_MODULE_24__["Factions"][factionName]);
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations[i] == factionName || _Faction_Factions__WEBPACK_IMPORTED_MODULE_24__["Factions"][_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations[i]].isBanned) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].factionInvitations.splice(i, 1);
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_17__[/* joinFaction */ "c"])(_Faction_Factions__WEBPACK_IMPORTED_MODULE_16__["Factions"][factionName]);
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations[i] == factionName || _Faction_Factions__WEBPACK_IMPORTED_MODULE_16__["Factions"][_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations[i]].isBanned) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].factionInvitations.splice(i, 1);
i--;
}
}
@@ -5633,7 +5861,7 @@ const Engine = {
if (diff > 0) {
//Update the game engine by the calculated number of cycles
Engine._lastUpdate = _thisUpdate - offset;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].lastUpdate = _thisUpdate - offset;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].lastUpdate = _thisUpdate - offset;
Engine.updateGame(diff);
}
@@ -5642,65 +5870,65 @@ const Engine = {
updateGame: function(numCycles = 1) {
var time = numCycles * Engine._idleSpeed;
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime = 0;}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug = 0;}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode = 0;}
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime += time;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug += time;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode += time;
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime = 0;}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug = 0;}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode = 0;}
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime += time;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug += time;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode += time;
//Start Manual hack
- if (_Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].actionStarted === true) {
- Engine._totalActionTime = _Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].actionTime;
- Engine._actionTimeLeft = _Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].actionTime;
+ if (_Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].actionStarted === true) {
+ Engine._totalActionTime = _Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].actionTime;
+ Engine._actionTimeLeft = _Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].actionTime;
Engine._actionInProgress = true;
Engine._actionProgressBarCount = 1;
Engine._actionProgressStr = "[ ]";
Engine._actionTimeStr = "Time left: ";
- _Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].actionStarted = false;
+ _Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].actionStarted = false;
}
//Working
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].isWorking) {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeFaction) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workForFaction(numCycles);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].createProgramWork(numCycles);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeStudyClass) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].takeClass(numCycles);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCrime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].commitCrime(numCycles);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workPartTime(numCycles);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].isWorking) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeFaction) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workForFaction(numCycles);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCreateProgram) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].createProgramWork(numCycles);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeStudyClass) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].takeClass(numCycles);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCrime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].commitCrime(numCycles);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCompanyPartTime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workPartTime(numCycles);
} else {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].work(numCycles);
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].work(numCycles);
}
}
// Update stock prices
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount) {
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* processStockPrices */ "m"])(numCycles);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].hasWseAccount) {
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* processStockPrices */ "m"])(numCycles);
}
//Gang, if applicable
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bitNodeN == 2 && _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].inGang()) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].gang.process(numCycles, _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"]);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bitNodeN == 2 && _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].inGang()) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].gang.process(numCycles, _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"]);
}
//Mission
- if (_Missions__WEBPACK_IMPORTED_MODULE_33__[/* inMission */ "c"] && _Missions__WEBPACK_IMPORTED_MODULE_33__[/* currMission */ "b"]) {
- _Missions__WEBPACK_IMPORTED_MODULE_33__[/* currMission */ "b"].process(numCycles);
+ if (_Missions__WEBPACK_IMPORTED_MODULE_25__[/* inMission */ "c"] && _Missions__WEBPACK_IMPORTED_MODULE_25__[/* currMission */ "b"]) {
+ _Missions__WEBPACK_IMPORTED_MODULE_25__[/* currMission */ "b"].process(numCycles);
}
//Corporation
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"]) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_13__[/* Corporation */ "a"]) {
//Stores cycles in a "buffer". Processed separately using Engine Counters
//This is to avoid constant DOM redraws when Corporation is catching up
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation.storeCycles(numCycles);
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation.storeCycles(numCycles);
}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"]) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner.storeCycles(numCycles);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_7__[/* Bladeburner */ "a"]) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner.storeCycles(numCycles);
}
//Counters
@@ -5713,10 +5941,10 @@ const Engine = {
}
//Update the running time of all active scripts
- Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_35__[/* updateOnlineScriptTimes */ "g"])(numCycles);
+ Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_27__[/* updateOnlineScriptTimes */ "g"])(numCycles);
//Hacknet Nodes
- Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_29__[/* processAllHacknetNodeEarnings */ "d"])(numCycles);
+ Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_21__[/* processAllHacknetNodeEarnings */ "d"])(numCycles);
},
//Counters for the main event loop. Represent the number of game cycles are required
@@ -5749,26 +5977,26 @@ const Engine = {
//is necessary and then resets the counter
checkCounters: function() {
if (Engine.Counters.autoSaveCounter <= 0) {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].saveGame(indexedDb);
- if (_Settings__WEBPACK_IMPORTED_MODULE_44__["Settings"].AutosaveInterval == null) {
- _Settings__WEBPACK_IMPORTED_MODULE_44__["Settings"].AutosaveInterval = 60;
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].saveGame(indexedDb);
+ if (_Settings__WEBPACK_IMPORTED_MODULE_36__["Settings"].AutosaveInterval == null) {
+ _Settings__WEBPACK_IMPORTED_MODULE_36__["Settings"].AutosaveInterval = 60;
}
- if (_Settings__WEBPACK_IMPORTED_MODULE_44__["Settings"].AutosaveInterval === 0) {
+ if (_Settings__WEBPACK_IMPORTED_MODULE_36__["Settings"].AutosaveInterval === 0) {
Engine.Counters.autoSaveCounter = Infinity;
} else {
- Engine.Counters.autoSaveCounter = _Settings__WEBPACK_IMPORTED_MODULE_44__["Settings"].AutosaveInterval * 5;
+ Engine.Counters.autoSaveCounter = _Settings__WEBPACK_IMPORTED_MODULE_36__["Settings"].AutosaveInterval * 5;
}
}
if (Engine.Counters.updateSkillLevelsCounter <= 0) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].updateSkillLevels();
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].updateSkillLevels();
Engine.Counters.updateSkillLevelsCounter = 10;
}
if (Engine.Counters.updateActiveScriptsDisplay <= 0) {
//Always update, but make the interval longer if the page isn't active
- Object(_ActiveScriptsUI__WEBPACK_IMPORTED_MODULE_12__[/* updateActiveScriptsItems */ "c"])();
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].ActiveScripts)) {
+ Object(_ActiveScriptsUI__WEBPACK_IMPORTED_MODULE_2__[/* updateActiveScriptsItems */ "c"])();
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].ActiveScripts)) {
Engine.Counters.updateActiveScriptsDisplay = 5;
} else {
Engine.Counters.updateActiveScriptsDisplay = 10;
@@ -5777,39 +6005,39 @@ const Engine = {
if (Engine.Counters.updateDisplays <= 0) {
Engine.displayCharacterOverviewInfo();
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].CharacterInfo)) {
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].CharacterInfo)) {
Engine.displayCharacterInfo();
- } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].HacknetNodes)) {
- Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_29__[/* updateHacknetNodesContent */ "f"])();
- } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].CreateProgram)) {
- Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_39__[/* displayCreateProgramContent */ "a"])();
+ } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].HacknetNodes)) {
+ Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_21__[/* updateHacknetNodesContent */ "f"])();
+ } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].CreateProgram)) {
+ Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_31__[/* displayCreateProgramContent */ "a"])();
}
- if (_utils_LogBox__WEBPACK_IMPORTED_MODULE_11__[/* logBoxOpened */ "b"]) {
- Object(_utils_LogBox__WEBPACK_IMPORTED_MODULE_11__[/* logBoxUpdateText */ "c"])();
+ if (_utils_LogBox__WEBPACK_IMPORTED_MODULE_1__[/* logBoxOpened */ "b"]) {
+ Object(_utils_LogBox__WEBPACK_IMPORTED_MODULE_1__[/* logBoxUpdateText */ "c"])();
}
Engine.Counters.updateDisplays = 3;
}
if (Engine.Counters.updateDisplaysMed <= 0) {
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].Corporation)) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation.updateUIContent();
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].Corporation)) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation.updateUIContent();
}
Engine.Counters.updateDisplaysMed = 9;
}
if (Engine.Counters.updateDisplaysLong <= 0) {
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].Gang) && _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].inGang()) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].gang.updateGangContent();
- } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].ScriptEditor)) {
- Object(_Script__WEBPACK_IMPORTED_MODULE_42__[/* updateScriptEditorContent */ "h"])();
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].Gang) && _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].inGang()) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].gang.updateGangContent();
+ } else if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].ScriptEditor)) {
+ Object(_Script__WEBPACK_IMPORTED_MODULE_34__[/* updateScriptEditorContent */ "h"])();
}
Engine.Counters.updateDisplaysLong = 15;
}
if (Engine.Counters.createProgramNotifications <= 0) {
- var num = Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_39__[/* getNumAvailableCreateProgram */ "b"])();
+ var num = Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_31__[/* getNumAvailableCreateProgram */ "b"])();
var elem = document.getElementById("create-program-notification");
if (num > 0) {
elem.innerHTML = num;
@@ -5822,30 +6050,30 @@ const Engine = {
}
if (Engine.Counters.checkFactionInvitations <= 0) {
- var invitedFactions = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].checkForFactionInvitations();
+ var invitedFactions = _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].checkForFactionInvitations();
if (invitedFactions.length > 0) {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstFacInvRecvd === false) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstFacInvRecvd = true;
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstFacInvRecvd === false) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstFacInvRecvd = true;
document.getElementById("factions-tab").style.display = "list-item";
document.getElementById("character-menu-header").click();
document.getElementById("character-menu-header").click();
}
var randFaction = invitedFactions[Math.floor(Math.random() * invitedFactions.length)];
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_25__[/* inviteToFaction */ "b"])(randFaction);
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_17__[/* inviteToFaction */ "b"])(randFaction);
}
Engine.Counters.checkFactionInvitations = 100;
}
if (Engine.Counters.passiveFactionGrowth <= 0) {
var adjustedCycles = Math.floor((600 - Engine.Counters.passiveFactionGrowth));
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_25__[/* processPassiveFactionRepGain */ "d"])(adjustedCycles);
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_17__[/* processPassiveFactionRepGain */ "d"])(adjustedCycles);
Engine.Counters.passiveFactionGrowth = 600;
}
if (Engine.Counters.messages <= 0) {
- Object(_Message__WEBPACK_IMPORTED_MODULE_32__[/* checkForMessagesToSend */ "c"])();
- if (_Augmentations__WEBPACK_IMPORTED_MODULE_13__[/* Augmentations */ "c"][_Augmentations__WEBPACK_IMPORTED_MODULE_13__[/* AugmentationNames */ "b"].TheRedPill].owned) {
+ Object(_Message__WEBPACK_IMPORTED_MODULE_24__[/* checkForMessagesToSend */ "c"])();
+ if (_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_3__["Augmentations"][_Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_5__["AugmentationNames"].TheRedPill].owned) {
Engine.Counters.messages = 4500; //15 minutes for Red pill message
} else {
Engine.Counters.messages = 150;
@@ -5853,21 +6081,21 @@ const Engine = {
}
if (Engine.Counters.sCr <= 0) {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount) {
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* stockMarketCycle */ "q"])();
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].hasWseAccount) {
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* stockMarketCycle */ "q"])();
}
Engine.Counters.sCr = 1500;
}
if (Engine.Counters.mechanicProcess <= 0) {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"]) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation.process();
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_13__[/* Corporation */ "a"]) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation.process();
}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"]) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_7__[/* Bladeburner */ "a"]) {
try {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner.process();
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner.process();
} catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_6__[/* exceptionAlert */ "a"])("Exception caught in Bladeburner.process(): " + e);
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_55__["exceptionAlert"])("Exception caught in Bladeburner.process(): " + e);
}
}
@@ -5877,7 +6105,7 @@ const Engine = {
if (Engine.Counters.contractGeneration <= 0) {
// X% chance of a contract being generated
if (Math.random() <= 0.25) {
- Object(_CodingContractGenerator__WEBPACK_IMPORTED_MODULE_18__[/* generateRandomContract */ "a"])();
+ Object(_CodingContractGenerator__WEBPACK_IMPORTED_MODULE_10__[/* generateRandomContract */ "a"])();
}
Engine.Counters.contractGeneration = 3000;
}
@@ -5900,7 +6128,7 @@ const Engine = {
//Update progress bar
while (Engine._actionProgressBarCount * 2 <= percent) {
- Engine._actionProgressStr = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_10__["replaceAt"])(Engine._actionProgressStr, Engine._actionProgressBarCount, "|");
+ Engine._actionProgressStr = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_0__["replaceAt"])(Engine._actionProgressStr, Engine._actionProgressBarCount, "|");
Engine._actionProgressBarCount += 1;
}
@@ -5914,7 +6142,7 @@ const Engine = {
//Once percent is 100, the hack is completed
if (percent >= 100) {
Engine._actionInProgress = false;
- _Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].finishAction();
+ _Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].finishAction();
}
},
@@ -5987,130 +6215,129 @@ const Engine = {
var dev = document.getElementById("dev-tab");
//Load game from save or create new game
- if (Object(_SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* loadGame */ "a"])(saveString)) {
+ if (Object(_SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* loadGame */ "a"])(saveString)) {
console.log("Loaded game from save");
- Object(_BitNode__WEBPACK_IMPORTED_MODULE_14__[/* initBitNodes */ "c"])();
- Object(_BitNode__WEBPACK_IMPORTED_MODULE_14__[/* initBitNodeMultipliers */ "b"])();
- Object(_SourceFile__WEBPACK_IMPORTED_MODULE_46__[/* initSourceFiles */ "d"])();
+ Object(_BitNode_BitNode__WEBPACK_IMPORTED_MODULE_6__[/* initBitNodes */ "c"])();
+ Object(_BitNode_BitNode__WEBPACK_IMPORTED_MODULE_6__[/* initBitNodeMultipliers */ "b"])();
+ Object(_SourceFile__WEBPACK_IMPORTED_MODULE_37__[/* initSourceFiles */ "c"])();
Engine.setDisplayElements(); //Sets variables for important DOM elements
Engine.init(); //Initialize buttons, work, etc.
- Object(_Augmentations__WEBPACK_IMPORTED_MODULE_13__[/* initAugmentations */ "h"])(); //Also calls Player.reapplyAllAugmentations()
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].reapplyAllSourceFiles();
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* initStockSymbols */ "i"])();
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount) {
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* initSymbolToStockMap */ "j"])();
+ Object(_Augmentation_AugmentationHelpers__WEBPACK_IMPORTED_MODULE_4__[/* initAugmentations */ "d"])(); //Also calls Player.reapplyAllAugmentations()
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].reapplyAllSourceFiles();
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* initStockSymbols */ "i"])();
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].hasWseAccount) {
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* initSymbolToStockMap */ "j"])();
}
- Object(_Literature__WEBPACK_IMPORTED_MODULE_31__[/* initLiterature */ "a"])();
- Object(_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_34__[/* initSingularitySFFlags */ "g"])();
-
- console.log(_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].intelligence_exp);
+ Object(_Literature__WEBPACK_IMPORTED_MODULE_23__[/* initLiterature */ "a"])();
+ Object(_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_26__[/* initSingularitySFFlags */ "g"])();
+ Object(_SourceFile_SourceFileFlags__WEBPACK_IMPORTED_MODULE_38__["updateSourceFileFlags"])(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"]);
//Calculate the number of cycles have elapsed while offline
Engine._lastUpdate = new Date().getTime();
- var lastUpdate = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].lastUpdate;
+ var lastUpdate = _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].lastUpdate;
var numCyclesOffline = Math.floor((Engine._lastUpdate - lastUpdate) / Engine._idleSpeed);
/* Process offline progress */
- var offlineProductionFromScripts = Object(_Script__WEBPACK_IMPORTED_MODULE_42__[/* loadAllRunningScripts */ "f"])(); //This also takes care of offline production for those scripts
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].isWorking) {
+ var offlineProductionFromScripts = Object(_Script__WEBPACK_IMPORTED_MODULE_34__[/* loadAllRunningScripts */ "f"])(); //This also takes care of offline production for those scripts
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].isWorking) {
console.log("work() called in load() for " + numCyclesOffline * Engine._idleSpeed + " milliseconds");
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeFaction) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workForFaction(numCyclesOffline);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].createProgramWork(numCyclesOffline);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeStudyClass) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].takeClass(numCyclesOffline);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCrime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].commitCrime(numCyclesOffline);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workPartTime(numCyclesOffline);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeFaction) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workForFaction(numCyclesOffline);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCreateProgram) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].createProgramWork(numCyclesOffline);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeStudyClass) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].takeClass(numCyclesOffline);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCrime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].commitCrime(numCyclesOffline);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCompanyPartTime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workPartTime(numCyclesOffline);
} else {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].work(numCyclesOffline);
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].work(numCyclesOffline);
}
}
//Hacknet Nodes offline progress
- var offlineProductionFromHacknetNodes = Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_29__[/* processAllHacknetNodeEarnings */ "d"])(numCyclesOffline);
+ var offlineProductionFromHacknetNodes = Object(_HacknetNode__WEBPACK_IMPORTED_MODULE_21__[/* processAllHacknetNodeEarnings */ "d"])(numCyclesOffline);
//Passive faction rep gain offline
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_25__[/* processPassiveFactionRepGain */ "d"])(numCyclesOffline);
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_17__[/* processPassiveFactionRepGain */ "d"])(numCyclesOffline);
// Stock Market offline progress
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount) {
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* processStockPrices */ "m"])(numCyclesOffline);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].hasWseAccount) {
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* processStockPrices */ "m"])(numCyclesOffline);
}
// Gang progress for BitNode 2
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bitNodeN != null && _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bitNodeN === 2 && _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].inGang()) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].gang.process(numCyclesOffline, _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"]);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bitNodeN != null && _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bitNodeN === 2 && _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].inGang()) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].gang.process(numCyclesOffline, _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"]);
}
// Corporation offline progress
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"]) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation.storeCycles(numCyclesOffline);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_13__[/* Corporation */ "a"]) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation.storeCycles(numCyclesOffline);
}
// Bladeburner offline progress
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"]) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner.storeCycles(numCyclesOffline);
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_7__[/* Bladeburner */ "a"]) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner.storeCycles(numCyclesOffline);
}
//Update total playtime
var time = numCyclesOffline * Engine._idleSpeed;
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime = 0;}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug = 0;}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode == null) {_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode = 0;}
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].totalPlaytime += time;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastAug += time;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].playtimeSinceLastBitnode += time;
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime = 0;}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug = 0;}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode == null) {_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode = 0;}
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].totalPlaytime += time;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastAug += time;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].playtimeSinceLastBitnode += time;
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].lastUpdate = Engine._lastUpdate;
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].lastUpdate = Engine._lastUpdate;
Engine.start(); //Run main game loop and Scripts loop
- Object(_utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_7__["removeLoadingScreen"])();
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("While you were offline, your scripts generated $" +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(offlineProductionFromHacknetNodes, 2) + "");
+ Object(_utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_56__["removeLoadingScreen"])();
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_49__["dialogBoxCreate"])("While you were offline, your scripts generated $" +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_0__["formatNumber"])(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_0__["formatNumber"])(offlineProductionFromHacknetNodes, 2) + "");
//Close main menu accordions for loaded game
var visibleMenuTabs = [terminal, createScript, activeScripts, stats,
hacknetnodes, city, tutorial, options, dev];
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstFacInvRecvd) {visibleMenuTabs.push(factions);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstFacInvRecvd) {visibleMenuTabs.push(factions);}
else {factions.style.display = "none";}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstAugPurchased) {visibleMenuTabs.push(augmentations);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstAugPurchased) {visibleMenuTabs.push(augmentations);}
else {augmentations.style.display = "none";}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].companyPosition !== "") {visibleMenuTabs.push(job);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].companyName !== "") {visibleMenuTabs.push(job);}
else {job.style.display = "none";}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstTimeTraveled) {visibleMenuTabs.push(travel);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstTimeTraveled) {visibleMenuTabs.push(travel);}
else {travel.style.display = "none";}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].firstProgramAvailable) {visibleMenuTabs.push(createProgram);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].firstProgramAvailable) {visibleMenuTabs.push(createProgram);}
else {createProgram.style.display = "none";}
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount) {visibleMenuTabs.push(stockmarket);}
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].hasWseAccount) {visibleMenuTabs.push(stockmarket);}
else {stockmarket.style.display = "none";}
- if(_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"]) {visibleMenuTabs.push(bladeburner);}
+ if(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_7__[/* Bladeburner */ "a"]) {visibleMenuTabs.push(bladeburner);}
else {bladeburner.style.display = "none";}
- if(_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"]) {visibleMenuTabs.push(corp);}
+ if(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_13__[/* Corporation */ "a"]) {visibleMenuTabs.push(corp);}
else {corp.style.display = "none";}
- if(_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].inGang()) {visibleMenuTabs.push(gang);}
+ if(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].inGang()) {visibleMenuTabs.push(gang);}
else {gang.style.display = "none";}
Engine.closeMainMenuHeader(visibleMenuTabs);
} else {
//No save found, start new game
console.log("Initializing new game");
- Object(_BitNode__WEBPACK_IMPORTED_MODULE_14__[/* initBitNodes */ "c"])();
- Object(_BitNode__WEBPACK_IMPORTED_MODULE_14__[/* initBitNodeMultipliers */ "b"])();
- Object(_SourceFile__WEBPACK_IMPORTED_MODULE_46__[/* initSourceFiles */ "d"])();
- Object(_SpecialServerIps__WEBPACK_IMPORTED_MODULE_47__[/* initSpecialServerIps */ "c"])();
+ Object(_BitNode_BitNode__WEBPACK_IMPORTED_MODULE_6__[/* initBitNodes */ "c"])();
+ Object(_BitNode_BitNode__WEBPACK_IMPORTED_MODULE_6__[/* initBitNodeMultipliers */ "b"])();
+ Object(_SourceFile__WEBPACK_IMPORTED_MODULE_37__[/* initSourceFiles */ "c"])();
+ Object(_SpecialServerIps__WEBPACK_IMPORTED_MODULE_39__[/* initSpecialServerIps */ "c"])();
Engine.setDisplayElements(); //Sets variables for important DOM elements
Engine.start(); //Run main game loop and Scripts loop
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].init();
- Object(_Server__WEBPACK_IMPORTED_MODULE_43__[/* initForeignServers */ "f"])();
- Object(_Company_Companies__WEBPACK_IMPORTED_MODULE_20__["initCompanies"])();
- Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_24__["initFactions"])();
- Object(_Augmentations__WEBPACK_IMPORTED_MODULE_13__[/* initAugmentations */ "h"])();
- Object(_Message__WEBPACK_IMPORTED_MODULE_32__[/* initMessages */ "d"])();
- Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_48__[/* initStockSymbols */ "i"])();
- Object(_Literature__WEBPACK_IMPORTED_MODULE_31__[/* initLiterature */ "a"])();
- Object(_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_34__[/* initSingularitySFFlags */ "g"])();
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].init();
+ Object(_Server__WEBPACK_IMPORTED_MODULE_35__[/* initForeignServers */ "f"])();
+ Object(_Company_Companies__WEBPACK_IMPORTED_MODULE_12__["initCompanies"])();
+ Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_16__["initFactions"])();
+ Object(_Augmentation_AugmentationHelpers__WEBPACK_IMPORTED_MODULE_4__[/* initAugmentations */ "d"])();
+ Object(_Message__WEBPACK_IMPORTED_MODULE_24__[/* initMessages */ "d"])();
+ Object(_StockMarket_StockMarket__WEBPACK_IMPORTED_MODULE_40__[/* initStockSymbols */ "i"])();
+ Object(_Literature__WEBPACK_IMPORTED_MODULE_23__[/* initLiterature */ "a"])();
+ Object(_NetscriptFunctions__WEBPACK_IMPORTED_MODULE_26__[/* initSingularitySFFlags */ "g"])();
//Open main menu accordions for new game
//Main menu accordions
@@ -6142,19 +6369,19 @@ const Engine = {
);
//Start interactive tutorial
- Object(_InteractiveTutorial__WEBPACK_IMPORTED_MODULE_30__[/* iTutorialStart */ "c"])();
- Object(_utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_7__["removeLoadingScreen"])();
+ Object(_InteractiveTutorial__WEBPACK_IMPORTED_MODULE_22__[/* iTutorialStart */ "c"])();
+ Object(_utils_uiHelpers_removeLoadingScreen__WEBPACK_IMPORTED_MODULE_56__["removeLoadingScreen"])();
}
//Initialize labels on game settings
- Object(_ui_setSettingsLabels__WEBPACK_IMPORTED_MODULE_45__[/* setSettingsLabels */ "a"])();
- Object(_Script__WEBPACK_IMPORTED_MODULE_42__[/* scriptEditorInit */ "g"])();
- _Terminal__WEBPACK_IMPORTED_MODULE_49__[/* Terminal */ "a"].resetTerminalInput();
+ Object(_ui_setSettingsLabels__WEBPACK_IMPORTED_MODULE_46__[/* setSettingsLabels */ "a"])();
+ Object(_Script__WEBPACK_IMPORTED_MODULE_34__[/* scriptEditorInit */ "g"])();
+ _Terminal__WEBPACK_IMPORTED_MODULE_41__[/* Terminal */ "a"].resetTerminalInput();
},
setDisplayElements: function() {
//Content elements
Engine.Display.terminalContent = document.getElementById("terminal-container");
- _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["routing"].navigateTo(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_51__["Page"].Terminal);
+ _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["routing"].navigateTo(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_44__["Page"].Terminal);
Engine.Display.characterContent = document.getElementById("character-container");
Engine.Display.characterContent.style.display = "none";
@@ -6230,278 +6457,164 @@ const Engine = {
Engine.Display.cinematicTextContent.style.display = "none";
//Init Location buttons
- Object(_Location__WEBPACK_IMPORTED_MODULE_27__[/* initLocationButtons */ "b"])();
+ Object(_Location__WEBPACK_IMPORTED_MODULE_19__[/* initLocationButtons */ "b"])();
//Tutorial buttons
Engine.Clickables.tutorialNetworkingButton = document.getElementById("tutorial-networking-link");
Engine.Clickables.tutorialNetworkingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialNetworkingText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialNetworkingText);
});
Engine.Clickables.tutorialHackingButton = document.getElementById("tutorial-hacking-link");
Engine.Clickables.tutorialHackingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialHackingText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialHackingText);
});
Engine.Clickables.tutorialScriptsButton = document.getElementById("tutorial-scripts-link");
Engine.Clickables.tutorialScriptsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialScriptsText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialScriptsText);
});
Engine.Clickables.tutorialNetscriptButton = document.getElementById("tutorial-netscript-link");
Engine.Clickables.tutorialNetscriptButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialNetscriptText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialNetscriptText);
});
Engine.Clickables.tutorialTravelingButton = document.getElementById("tutorial-traveling-link");
Engine.Clickables.tutorialTravelingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialTravelingText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialTravelingText);
});
Engine.Clickables.tutorialCompaniesButton = document.getElementById("tutorial-jobs-link");
Engine.Clickables.tutorialCompaniesButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialCompaniesText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialCompaniesText);
});
Engine.Clickables.tutorialFactionsButton = document.getElementById("tutorial-factions-link");
Engine.Clickables.tutorialFactionsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialFactionsText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialFactionsText);
});
Engine.Clickables.tutorialAugmentationsButton = document.getElementById("tutorial-augmentations-link");
Engine.Clickables.tutorialAugmentationsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].TutorialAugmentationsText);
+ Engine.displayTutorialPage(_Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].TutorialAugmentationsText);
});
Engine.Clickables.tutorialBackButton = document.getElementById("tutorial-back-button");
Engine.Clickables.tutorialBackButton.addEventListener("click", function() {
Engine.displayTutorialContent();
});
+
+ // Initialize references to main menu links
+ if (!Object(_ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["initializeMainMenuLinks"])()) {
+ const errorMsg = "Failed to initialize Main Menu Links. Please try refreshing the page. " +
+ "If that doesn't work, report the issue to the developer";
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_55__["exceptionAlert"])(new Error(errorMsg));
+ return;
+ }
},
/* Initialization */
init: function() {
//Import game link
document.getElementById("import-game-link").onclick = function() {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].importGame();
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].importGame();
};
- //Main menu accordions
- var hackingHdr = document.getElementById("hacking-menu-header");
- var characterHdr = document.getElementById("character-menu-header");
- var worldHdr = document.getElementById("world-menu-header");
- var helpHdr = document.getElementById("help-menu-header");
-
- hackingHdr.onclick = function() {
- var terminal = document.getElementById("terminal-tab");
- var terminalLink = document.getElementById("terminal-menu-link");
- var createScript = document.getElementById("create-script-tab");
- var createScriptLink = document.getElementById("create-script-menu-link");
- var activeScripts = document.getElementById("active-scripts-tab");
- var activeScriptsLink = document.getElementById("active-scripts-menu-link");
- var createProgram = document.getElementById("create-program-tab");
- var createProgramLink = document.getElementById("create-program-menu-link");
- var createProgramNot = document.getElementById("create-program-notification");
- this.classList.toggle("opened");
- if (terminal.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [terminal, createScript, activeScripts, createProgram],
- [terminalLink, createScriptLink, activeScriptsLink, createProgramLink]
- );
-
- createProgramNot.style.display = "none";
- } else {
- Engine.toggleMainMenuHeader(true,
- [terminal, createScript, activeScripts, createProgram],
- [terminalLink, createScriptLink, activeScriptsLink, createProgramLink]
- );
-
- createProgramNot.style.display = "block"
- }
+ // Initialize Main Menu Headers (this must be done after initializing the links)
+ if (!Object(_ui_MainMenu_Headers__WEBPACK_IMPORTED_MODULE_47__["initializeMainMenuHeaders"])(_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"], "development" === "development")) {
+ const errorMsg = "Failed to initialize Main Menu Headers. Please try refreshing the page. " +
+ "If that doesn't work, report the issue to the developer";
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_55__["exceptionAlert"])(new Error(errorMsg));
+ return;
}
- characterHdr.onclick = function() {
- var stats = document.getElementById("stats-tab");
- var statsLink = document.getElementById("stats-menu-link");
- var factions = document.getElementById("factions-tab");
- var factionsLink = document.getElementById("factions-menu-link");
- var augmentations = document.getElementById("augmentations-tab");
- var augmentationsLink = document.getElementById("augmentations-menu-link");
- var hacknetnodes = document.getElementById("hacknet-nodes-tab");
- var hacknetnodesLink = document.getElementById("hacknet-nodes-menu-link");
- this.classList.toggle("opened");
- if (stats.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [stats, factions, augmentations, hacknetnodes],
- [statsLink, factionsLink, augmentationsLink, hacknetnodesLink]
- );
- } else {
- Engine.toggleMainMenuHeader(true,
- [stats, factions, augmentations, hacknetnodes],
- [statsLink, factionsLink, augmentationsLink, hacknetnodesLink]
- );
- }
- }
-
- worldHdr.onclick = function() {
- var city = document.getElementById("city-tab");
- var cityLink = document.getElementById("city-menu-link");
- var travel = document.getElementById("travel-tab");
- var travelLink = document.getElementById("travel-menu-link");
- var job = document.getElementById("job-tab");
- var jobLink = document.getElementById("job-menu-link");
- var stockmarket = document.getElementById("stock-market-tab");
- var stockmarketLink = document.getElementById("stock-market-menu-link");
- var bladeburner = document.getElementById("bladeburner-tab");
- var bladeburnerLink = document.getElementById("bladeburner-menu-link");
- var corporation = document.getElementById("corporation-tab");
- var corporationLink = document.getElementById("corporation-menu-link");
- var gang = document.getElementById("gang-tab");
- var gangLink = document.getElementById("gang-menu-link");
-
- // Determine whether certain links should show up
- job.style.display = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].companyPosition !== "" ? "list-item" : "none";
- stockmarket.style.display = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].hasWseAccount ? "list-item" : "none";
- bladeburner.style.display = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].bladeburner instanceof _Bladeburner__WEBPACK_IMPORTED_MODULE_15__[/* Bladeburner */ "a"] ? "list-item" : "none";
- corporation.style.display = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].corporation instanceof _Corporation_Corporation__WEBPACK_IMPORTED_MODULE_21__[/* Corporation */ "a"] ? "list-item" : "none";
- gang.style.display = _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].inGang() ? "list-item" : "none";
-
- this.classList.toggle("opened");
- if (city.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [city, travel, job, stockmarket, bladeburner, corporation, gang],
- [cityLink, travelLink, jobLink, stockmarketLink, bladeburnerLink, corporationLink, gangLink]
- );
- } else {
- Engine.toggleMainMenuHeader(true,
- [city, travel, job, stockmarket, bladeburner, corporation, gang],
- [cityLink, travelLink, jobLink, stockmarketLink, bladeburnerLink, corporationLink, gangLink]
- );
- }
- }
-
- helpHdr.onclick = function() {
- var tutorial = document.getElementById("tutorial-tab");
- var tutorialLink = document.getElementById("tutorial-menu-link");
- var options = document.getElementById("options-tab");
- var optionsLink = document.getElementById("options-menu-link");
- this.classList.toggle("opened");
- const elems = [tutorial, options];
- const links = [tutorialLink, optionsLink];
- if (true) {
- elems.push(document.getElementById("dev-tab"));
- links.push(document.getElementById("dev-menu-link"));
- }
- if (tutorial.style.maxHeight) {
- Engine.toggleMainMenuHeader(false, elems, links);
- } else {
- Engine.toggleMainMenuHeader(true, elems, links);
- }
- }
-
- //Main menu buttons and content
- Engine.Clickables.terminalMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("terminal-menu-link");
- Engine.Clickables.terminalMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Terminal.addEventListener("click", function() {
Engine.loadTerminalContent();
return false;
});
- Engine.Clickables.characterMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("stats-menu-link");
- Engine.Clickables.characterMainMenuButton.addEventListener("click", function() {
- Engine.loadCharacterContent();
- return false;
- });
-
- Engine.Clickables.scriptEditorMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("create-script-menu-link");
- Engine.Clickables.scriptEditorMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].ScriptEditor.addEventListener("click", function() {
Engine.loadScriptEditorContent();
return false;
});
- Engine.Clickables.activeScriptsMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("active-scripts-menu-link");
- Engine.Clickables.activeScriptsMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].ActiveScripts.addEventListener("click", function() {
Engine.loadActiveScriptsContent();
return false;
});
- Engine.Clickables.hacknetNodesMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("hacknet-nodes-menu-link");
- Engine.Clickables.hacknetNodesMainMenuButton.addEventListener("click", function() {
- Engine.loadHacknetNodesContent();
- return false;
- });
-
- Engine.Clickables.worldMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("city-menu-link");
- Engine.Clickables.worldMainMenuButton.addEventListener("click", function() {
- Engine.loadWorldContent();
- return false;
- });
-
- Engine.Clickables.travelMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("travel-menu-link");
- Engine.Clickables.travelMainMenuButton.addEventListener("click", function() {
- Engine.loadTravelContent();
- Engine.Clickables.travelMainMenuButton.classList.add("active");
- return false;
- });
-
- Engine.Clickables.jobMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("job-menu-link");
- Engine.Clickables.jobMainMenuButton.addEventListener("click", function() {
- Engine.loadJobContent();
- return false;
- });
-
- Engine.Clickables.stockmarketMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("stock-market-menu-link");
- Engine.Clickables.stockmarketMainMenuButton.addEventListener("click", function() {
- Engine.loadStockMarketContent();
- Engine.Clickables.stockmarketMainMenuButton.classList.add("active");
- return false;
- });
-
-
- Engine.Clickables.createProgramMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("create-program-menu-link");
- Engine.Clickables.createProgramMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].CreateProgram.addEventListener("click", function() {
Engine.loadCreateProgramContent();
return false;
});
- Engine.Clickables.factionsMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("factions-menu-link");
- Engine.Clickables.factionsMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Stats.addEventListener("click", function() {
+ Engine.loadCharacterContent();
+ return false;
+ });
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Factions.addEventListener("click", function() {
Engine.loadFactionsContent();
return false;
});
- Engine.Clickables.augmentationsMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("augmentations-menu-link");
- Engine.Clickables.augmentationsMainMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Augmentations.addEventListener("click", function() {
Engine.loadAugmentationsContent();
return false;
});
- Engine.Clickables.tutorialMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("tutorial-menu-link");
- Engine.Clickables.tutorialMainMenuButton.addEventListener("click", function() {
- Engine.loadTutorialContent();
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].HacknetNodes.addEventListener("click", function() {
+ Engine.loadHacknetNodesContent();
return false;
});
- Engine.Clickables.bladeburnerMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("bladeburner-menu-link");
- Engine.Clickables.bladeburnerMenuButton.addEventListener("click", function() {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].City.addEventListener("click", function() {
+ Engine.loadWorldContent();
+ return false;
+ });
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Travel.addEventListener("click", function() {
+ Engine.loadTravelContent();
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Travel.classList.add("active");
+ return false;
+ });
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Job.addEventListener("click", function() {
+ Engine.loadJobContent();
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Job.classList.add("active");
+ return false;
+ });
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].StockMarket.addEventListener("click", function() {
+ Engine.loadStockMarketContent();
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].StockMarket.classList.add("active");
+ return false;
+ });
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Bladeburner.addEventListener("click", function() {
Engine.loadBladeburnerContent();
return false;
});
- Engine.Clickables.corporationMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("corporation-menu-link");
- Engine.Clickables.corporationMenuButton.addEventListener("click", function() {
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Corporation.addEventListener("click", function() {
Engine.loadCorporationContent();
- Engine.Clickables.corporationMenuButton.classList.add("active");
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Corporation.classList.add("active");
return false;
});
- Engine.Clickables.gangMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("gang-menu-link");
- Engine.Clickables.gangMenuButton.addEventListener("click", function() {
+
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Gang.addEventListener("click", function() {
Engine.loadGangContent();
return false;
});
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].Tutorial.addEventListener("click", function() {
+ Engine.loadTutorialContent();
+ return false;
+ });
- Engine.Clickables.devMainMenuButton = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_4__["clearEventListeners"])("dev-menu-link");
- Engine.Clickables.devMainMenuButton.addEventListener("click", function() {
- if( true) {
+ _ui_MainMenu_Links__WEBPACK_IMPORTED_MODULE_48__["MainMenuLinks"].DevMenu.addEventListener("click", function() {
+ if (true) {
Engine.loadDevMenuContent();
}
return false;
@@ -6513,55 +6626,55 @@ const Engine = {
//Save, Delete, Import/Export buttons
Engine.Clickables.saveMainMenuButton = document.getElementById("save-game-link");
Engine.Clickables.saveMainMenuButton.addEventListener("click", function() {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].saveGame(indexedDb);
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].saveGame(indexedDb);
return false;
});
Engine.Clickables.deleteMainMenuButton = document.getElementById("delete-game-link");
Engine.Clickables.deleteMainMenuButton.addEventListener("click", function() {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].deleteGame(indexedDb);
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].deleteGame(indexedDb);
return false;
});
document.getElementById("export-game-link").addEventListener("click", function() {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].exportGame();
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].exportGame();
return false;
});
//Character Overview buttons
document.getElementById("character-overview-save-button").addEventListener("click", function() {
- _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].saveGame(indexedDb);
+ _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].saveGame(indexedDb);
return false;
});
document.getElementById("character-overview-options-button").addEventListener("click", function() {
- Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_1__[/* gameOptionsBoxOpen */ "b"])();
+ Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_50__[/* gameOptionsBoxOpen */ "b"])();
return false;
});
//Create Program buttons
- Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_39__[/* initCreateProgramButtons */ "c"])();
+ Object(_Programs_ProgramHelpers__WEBPACK_IMPORTED_MODULE_31__[/* initCreateProgramButtons */ "c"])();
//Message at the top of terminal
- Object(_Terminal__WEBPACK_IMPORTED_MODULE_49__[/* postNetburnerText */ "b"])();
+ Object(_Terminal__WEBPACK_IMPORTED_MODULE_41__[/* postNetburnerText */ "b"])();
//Player was working cancel button
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].isWorking) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].isWorking) {
var cancelButton = document.getElementById("work-in-progress-cancel-button");
cancelButton.addEventListener("click", function() {
- if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeFaction) {
- var fac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_24__["Factions"][_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].currentWorkFactionName];
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishFactionWork(true);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishCreateProgramWork(true);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeStudyClass) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishClass();
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCrime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishCrime(true);
- } else if (_Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_22__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishWorkPartTime();
+ if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeFaction) {
+ var fac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_16__["Factions"][_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].currentWorkFactionName];
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishFactionWork(true);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCreateProgram) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishCreateProgramWork(true);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeStudyClass) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishClass();
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCrime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishCrime(true);
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].workType == _Constants__WEBPACK_IMPORTED_MODULE_14__["CONSTANTS"].WorkTypeCompanyPartTime) {
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishWorkPartTime();
} else {
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].finishWork(true);
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].finishWork(true);
}
});
Engine.loadWorkInProgressContent();
@@ -6581,7 +6694,7 @@ const Engine = {
// Copy Save Data to Clipboard
document.getElementById("copy-save-to-clipboard-link").addEventListener("click", function() {
- const saveString = _SaveObject__WEBPACK_IMPORTED_MODULE_41__[/* saveObject */ "b"].getSaveString();
+ const saveString = _SaveObject__WEBPACK_IMPORTED_MODULE_33__[/* saveObject */ "b"].getSaveString();
if (!navigator.clipboard) {
// Async Clipboard API not supported, so we'll use this using the
// textarea and document.execCommand('copy') trick
@@ -6596,22 +6709,22 @@ const Engine = {
try {
const successful = document.execCommand("copy");
if (successful) {
- Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_9__["createStatusText"])("Copied save to clipboard");
+ Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_43__["createStatusText"])("Copied save to clipboard");
} else {
- Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_9__["createStatusText"])("Failed to copy save");
+ Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_43__["createStatusText"])("Failed to copy save");
}
} catch(e) {
console.error("Unable to copy save data to clipboard using document.execCommand('copy')");
- Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_9__["createStatusText"])("Failed to copy save");
+ Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_43__["createStatusText"])("Failed to copy save");
}
document.body.removeChild(textArea);
} else {
// Use the Async Clipboard API
navigator.clipboard.writeText(saveString).then(function() {
- Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_9__["createStatusText"])("Copied save to clipboard");
+ Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_43__["createStatusText"])("Copied save to clipboard");
}, function(e) {
console.error("Unable to copy save data to clipboard using Async API");
- Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_9__["createStatusText"])("Failed to copy save");
+ Object(_ui_createStatusText__WEBPACK_IMPORTED_MODULE_43__["createStatusText"])("Failed to copy save");
})
}
});
@@ -6619,17 +6732,17 @@ const Engine = {
//DEBUG Delete active Scripts on home
document.getElementById("debug-delete-scripts-link").addEventListener("click", function() {
console.log("Deleting running scripts on home computer");
- _Player__WEBPACK_IMPORTED_MODULE_36__[/* Player */ "a"].getHomeComputer().runningScripts = [];
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Forcefully deleted all running scripts on home computer. Please save and refresh page");
- Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_1__[/* gameOptionsBoxClose */ "a"])();
+ _Player__WEBPACK_IMPORTED_MODULE_28__[/* Player */ "a"].getHomeComputer().runningScripts = [];
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_49__["dialogBoxCreate"])("Forcefully deleted all running scripts on home computer. Please save and refresh page");
+ Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_50__[/* gameOptionsBoxClose */ "a"])();
return false;
});
//DEBUG Soft Reset
document.getElementById("debug-soft-reset").addEventListener("click", function() {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Soft Reset!");
- Object(_Prestige__WEBPACK_IMPORTED_MODULE_37__[/* prestigeAugmentation */ "a"])();
- Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_1__[/* gameOptionsBoxClose */ "a"])();
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_49__["dialogBoxCreate"])("Soft Reset!");
+ Object(_Prestige__WEBPACK_IMPORTED_MODULE_29__[/* prestigeAugmentation */ "a"])();
+ Object(_utils_GameOptions__WEBPACK_IMPORTED_MODULE_50__[/* gameOptionsBoxClose */ "a"])();
return false;
});
},
@@ -6639,7 +6752,7 @@ const Engine = {
Engine.idleTimer();
//Scripts
- Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_35__[/* runScriptsLoop */ "f"])();
+ Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_27__[/* runScriptsLoop */ "f"])();
}
};
@@ -6684,57 +6797,10 @@ window.onload = function() {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 10 */
-/*!***********************************!*\
- !*** ./src/BitNodeMultipliers.ts ***!
- \***********************************/
-/*! no static exports found */
-/*! exports used: BitNodeMultipliers */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-/**
- * The multipliers that are influenced by current Bitnode progression.
- */
-// tslint:disable-next-line:variable-name
-exports.BitNodeMultipliers = {
- HackingLevelMultiplier: 1,
- ServerGrowthRate: 1,
- ServerMaxMoney: 1,
- ServerStartingMoney: 1,
- ServerStartingSecurity: 1,
- ServerWeakenRate: 1,
- CompanyWorkMoney: 1,
- CrimeMoney: 1,
- HacknetNodeMoney: 1,
- ManualHackMoney: 1,
- ScriptHackMoney: 1,
- CodingContractMoney: 1,
- ClassGymExpGain: 1,
- CompanyWorkExpGain: 1,
- CrimeExpGain: 1,
- FactionWorkExpGain: 1,
- HackExpGain: 1,
- FactionPassiveRepGain: 1,
- FactionWorkRepGain: 1,
- RepToDonateToFaction: 1,
- AugmentationMoneyCost: 1,
- AugmentationRepCost: 1,
- InfiltrationMoney: 1,
- InfiltrationRep: 1,
- CorporationValuation: 1,
- BladeburnerRank: 1,
- BladeburnerSkillCost: 1,
-};
-
-
-/***/ }),
-/* 11 */
+/* 12 */
/*!***********************!*\
!*** ./src/Server.js ***!
\***********************/
@@ -6754,26 +6820,26 @@ exports.BitNodeMultipliers = {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getServer; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return Server; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return AllServers; });
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodingContracts */ 42);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodingContracts */ 46);
/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_CodingContracts__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Script */ 31);
+/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Script */ 35);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Programs/Programs */ 24);
+/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Programs/Programs */ 26);
/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Programs_Programs__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SpecialServerIps */ 33);
-/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TextFile */ 65);
+/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SpecialServerIps */ 36);
+/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TextFile */ 69);
/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 17);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _utils_IPAddress__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/IPAddress */ 62);
-/* harmony import */ var _data_servers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./data/servers */ 137);
+/* harmony import */ var _utils_IPAddress__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/IPAddress */ 66);
+/* harmony import */ var _data_servers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./data/servers */ 150);
/* harmony import */ var _data_servers__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_data_servers__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_helpers_isValidIPAddress__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/isValidIPAddress */ 90);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_helpers_isValidIPAddress__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/isValidIPAddress */ 94);
/* harmony import */ var _utils_helpers_isValidIPAddress__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isValidIPAddress__WEBPACK_IMPORTED_MODULE_12__);
@@ -6826,11 +6892,11 @@ function Server(params={ip:Object(_utils_IPAddress__WEBPACK_IMPORTED_MODULE_9__[
/* Hacking information (only valid for "foreign" aka non-purchased servers) */
this.requiredHackingSkill = params.requiredHackingSkill != null ? params.requiredHackingSkill : 1;
- this.moneyAvailable = params.moneyAvailable != null ? params.moneyAvailable * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingMoney : 0;
- this.moneyMax = 25 * this.moneyAvailable * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerMaxMoney;
+ this.moneyAvailable = params.moneyAvailable != null ? params.moneyAvailable * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingMoney : 0;
+ this.moneyMax = 25 * this.moneyAvailable * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerMaxMoney;
//Hack Difficulty is synonymous with server security. Base Difficulty = Starting difficulty
- this.hackDifficulty = params.hackDifficulty != null ? params.hackDifficulty * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingSecurity : 1;
+ this.hackDifficulty = params.hackDifficulty != null ? params.hackDifficulty * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingSecurity : 1;
this.baseDifficulty = this.hackDifficulty;
this.minDifficulty = Math.max(1, Math.round(this.hackDifficulty / 3));
this.serverGrowth = params.serverGrowth != null ? params.serverGrowth : 1; //Integer from 0 to 100. Affects money increase from grow()
@@ -6889,7 +6955,7 @@ Server.prototype.fortify = function(amt) {
}
Server.prototype.weaken = function(amt) {
- this.hackDifficulty -= (amt * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerWeakenRate);
+ this.hackDifficulty -= (amt * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerWeakenRate);
this.capDifficulty();
}
@@ -7089,7 +7155,7 @@ function processSingleServerGrowth(server, numCycles) {
//Calculate adjusted server growth rate based on parameters
const serverGrowthPercentage = server.serverGrowth / 100;
- const numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerGrowthRate;
+ const numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerGrowthRate;
//Apply serverGrowth for the calculated number of growth cycles
var serverGrowth = Math.pow(adjGrowthRate, numServerGrowthCyclesAdjusted * _Player__WEBPACK_IMPORTED_MODULE_4__[/* Player */ "a"].hacking_grow_mult);
@@ -7241,12 +7307,27 @@ Directory.prototype.getPath = function(name) {
/***/ }),
-/* 12 */
+/* 13 */
+/*!*******************************************!*\
+ !*** ./src/Augmentation/Augmentations.ts ***!
+ \*******************************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Augmentations = {};
+
+
+/***/ }),
+/* 14 */
/*!**************************************!*\
!*** ./src/ui/navigationTracking.ts ***!
\**************************************/
/*! no static exports found */
-/*! exports used: Page, routing */
+/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -7346,6 +7427,14 @@ var Page;
* Manage special Bladeburner activities.
*/
Page["Bladeburner"] = "Bladeburner";
+ /**
+ * Manage your Sleeves
+ */
+ Page["Sleeves"] = "Sleeves";
+ /**
+ * Purchase Resleeves
+ */
+ Page["Resleeves"] = "Re-sleeving";
})(Page = exports.Page || (exports.Page = {}));
/**
* This class keeps track of player navigation/routing within the game.
@@ -7379,7 +7468,7 @@ exports.routing = new Routing();
/***/ }),
-/* 13 */
+/* 15 */
/*!******************************!*\
!*** ./utils/JSONReviver.js ***!
\******************************/
@@ -7405,6 +7494,7 @@ function Reviver(key, value) {
console.log("Reviver WRONGLY called with key: " + key + ", and value: " + value);
return 0;
}
+
if (typeof value === "object" &&
typeof value.ctor === "string" &&
typeof value.data !== "undefined") {
@@ -7466,12 +7556,12 @@ function Generic_fromJSON(ctor, data) {
/***/ }),
-/* 14 */
+/* 16 */
/*!*********************************!*\
!*** ./src/Faction/Factions.ts ***!
\*********************************/
/*! no static exports found */
-/*! exports used: Factions, factionExists, initFactions, loadFactions */
+/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -7481,9 +7571,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
* Initialization and manipulation of the Factions object, which stores data
* about all Factions in the game
*/
-const Faction_1 = __webpack_require__(/*! ./Faction */ 57);
-const FactionInfo_1 = __webpack_require__(/*! ./FactionInfo */ 115);
-const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
+const Faction_1 = __webpack_require__(/*! ./Faction */ 58);
+const FactionInfo_1 = __webpack_require__(/*! ./FactionInfo */ 123);
+const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
exports.Factions = {};
function loadFactions(saveString) {
exports.Factions = JSON.parse(saveString, JSONReviver_1.Reviver);
@@ -7522,7 +7612,7 @@ exports.resetFaction = resetFaction;
/***/ }),
-/* 15 */
+/* 17 */
/*!***************************************!*\
!*** ./utils/helpers/getRandomInt.ts ***!
\***************************************/
@@ -7547,57 +7637,192 @@ exports.getRandomInt = getRandomInt;
/***/ }),
-/* 16 */
-/*!************************************************!*\
- !*** ./utils/uiHelpers/clearEventListeners.ts ***!
- \************************************************/
+/* 18 */
+/*!******************************************!*\
+ !*** ./src/Augmentation/Augmentation.ts ***!
+ \******************************************/
+/*! no static exports found */
+/*! exports used: Augmentation */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+// Class definition for a single Augmentation object
+const Constants_1 = __webpack_require__(/*! ../Constants */ 1);
+const BitNodeMultipliers_1 = __webpack_require__(/*! ../BitNode/BitNodeMultipliers */ 10);
+const Factions_1 = __webpack_require__(/*! ../Faction/Factions */ 16);
+const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+class Augmentation {
+ constructor(params = { info: "", moneyCost: 0, name: "", repCost: 0 }) {
+ // How much money this costs to buy
+ this.baseCost = 0;
+ // How much faction reputation is required to unlock this
+ this.baseRepRequirement = 0;
+ // Description of what this Aug is and what it does
+ this.info = "";
+ // Augmentation level - for repeatable Augs like NeuroFlux Governor
+ this.level = 0;
+ // Name of Augmentation
+ this.name = "";
+ // Whether the player owns this Augmentation
+ this.owned = false;
+ // Array of names of all prerequisites
+ this.prereqs = [];
+ // Multipliers given by this Augmentation. Must match the property name in
+ // The Player/Person classes
+ this.mults = {};
+ this.name = params.name;
+ this.info = params.info;
+ this.prereqs = params.prereqs ? params.prereqs : [];
+ this.baseRepRequirement = params.repCost * Constants_1.CONSTANTS.AugmentationRepMultiplier * BitNodeMultipliers_1.BitNodeMultipliers.AugmentationRepCost;
+ this.baseCost = params.moneyCost * Constants_1.CONSTANTS.AugmentationCostMultiplier * BitNodeMultipliers_1.BitNodeMultipliers.AugmentationMoneyCost;
+ this.level = 0;
+ // Set multipliers
+ if (params.hacking_mult) {
+ this.mults.hacking_mult = params.hacking_mult;
+ }
+ if (params.strength_mult) {
+ this.mults.strength_mult = params.strength_mult;
+ }
+ if (params.defense_mult) {
+ this.mults.defense_mult = params.defense_mult;
+ }
+ if (params.dexterity_mult) {
+ this.mults.dexterity_mult = params.dexterity_mult;
+ }
+ if (params.agility_mult) {
+ this.mults.agility_mult = params.agility_mult;
+ }
+ if (params.charisma_mult) {
+ this.mults.charisma_mult = params.charisma_mult;
+ }
+ if (params.hacking_exp_mult) {
+ this.mults.hacking_exp_mult = params.hacking_exp_mult;
+ }
+ if (params.strength_exp_mult) {
+ this.mults.strength_exp_mult = params.strength_exp_mult;
+ }
+ if (params.defense_exp_mult) {
+ this.mults.defense_exp_mult = params.defense_exp_mult;
+ }
+ if (params.dexterity_exp_mult) {
+ this.mults.dexterity_exp_mult = params.dexterity_exp_mult;
+ }
+ if (params.agility_exp_mult) {
+ this.mults.agility_exp_mult = params.agility_exp_mult;
+ }
+ if (params.charisma_exp_mult) {
+ this.mults.charisma_exp_mult = params.charisma_exp_mult;
+ }
+ if (params.hacking_chance_mult) {
+ this.mults.hacking_chance_mult = params.hacking_chance_mult;
+ }
+ if (params.hacking_speed_mult) {
+ this.mults.hacking_speed_mult = params.hacking_speed_mult;
+ }
+ if (params.hacking_money_mult) {
+ this.mults.hacking_money_mult = params.hacking_money_mult;
+ }
+ if (params.hacking_grow_mult) {
+ this.mults.hacking_grow_mult = params.hacking_grow_mult;
+ }
+ if (params.company_rep_mult) {
+ this.mults.company_rep_mult = params.company_rep_mult;
+ }
+ if (params.faction_rep_mult) {
+ this.mults.faction_rep_mult = params.faction_rep_mult;
+ }
+ if (params.crime_money_mult) {
+ this.mults.crime_money_mult = params.crime_money_mult;
+ }
+ if (params.crime_success_mult) {
+ this.mults.crime_success_mult = params.crime_success_mult;
+ }
+ if (params.work_money_mult) {
+ this.mults.work_money_mult = params.work_money_mult;
+ }
+ if (params.hacknet_node_money_mult) {
+ this.mults.hacknet_node_money_mult = params.hacknet_node_money_mult;
+ }
+ if (params.hacknet_node_purchase_cost_mult) {
+ this.mults.hacknet_node_purchase_cost_mult = params.hacknet_node_purchase_cost_mult;
+ }
+ if (params.hacknet_node_ram_cost_mult) {
+ this.mults.hacknet_node_ram_cost_mult = params.hacknet_node_ram_cost_mult;
+ }
+ if (params.hacknet_node_core_cost_mult) {
+ this.mults.hacknet_node_core_cost_mult = params.hacknet_node_core_cost_mult;
+ }
+ if (params.hacknet_node_level_cost_mult) {
+ this.mults.hacknet_node_level_cost_mult = params.hacknet_node_level_cost_mult;
+ }
+ if (params.bladeburner_max_stamina_mult) {
+ this.mults.bladeburner_max_stamina_mult = params.bladeburner_max_stamina_mult;
+ }
+ if (params.bladeburner_stamina_gain_mult) {
+ this.mults.bladeburner_stamina_gain_mult = params.bladeburner_stamina_gain_mult;
+ }
+ if (params.bladeburner_analysis_mult) {
+ this.mults.bladeburner_analysis_mult = params.bladeburner_analysis_mult;
+ }
+ if (params.bladeburner_success_chance_mult) {
+ this.mults.bladeburner_success_chance_mult = params.bladeburner_success_chance_mult;
+ }
+ }
+ // Initiatizes a Augmentation object from a JSON save state.
+ static fromJSON(value) {
+ return JSONReviver_1.Generic_fromJSON(Augmentation, value.data);
+ }
+ // Adds this Augmentation to the specified Factions
+ addToFactions(factionList) {
+ for (let i = 0; i < factionList.length; ++i) {
+ const faction = Factions_1.Factions[factionList[i]];
+ if (faction == null) {
+ console.warn(`In Augmentation.addToFactions(), could not find faction with this name: ${factionList[i]}`);
+ continue;
+ }
+ faction.augmentations.push(this.name);
+ }
+ }
+ // Adds this Augmentation to all Factions
+ addToAllFactions() {
+ for (const fac in Factions_1.Factions) {
+ if (Factions_1.Factions.hasOwnProperty(fac)) {
+ const facObj = Factions_1.Factions[fac];
+ if (facObj == null) {
+ console.warn(`Invalid Faction object in addToAllFactions(). Key value: ${fac}`);
+ continue;
+ }
+ facObj.augmentations.push(this.name);
+ }
+ }
+ }
+ // Serialize the current object to a JSON save state.
+ toJSON() {
+ return JSONReviver_1.Generic_toJSON("Augmentation", this);
+ }
+}
+exports.Augmentation = Augmentation;
+JSONReviver_1.Reviver.constructors.Augmentation = Augmentation;
+
+
+/***/ }),
+/* 19 */
+/*!**********************************!*\
+ !*** ./src/Company/Companies.ts ***!
+ \**********************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-const getElementById_1 = __webpack_require__(/*! ./getElementById */ 54);
-/**
- * Given an element by its ID, removes all event listeners from that element by cloning and
- * replacing. Then returns the new cloned element.
- * @param elemId The HTML ID to retrieve the element by.
- */
-function clearEventListeners(elemId) {
- try {
- const elem = getElementById_1.getElementById(elemId);
- const newElem = elem.cloneNode(true);
- if (elem.parentNode !== null) {
- elem.parentNode.replaceChild(newElem, elem);
- }
- return newElem;
- }
- catch (e) {
- // tslint:disable-next-line:no-console
- console.error(e);
- return null;
- }
-}
-exports.clearEventListeners = clearEventListeners;
-
-
-/***/ }),
-/* 17 */
-/*!**********************************!*\
- !*** ./src/Company/Companies.ts ***!
- \**********************************/
-/*! no static exports found */
-/*! exports used: Companies, companyExists, initCompanies, loadCompanies */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
Object.defineProperty(exports, "__esModule", { value: true });
// Constructs all CompanyPosition objects using the metadata in data/companypositions.ts
-const CompaniesMetadata_1 = __webpack_require__(/*! ./data/CompaniesMetadata */ 214);
-const Company_1 = __webpack_require__(/*! ./Company */ 76);
-const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
+const CompaniesMetadata_1 = __webpack_require__(/*! ./data/CompaniesMetadata */ 232);
+const Company_1 = __webpack_require__(/*! ./Company */ 72);
+const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
exports.Companies = {};
function addCompany(params) {
if (exports.Companies[params.name] != null) {
@@ -7645,7 +7870,7 @@ exports.companyExists = companyExists;
/***/ }),
-/* 18 */
+/* 20 */
/*!*************************!*\
!*** ./src/Settings.ts ***!
\*************************/
@@ -7656,7 +7881,7 @@ exports.companyExists = companyExists;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const SettingEnums_1 = __webpack_require__(/*! ./SettingEnums */ 73);
+const SettingEnums_1 = __webpack_require__(/*! ./SettingEnums */ 77);
const defaultSettings = {
AutosaveInterval: 60,
CodeInstructionRunTime: 50,
@@ -7700,7 +7925,7 @@ exports.Settings = {
/***/ }),
-/* 19 */
+/* 21 */
/*!***************************!*\
!*** ./utils/YesNoBox.ts ***!
\***************************/
@@ -7719,7 +7944,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
* 1. Just a Yes/No response from player
* 2. Popup also includes a text input field in addition to the Yes/No response
*/
-const clearEventListeners_1 = __webpack_require__(/*! ./uiHelpers/clearEventListeners */ 16);
+const clearEventListeners_1 = __webpack_require__(/*! ./uiHelpers/clearEventListeners */ 22);
exports.yesNoBoxOpen = false;
const yesNoBoxContainer = document.getElementById("yes-no-box-container");
const yesNoBoxTextElement = document.getElementById("yes-no-box-text");
@@ -7854,7 +8079,43 @@ exports.yesNoTxtInpBoxCreate = yesNoTxtInpBoxCreate;
/***/ }),
-/* 20 */
+/* 22 */
+/*!************************************************!*\
+ !*** ./utils/uiHelpers/clearEventListeners.ts ***!
+ \************************************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const getElementById_1 = __webpack_require__(/*! ./getElementById */ 57);
+/**
+ * Given an element by its ID, removes all event listeners from that element by cloning and
+ * replacing. Then returns the new cloned element.
+ * @param elemId The HTML ID to retrieve the element by.
+ */
+function clearEventListeners(elemId) {
+ try {
+ const elem = getElementById_1.getElementById(elemId);
+ const newElem = elem.cloneNode(true);
+ if (elem.parentNode !== null) {
+ elem.parentNode.replaceChild(newElem, elem);
+ }
+ return newElem;
+ }
+ catch (e) {
+ // tslint:disable-next-line:no-console
+ console.error(e);
+ return null;
+ }
+}
+exports.clearEventListeners = clearEventListeners;
+
+
+/***/ }),
+/* 23 */
/*!**********************************************!*\
!*** ./utils/uiHelpers/removeElementById.ts ***!
\**********************************************/
@@ -7865,8 +8126,8 @@ exports.yesNoTxtInpBoxCreate = yesNoTxtInpBoxCreate;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const getElementById_1 = __webpack_require__(/*! ./getElementById */ 54);
-const removeElement_1 = __webpack_require__(/*! ./removeElement */ 61);
+const getElementById_1 = __webpack_require__(/*! ./getElementById */ 57);
+const removeElement_1 = __webpack_require__(/*! ./removeElement */ 63);
/**
* Given its id, this function removes an element AND its children
* @param id The HTML identifier to search for and remove.
@@ -7884,2751 +8145,7 @@ exports.removeElementById = removeElementById;
/***/ }),
-/* 21 */
-/*!******************************!*\
- !*** ./src/Augmentations.js ***!
- \******************************/
-/*! exports provided: AugmentationNames, Augmentations, PlayerOwnedAugmentation, installAugmentations, initAugmentations, applyAugmentation, augmentationExists, Augmentation, displayAugmentationsContent */
-/*! exports used: Augmentation, AugmentationNames, Augmentations, PlayerOwnedAugmentation, applyAugmentation, augmentationExists, displayAugmentationsContent, initAugmentations, installAugmentations */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return AugmentationNames; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return Augmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return PlayerOwnedAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return installAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return initAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return applyAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return augmentationExists; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Augmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return displayAugmentationsContent; });
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants */ 1);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction/Factions */ 14);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptFunctions */ 43);
-/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptWorker */ 26);
-/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Prestige__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Prestige */ 88);
-/* harmony import */ var _SaveObject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./SaveObject */ 74);
-/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Script */ 31);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Server */ 11);
-/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./SettingEnums */ 73);
-/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_SettingEnums__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Settings */ 18);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SourceFile */ 70);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/uiHelpers/createAccordionElement */ 79);
-/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/helpers/clearObject */ 80);
-/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_17__);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/helpers/isString */ 40);
-/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 30);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20__);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//Augmentations
-function Augmentation(params) {
- if (params.name == null || params.info == null || params.moneyCost == null || params.repCost == null) {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("ERROR Creating Augmentations. This is a bug please contact game dev");
- return;
- }
- this.name = params.name;
- this.info = params.info;
- this.owned = false;
- this.prereqs = params.prereqs ? params.prereqs : [];
-
- //Price and reputation base requirements (can change based on faction multipliers)
- this.baseRepRequirement = params.repCost * _Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- this.baseCost = params.moneyCost * _Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
-
- //Level - Only applicable for some augmentations
- // NeuroFlux Governor
- this.level = 0;
-}
-
-//Takes in an array of faction names and adds this augmentation to all of those factions
-Augmentation.prototype.addToFactions = function(factionList) {
- for (var i = 0; i < factionList.length; ++i) {
- var faction = _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"][factionList[i]];
- if (faction == null) {
- throw new Error("In Augmentation.addToFactions(), could not find faction with this name:" + factionList[i]);
- continue;
- }
- faction.augmentations.push(this.name);
- }
-}
-
-Augmentation.prototype.addToAllFactions = function() {
- for (var fac in _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]) {
- if (_Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"].hasOwnProperty(fac)) {
- var facObj = _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"][fac];
- if (facObj == null) {
- console.log("ERROR: Invalid faction object");
- continue;
- }
- facObj.augmentations.push(this.name);
- }
- }
-}
-
-Augmentation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("Augmentation", this);
-}
-
-Augmentation.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(Augmentation, value.data);
-}
-
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.Augmentation = Augmentation;
-
-let Augmentations = {}
-
-function AddToAugmentations(aug) {
- var name = aug.name;
- Augmentations[name] = aug;
-}
-
-let AugmentationNames = {
- Targeting1: "Augmented Targeting I",
- Targeting2: "Augmented Targeting II",
- Targeting3: "Augmented Targeting III",
- SyntheticHeart: "Synthetic Heart",
- SynfibrilMuscle: "Synfibril Muscle",
- CombatRib1: "Combat Rib I",
- CombatRib2: "Combat Rib II",
- CombatRib3: "Combat Rib III",
- NanofiberWeave: "Nanofiber Weave",
- SubdermalArmor: "NEMEAN Subdermal Weave",
- WiredReflexes: "Wired Reflexes",
- GrapheneBoneLacings: "Graphene Bone Lacings",
- BionicSpine: "Bionic Spine",
- GrapheneBionicSpine: "Graphene Bionic Spine Upgrade",
- BionicLegs: "Bionic Legs",
- GrapheneBionicLegs: "Graphene Bionic Legs Upgrade",
- SpeechProcessor: "Speech Processor Implant",
- TITN41Injection: "TITN-41 Gene-Modification Injection",
- EnhancedSocialInteractionImplant: "Enhanced Social Interaction Implant",
- BitWire: "BitWire",
- ArtificialBioNeuralNetwork: "Artificial Bio-neural Network Implant",
- ArtificialSynapticPotentiation: "Artificial Synaptic Potentiation",
- EnhancedMyelinSheathing: "Enhanced Myelin Sheathing",
- SynapticEnhancement: "Synaptic Enhancement Implant",
- NeuralRetentionEnhancement: "Neural-Retention Enhancement",
- DataJack: "DataJack",
- ENM: "Embedded Netburner Module",
- ENMCore: "Embedded Netburner Module Core Implant",
- ENMCoreV2: "Embedded Netburner Module Core V2 Upgrade",
- ENMCoreV3: "Embedded Netburner Module Core V3 Upgrade",
- ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
- ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
- Neuralstimulator: "Neuralstimulator",
- NeuralAccelerator: "Neural Accelerator",
- CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I",
- CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II",
- CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III",
- CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV",
- CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V",
- NeuronalDensification: "Neuronal Densification",
- NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
- SpeechEnhancement: "Speech Enhancement",
- FocusWire: "FocusWire",
- PCDNI: "PC Direct-Neural Interface",
- PCDNIOptimizer: "PC Direct-Neural Interface Optimization Submodule",
- PCDNINeuralNetwork: "PC Direct-Neural Interface NeuroNet Injector",
- ADRPheromone1: "ADR-V1 Pheromone Gene",
- ADRPheromone2: "ADR-V2 Pheromone Gene",
- HacknetNodeCPUUpload: "Hacknet Node CPU Architecture Neural-Upload",
- HacknetNodeCacheUpload: "Hacknet Node Cache Architecture Neural-Upload",
- HacknetNodeNICUpload: "Hacknet Node NIC Architecture Neural-Upload",
- HacknetNodeKernelDNI: "Hacknet Node Kernel Direct-Neural Interface",
- HacknetNodeCoreDNI: "Hacknet Node Core Direct-Neural Interface",
- NeuroFluxGovernor: "NeuroFlux Governor",
- Neurotrainer1: "Neurotrainer I",
- Neurotrainer2: "Neurotrainer II",
- Neurotrainer3: "Neurotrainer III",
- Hypersight: "HyperSight Corneal Implant",
- LuminCloaking1: "LuminCloaking-V1 Skin Implant",
- LuminCloaking2: "LuminCloaking-V2 Skin Implant",
- HemoRecirculator: "HemoRecirculator",
- SmartSonar: "SmartSonar Implant",
- PowerRecirculator: "Power Recirculation Core",
- QLink: "QLink",
- TheRedPill: "The Red Pill",
- SPTN97: "SPTN-97 Gene Modification",
- HiveMind: "ECorp HVMind Implant",
- CordiARCReactor: "CordiARC Fusion Reactor",
- SmartJaw: "SmartJaw",
- Neotra: "Neotra",
- Xanipher: "Xanipher",
- nextSENS: "nextSENS Gene Modification",
- OmniTekInfoLoad: "OmniTek InfoLoad",
- PhotosyntheticCells: "Photosynthetic Cells",
- Neurolink: "BitRunners Neurolink",
- TheBlackHand: "The Black Hand",
- CRTX42AA: "CRTX42-AA Gene Modification",
- Neuregen: "Neuregen Gene Modification",
- CashRoot: "CashRoot Starter Kit",
- NutriGen: "NutriGen Implant",
- INFRARet: "INFRARET Enhancement",
- DermaForce: "DermaForce Particle Barrier",
- GrapheneBrachiBlades: "Graphene BranchiBlades Upgrade",
- GrapheneBionicArms: "Graphene Bionic Arms Upgrade",
- BrachiBlades: "BrachiBlades",
- BionicArms: "Bionic Arms",
- SNA: "Social Negotiation Assistant (S.N.A)",
- EsperEyewear: "EsperTech Bladeburner Eyewear",
- EMS4Recombination: "EMS-4 Recombination",
- OrionShoulder: "ORION-MKIV Shoulder",
- HyperionV1: "Hyperion Plasma Cannon V1",
- HyperionV2: "Hyperion Plasma Cannon V2",
- GolemSerum: "GOLEM Serum",
- VangelisVirus: "Vangelis Virus",
- VangelisVirus3: "Vangelis Virus 3.0",
- INTERLINKED: "I.N.T.E.R.L.I.N.K.E.D",
- BladeRunner: "Blade's Runners",
- BladeArmor: "BLADE-51b Tesla Armor",
- BladeArmorPowerCells: "BLADE-51b Tesla Armor: Power Cells Upgrade",
- BladeArmorEnergyShielding: "BLADE-51b Tesla Armor: Energy Shielding Upgrade",
- BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade",
- BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade",
- BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade",
- BladesSimulacrum: "The Blade's Simulacrum",
-
- //Wasteland Augs
- //PepBoy: "P.E.P-Boy", Plasma Energy Projection System
- //PepBoyForceField Generates plasma force fields
- //PepBoyBlasts Generate high density plasma concussive blasts
- //PepBoyDataStorage STore more data on pep boy,
-}
-
-function initAugmentations() {
- for (var name in _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]) {
- if (_Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"].hasOwnProperty(name)) {
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"][name].augmentations = [];
- }
- }
-
- //Reset Augmentations
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_17__["clearObject"])(Augmentations);
-
- //Combat stat augmentations
- var HemoRecirculator = new Augmentation({
- name:AugmentationNames.HemoRecirculator, moneyCost: 9e6, repCost:4e3,
- info:"A heart implant that greatly increases the body's ability to effectively use and pump " +
- "blood.
" +
- "This augmentation increases all of the player's combat stats by 8%."
- });
- HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
- if (augmentationExists(AugmentationNames.HemoRecirculator)) {
- delete Augmentations[AugmentationNames.HemoRecirculator];
- }
- AddToAugmentations(HemoRecirculator);
-
- var Targeting1 = new Augmentation({
- name:AugmentationNames.Targeting1, moneyCost:3e6, repCost:2e3,
- info:"This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
- "balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
- "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
- "This augmentation increases the player's dexterity by 10%."
- });
- Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting1)) {
- delete Augmentations[AugmentationNames.Targeting1];
- }
- AddToAugmentations(Targeting1);
-
- var Targeting2 = new Augmentation({
- name:AugmentationNames.Targeting2, moneyCost:8.5e6, repCost:3.5e3,
- info:"This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
" +
- "This augmentation increases the player's dexterity by 20%.",
- prereqs:[AugmentationNames.Targeting1]
- });
- Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting2)) {
- delete Augmentations[AugmentationNames.Targeting2];
- }
- AddToAugmentations(Targeting2);
-
- var Targeting3 = new Augmentation({
- name:AugmentationNames.Targeting3, moneyCost:23e6, repCost:11e3,
- info:"This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
" +
- "This augmentation increases the player's dexterity by 30%.",
- prereqs:[AugmentationNames.Targeting2]
- });
- Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.Targeting3)) {
- delete Augmentations[AugmentationNames.Targeting3];
- }
- AddToAugmentations(Targeting3);
-
- var SyntheticHeart = new Augmentation({
- name:AugmentationNames.SyntheticHeart, moneyCost:575e6, repCost:300e3,
- info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
- "at much higher efficiencies than a normal human heart.
" +
- "This augmentation increases the player's agility and strength by 50%."
- });
- SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati"]);
- if (augmentationExists(AugmentationNames.SyntheticHeart)) {
- delete Augmentations[AugmentationNames.SyntheticHeart];
- }
- AddToAugmentations(SyntheticHeart);
-
- var SynfibrilMuscle = new Augmentation({
- name:AugmentationNames.SynfibrilMuscle, repCost:175e3, moneyCost:225e6,
- info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
- "the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
- "Scientists have named these artificially enhanced units 'synfibrils'.
" +
- "This augmentation increases the player's strength and defense by 30%."
- });
- SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
- delete Augmentations[AugmentationNames.SynfibrilMuscle];
- }
- AddToAugmentations(SynfibrilMuscle)
-
- var CombatRib1 = new Augmentation({
- name:AugmentationNames.CombatRib1, repCost:3e3, moneyCost:4750000,
- info:"The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
- "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
- "This augmentation increases the player's strength and defense by 10%."
- });
- CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib1)) {
- delete Augmentations[AugmentationNames.CombatRib1];
- }
- AddToAugmentations(CombatRib1);
-
- var CombatRib2 = new Augmentation({
- name:AugmentationNames.CombatRib2, repCost:7.5e3, moneyCost:13e6,
- info:"This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream.
" +
- "This augmentation increases the player's strength and defense by 14%.",
- prereqs:[AugmentationNames.CombatRib1]
- });
- CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib2)) {
- delete Augmentations[AugmentationNames.CombatRib2];
- }
- AddToAugmentations(CombatRib2);
-
- var CombatRib3 = new Augmentation({
- name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
- info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream
." +
- "This augmentation increases the player's strength and defense by 18%.",
- prereqs:[AugmentationNames.CombatRib2]
- });
- CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.CombatRib3)) {
- delete Augmentations[AugmentationNames.CombatRib3];
- }
- AddToAugmentations(CombatRib3);
-
- var NanofiberWeave = new Augmentation({
- name:AugmentationNames.NanofiberWeave, repCost:15e3, moneyCost:25e6,
- info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
- "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
- "This augmentation increases the player's strength and defense by 20%."
- });
- NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
- "Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.NanofiberWeave)) {
- delete Augmentations[AugmentationNames.NanofiberWeave];
- }
- AddToAugmentations(NanofiberWeave);
-
- var SubdermalArmor = new Augmentation({
- name:AugmentationNames.SubdermalArmor, repCost:350e3, moneyCost:650e6,
- info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
- "The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
- "that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
- "at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
- "mitigate damage from any fire-related or electrical traumas.
" +
- "This augmentation increases the player's defense by 120%."
- });
- SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
- "The Covenant"]);
- if (augmentationExists(AugmentationNames.SubdermalArmor)) {
- delete Augmentations[AugmentationNames.SubdermalArmor];
- }
- AddToAugmentations(SubdermalArmor);
-
- var WiredReflexes = new Augmentation({
- name:AugmentationNames.WiredReflexes, repCost:500, moneyCost:500e3,
- info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
- "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
- "This augmentation increases the player's agility and dexterity by 5%."
- });
- WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
- "The Syndicate", "The Dark Army", "Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.WiredReflexes)) {
- delete Augmentations[AugmentationNames.WiredReflexes];
- }
- AddToAugmentations(WiredReflexes);
-
- var GrapheneBoneLacings = new Augmentation({
- name:AugmentationNames.GrapheneBoneLacings, repCost:450e3, moneyCost:850e6,
- info:"A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
- "their density and tensile strength.
" +
- "This augmentation increases the player's strength and defense by 70%."
- });
- GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
- if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
- delete Augmentations[AugmentationNames.GrapheneBoneLacings];
- }
- AddToAugmentations(GrapheneBoneLacings);
-
- var BionicSpine = new Augmentation({
- name:AugmentationNames.BionicSpine, repCost:18e3, moneyCost:25e6,
- info:"An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
- "Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
- "stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
- "greatly improved senses and reaction speeds.
" +
- "This augmentation increases all of the player's combat stats by 15%."
- });
- BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicSpine)) {
- delete Augmentations[AugmentationNames.BionicSpine];
- }
- AddToAugmentations(BionicSpine);
-
- var GrapheneBionicSpine = new Augmentation({
- name:AugmentationNames.GrapheneBionicSpine, repCost:650e3, moneyCost:1200e6,
- info:"An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases all of the player's combat stats by 60%.",
- prereqs:[AugmentationNames.BionicSpine]
- });
- GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
- delete Augmentations[AugmentationNames.GrapheneBionicSpine];
- }
- AddToAugmentations(GrapheneBionicSpine);
-
- var BionicLegs = new Augmentation({
- name:AugmentationNames.BionicLegs, repCost:60e3, moneyCost:75e6,
- info:"Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
- "This augmentation increases the player's agility by 60%."
- });
- BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicLegs)) {
- delete Augmentations[AugmentationNames.BionicLegs];
- }
- AddToAugmentations(BionicLegs);
-
- var GrapheneBionicLegs = new Augmentation({
- name:AugmentationNames.GrapheneBionicLegs, repCost:300e3, moneyCost:900e6,
- info:"An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases the player's agility by 150%.",
- prereqs:[AugmentationNames.BionicLegs]
- });
- GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
- delete Augmentations[AugmentationNames.GrapheneBionicLegs];
- }
- AddToAugmentations(GrapheneBionicLegs);
-
- //Labor stat augmentations
- var SpeechProcessor = new Augmentation({
- name:AugmentationNames.SpeechProcessor, repCost:3e3, moneyCost:10e6,
- info:"A cochlear implant with an embedded computer that analyzes incoming speech. " +
- "The embedded computer processes characteristics of incoming speech, such as tone " +
- "and inflection, to pick up on subtle cues and aid in social interactions.
" +
- "This augmentation increases the player's charisma by 20%."
- });
- SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Silhouette"]);
- if (augmentationExists(AugmentationNames.SpeechProcessor)) {
- delete Augmentations[AugmentationNames.SpeechProcessor];
- }
- AddToAugmentations(SpeechProcessor);
-
- let TITN41Injection = new Augmentation({
- name:AugmentationNames.TITN41Injection, repCost:10e3, moneyCost:38e6,
- info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
- "control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
- "outgoing and socialable.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 15%."
- });
- TITN41Injection.addToFactions(["Silhouette"]);
- if (augmentationExists(AugmentationNames.TITN41Injection)) {
- delete Augmentations[AugmentationNames.TITN41Injection];
- }
- AddToAugmentations(TITN41Injection);
-
- var EnhancedSocialInteractionImplant = new Augmentation({
- name:AugmentationNames.EnhancedSocialInteractionImplant, repCost:150e3, moneyCost:275e6,
- info:"A cranial implant that greatly assists in the user's ability to analyze social situations " +
- "and interactions. The system uses a wide variety of factors such as facial expression, body " +
- "language, and the voice's tone/inflection to determine the best course of action during social" +
- "situations. The implant also uses deep learning software to continuously learn new behavior" +
- "patterns and how to best respond.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 60%."
- });
- EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
- delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
- }
- AddToAugmentations(EnhancedSocialInteractionImplant);
-
- //Hacking augmentations
- var BitWire = new Augmentation({
- name:AugmentationNames.BitWire, repCost:1500, moneyCost:2e6,
- info: "A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
- "capabilities.
" +
- "This augmentation increases the player's hacking skill by 5%."
- });
- BitWire.addToFactions(["CyberSec", "NiteSec"]);
- if (augmentationExists(AugmentationNames.BitWire)) {
- delete Augmentations[AugmentationNames.BitWire];
- }
- AddToAugmentations(BitWire);
-
- var ArtificialBioNeuralNetwork = new Augmentation({
- name:AugmentationNames.ArtificialBioNeuralNetwork, repCost:110e3, moneyCost:600e6,
- info:"A network consisting of millions of nanoprocessors is embedded into the brain. " +
- "The network is meant to mimick the way a biological brain solves a problem, which each " +
- "nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
- "nanoprocessors are programmed to perform computations much faster than organic neurons, " +
- "allowing its user to solve much more complex problems at a much faster rate.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 3%. " +
- "Increases the amount of money the player's gains from hacking by 15%. " +
- "Increases the player's hacking skill by 12%."
- });
- ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
- delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
- }
- AddToAugmentations(ArtificialBioNeuralNetwork);
-
- var ArtificialSynapticPotentiation = new Augmentation({
- name:AugmentationNames.ArtificialSynapticPotentiation, repCost:2500, moneyCost:16e6,
- info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
- "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 2% " +
- "Increases the player's hacking chance by 5%. " +
- "Increases the player's hacking experience gain rate by 5%."
- });
- ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
- if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
- delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
- }
- AddToAugmentations(ArtificialSynapticPotentiation);
-
- var EnhancedMyelinSheathing = new Augmentation({
- name:AugmentationNames.EnhancedMyelinSheathing, repCost:40e3, moneyCost:275e6,
- info:"Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
- "This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
- "system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
- "counterparts, leading to greater processing speeds and better brain function.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 3%. " +
- "Increases the player's hacking skill by 8%. " +
- "Increases the player's hacking experience gain rate by 10%."
- });
- EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
- if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
- delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
- }
- AddToAugmentations(EnhancedMyelinSheathing);
-
- var SynapticEnhancement = new Augmentation({
- name:AugmentationNames.SynapticEnhancement, repCost:800, moneyCost:1.5e6,
- info:"A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
- "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
- "This augmentation increases the player's hacking speed by 3%."
- });
- SynapticEnhancement.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
- delete Augmentations[AugmentationNames.SynapticEnhancement];
- }
- AddToAugmentations(SynapticEnhancement);
-
- var NeuralRetentionEnhancement = new Augmentation({
- name:AugmentationNames.NeuralRetentionEnhancement, repCost:8e3, moneyCost:50e6,
- info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
- "circuits, strengthening its ability to retain information.
" +
- "This augmentation increases the player's hacking experience gain rate by 25%."
- });
- NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
- delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
- }
- AddToAugmentations(NeuralRetentionEnhancement);
-
- var DataJack = new Augmentation({
- name:AugmentationNames.DataJack, repCost:45e3, moneyCost:90e6,
- info:"A brain implant that provides an interface for direct, wireless communication between a computer's main " +
- "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
- "and delete it.
" +
- "This augmentation increases the amount of money the player gains from hacking by 25%."
- });
- DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
- if (augmentationExists(AugmentationNames.DataJack)) {
- delete Augmentations[AugmentationNames.DataJack];
- }
- AddToAugmentations(DataJack);
-
- var ENM = new Augmentation({
- name:AugmentationNames.ENM, repCost:6e3, moneyCost:50e6,
- info:"A thin device embedded inside the arm containing a wireless module capable of connecting " +
- "to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
- "processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
- "not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
- "control the traffic on a network.
" +
- "This augmentation increases the player's hacking skill by 8%."
- });
- ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENM)) {
- delete Augmentations[AugmentationNames.ENM];
- }
- AddToAugmentations(ENM);
-
- var ENMCore = new Augmentation({
- name:AugmentationNames.ENMCore, repCost:100e3, moneyCost:500e6,
- info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 3%. " +
- "Increases the amount of money the player gains from hacking by 10%. " +
- "Increases the player's chance of successfully performing a hack by 3%. " +
- "Increases the player's hacking experience gain rate by 7%. " +
- "Increases the player's hacking skill by 7%.",
- prereqs:[AugmentationNames.ENM]
- });
- ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENMCore)) {
- delete Augmentations[AugmentationNames.ENMCore];
- }
- AddToAugmentations(ENMCore);
-
- var ENMCoreV2 = new Augmentation({
- name:AugmentationNames.ENMCoreV2, repCost:400e3, moneyCost:900e6,
- info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to control the information on " +
- "a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
- "packets.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 5%. " +
- "Increases the amount of money the player gains from hacking by 30%. " +
- "Increases the player's chance of successfully performing a hack by 5%. " +
- "Increases the player's hacking experience gain rate by 15%. " +
- "Increases the player's hacking skill by 8%.",
- prereqs:[AugmentationNames.ENMCore]
- });
- ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.ENMCoreV2)) {
- delete Augmentations[AugmentationNames.ENMCoreV2];
- }
- AddToAugmentations(ENMCoreV2);
-
- var ENMCoreV3 = new Augmentation({
- name:AugmentationNames.ENMCoreV3, repCost:700e3, moneyCost:1500e6,
- info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
- "any device on a network.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 5%. " +
- "Increases the amount of money the player gains from hacking by 40%. " +
- "Increases the player's chance of successfully performing a hack by 10%. " +
- "Increases the player's hacking experience gain rate by 25%. " +
- "Increases the player's hacking skill by 10%.",
- prereqs:[AugmentationNames.ENMCoreV2]
- });
- ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMCoreV3)) {
- delete Augmentations[AugmentationNames.ENMCoreV3];
- }
- AddToAugmentations(ENMCoreV3);
-
- var ENMAnalyzeEngine = new Augmentation({
- name:AugmentationNames.ENMAnalyzeEngine, repCost:250e3, moneyCost:1200e6,
- info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
- "that vastly outperforms the Netburner Module's native single-core processor.
" +
- "This augmentation increases the player's hacking speed by 10%.",
- prereqs:[AugmentationNames.ENM]
- });
- ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
- delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
- }
- AddToAugmentations(ENMAnalyzeEngine);
-
- var ENMDMA = new Augmentation({
- name:AugmentationNames.ENMDMA, repCost:400e3, moneyCost:1400e6,
- info:"This implant installs a Direct Memory Access (DMA) controller into the " +
- "Embedded Netburner Module. This allows the Module to send and receive data " +
- "directly to and from the main memory of devices on a network.
" +
- "This augmentation: " +
- "Increases the amount of money the player gains from hacking by 40%. " +
- "Increases the player's chance of successfully performing a hack by 20%.",
- prereqs:[AugmentationNames.ENM]
- });
- ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMDMA)) {
- delete Augmentations[AugmentationNames.ENMDMA];
- }
- AddToAugmentations(ENMDMA);
-
- var Neuralstimulator = new Augmentation({
- name:AugmentationNames.Neuralstimulator, repCost:20e3, moneyCost:600e6,
- info:"A cranial implant that intelligently stimulates certain areas of the brain " +
- "in order to improve cognitive functions.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 2%. " +
- "Increases the player's chance of successfully performing a hack by 10%. " +
- "Increases the player's hacking experience gain rate by 12%."
- });
- Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
- "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neuralstimulator)) {
- delete Augmentations[AugmentationNames.Neuralstimulator];
- }
- AddToAugmentations(Neuralstimulator);
-
- var NeuralAccelerator = new Augmentation({
- name:AugmentationNames.NeuralAccelerator, repCost:80e3, moneyCost:350e6,
- info:"A microprocessor that accelerates the processing " +
- "speed of biological neural networks. This is a cranial implant that is embedded inside the brain.
" +
- "This augmentation: " +
- "Increases the player's hacking skill by 10%. " +
- "Increases the player's hacking experience gain rate by 15%. " +
- "Increases the amount of money the player gains from hacking by 20%."
- });
- NeuralAccelerator.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
- delete Augmentations[AugmentationNames.NeuralAccelerator];
- }
- AddToAugmentations(NeuralAccelerator);
-
- var CranialSignalProcessorsG1 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG1, repCost:4e3, moneyCost:14e6,
- info:"The first generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 1%. " +
- "Increases the player's hacking skill by 5%."
- });
- CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
- }
- AddToAugmentations(CranialSignalProcessorsG1);
-
- var CranialSignalProcessorsG2 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG2, repCost:7500, moneyCost:25e6,
- info:"The second generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 2%. " +
- "Increases the player's chance of successfully performing a hack by 5%. " +
- "Increases the player's hacking skill by 7%.",
- prereqs:[AugmentationNames.CranialSignalProcessorsG1]
- });
- CranialSignalProcessorsG2.addToFactions(["CyberSec", "NiteSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
- }
- AddToAugmentations(CranialSignalProcessorsG2);
-
- var CranialSignalProcessorsG3 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG3, repCost:20e3, moneyCost:110e6,
- info:"The third generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 2%. " +
- "Increases the amount of money the player gains from hacking by 15%. " +
- "Increases the player's hacking skill by 9%.",
- prereqs:[AugmentationNames.CranialSignalProcessorsG2]
- });
- CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand", "BitRunners"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
- }
- AddToAugmentations(CranialSignalProcessorsG3);
-
- var CranialSignalProcessorsG4 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG4, repCost:50e3, moneyCost:220e6,
- info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 2%. " +
- "Increases the amount of money the player gains from hacking by 20%. " +
- "Increases the amount of money the player can inject into servers using grow() by 25%.",
- prereqs:[AugmentationNames.CranialSignalProcessorsG3]
- });
- CranialSignalProcessorsG4.addToFactions(["The Black Hand", "BitRunners"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
- }
- AddToAugmentations(CranialSignalProcessorsG4);
-
- var CranialSignalProcessorsG5 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG5, repCost:100e3, moneyCost:450e6,
- info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation: " +
- "Increases the player's hacking skill by 30%. " +
- "Increases the amount of money the player gains from hacking by 25%. " +
- "Increases the amount of money the player can inject into servers using grow() by 75%.",
- prereqs:[AugmentationNames.CranialSignalProcessorsG4]
- });
- CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
- }
- AddToAugmentations(CranialSignalProcessorsG5);
-
- var NeuronalDensification = new Augmentation({
- name:AugmentationNames.NeuronalDensification, repCost:75e3, moneyCost:275e6,
- info:"The brain is surgically re-engineered to have increased neuronal density " +
- "by decreasing the neuron gap junction. Then, the body is genetically modified " +
- "to enhance the production and capabilities of its neural stem cells.
" +
- "This augmentation: " +
- "Increases the player's hacking skill by 15%. " +
- "Increases the player's hacking experience gain rate by 10%. "+
- "Increases the player's hacking speed by 3%."
- });
- NeuronalDensification.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.NeuronalDensification)) {
- delete Augmentations[AugmentationNames.NeuronalDensification];
- }
- AddToAugmentations(NeuronalDensification);
-
- //Work Augmentations
- var NuoptimalInjectorImplant = new Augmentation({
- name:AugmentationNames.NuoptimalInjectorImplant, repCost:2e3, moneyCost:4e6,
- info:"This torso implant automatically injects nootropic supplements into " +
- "the bloodstream to improve memory, increase focus, and provide other " +
- "cognitive enhancements.
" +
- "This augmentation increases the amount of reputation the player gains " +
- "when working for a company by 20%."
- });
- NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
- "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
- delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
- }
- AddToAugmentations(NuoptimalInjectorImplant);
-
- var SpeechEnhancement = new Augmentation({
- name:AugmentationNames.SpeechEnhancement, repCost:1e3, moneyCost:2.5e6,
- info:"An advanced neural implant that improves your speaking abilities, making " +
- "you more convincing and likable in conversations and overall improving your " +
- "social interactions.
" +
- "This augmentation: " +
- "Increases the player's charisma by 10%. " +
- "Increases the amount of reputation the player gains when working for a company by 10%."
- });
- SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
- "Clarke Incorporated", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
- delete Augmentations[AugmentationNames.SpeechEnhancement];
- }
- AddToAugmentations(SpeechEnhancement);
-
- var FocusWire = new Augmentation({
- name:AugmentationNames.FocusWire, repCost:30e3, moneyCost:180e6,
- info:"A cranial implant that stops procrastination by blocking specific neural pathways " +
- "in the brain.
" +
- "This augmentation: " +
- "Increases all experience gains by 5%. " +
- "Increases the amount of money the player gains from working by 20%. " +
- "Increases the amount of reputation the player gains when working for a company by 10%."
- });
- FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.FocusWire)) {
- delete Augmentations[AugmentationNames.FocusWire];
- }
- AddToAugmentations(FocusWire)
-
- var PCDNI = new Augmentation({
- name:AugmentationNames.PCDNI, repCost:150e3, moneyCost:750e6,
- info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
- "computers. Connecting to a computer through this jack allows you to interface with " +
- "it using the brain's electrochemical signals.
" +
- "This augmentation: " +
- "Increases the amount of reputation the player gains when working for a company by 30%. " +
- "Increases the player's hacking skill by 8%."
- });
- PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNI)) {
- delete Augmentations[AugmentationNames.PCDNI];
- }
- AddToAugmentations(PCDNI);
-
- var PCDNIOptimizer = new Augmentation({
- name:AugmentationNames.PCDNIOptimizer, repCost:200e3, moneyCost:900e6,
- info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
- "improves the performance of the interface and gives the user more control options " +
- "to the connected computer.
" +
- "This augmentation: " +
- "Increases the amount of reputation the player gains when working for a company by 75%. " +
- "Increases the player's hacking skill by 10%.",
- prereqs:[AugmentationNames.PCDNI]
- });
- PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
- delete Augmentations[AugmentationNames.PCDNIOptimizer];
- }
- AddToAugmentations(PCDNIOptimizer);
-
- var PCDNINeuralNetwork = new Augmentation({
- name:AugmentationNames.PCDNINeuralNetwork, repCost:600e3, moneyCost:1500e6,
- info:"This is an additional installation that upgrades the functionality of the " +
- "PC Direct-Neural Interface augmentation. When connected to a computer, " +
- "The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
- "processing power to aid the computer in computational tasks.
" +
- "This augmentation: " +
- "Increases the amount of reputation the player gains when working for a company by 100%. " +
- "Increases the player's hacking skill by 10%. " +
- "Increases the player's hacking speed by 5%.",
- prereqs:[AugmentationNames.PCDNI]
- });
- PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
- delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
- }
- AddToAugmentations(PCDNINeuralNetwork);
-
- var ADRPheromone1 = new Augmentation({
- name:AugmentationNames.ADRPheromone1, repCost:1500, moneyCost:3.5e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
- "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
- "triggers feelings of admiration and approval in other people.
" +
- "This augmentation: " +
- "Increases the amount of reputation the player gains when working for a company by 10% " +
- "Increases the amount of reputation the player gains for a faction by 10%."
- });
- ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.ADRPheromone1)) {
- delete Augmentations[AugmentationNames.ADRPheromone1];
- }
- AddToAugmentations(ADRPheromone1);
-
- var ADRPheromone2 = new Augmentation({
- name:AugmentationNames.ADRPheromone2, repCost:25e3, moneyCost:110e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
- "which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
- "triggers feelings of admiration, approval, and respect in others.
" +
- "This augmentation: " +
- "Increases the amount of reputation the player gains for a faction and company by 20%."
- });
- ADRPheromone2.addToFactions(["Silhouette", "Four Sigma", "Bachman & Associates", "Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.ADRPheromone2)) {
- delete Augmentations[AugmentationNames.ADRPheromone2];
- }
- AddToAugmentations(ADRPheromone2);
-
- //HacknetNode Augmentations
- var HacknetNodeCPUUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCPUUpload, repCost:1500, moneyCost:2.2e6,
- info:"Uploads the architecture and design details of a Hacknet Node's CPU into " +
- "the brain. This allows the user to engineer custom hardware and software " +
- "for the Hacknet Node that provides better performance.
" +
- "This augmentation: " +
- "Increases the amount of money produced by Hacknet Nodes by 15%. " +
- "Decreases the cost of purchasing a Hacknet Node by 15%."
- });
- HacknetNodeCPUUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
- }
- AddToAugmentations(HacknetNodeCPUUpload);
-
- var HacknetNodeCacheUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCacheUpload, repCost:1e3, moneyCost:1.1e6,
- info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
- "into the brain. This allows the user to engineer custom cache hardware for the " +
- "Hacknet Node that offers better performance.
" +
- "This augmentation: " +
- "Increases the amount of money produced by Hacknet Nodes by 10%. " +
- "Decreases the cost of leveling up a Hacknet Node by 15%."
- });
- HacknetNodeCacheUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
- }
- AddToAugmentations(HacknetNodeCacheUpload);
-
- var HacknetNodeNICUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeNICUpload, repCost:750, moneyCost:900e3,
- info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
- "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
- "offers better performance.
" +
- "This augmentation: " +
- "Increases the amount of money produced by Hacknet Nodes by 10%. " +
- "Decreases the cost of purchasing a Hacknet Node by 10%."
- });
- HacknetNodeNICUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
- }
- AddToAugmentations(HacknetNodeNICUpload);
-
- var HacknetNodeKernelDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeKernelDNI, repCost:3e3, moneyCost:8e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
- "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
- "electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 25%."
- });
- HacknetNodeKernelDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
- }
- AddToAugmentations(HacknetNodeKernelDNI);
-
- var HacknetNodeCoreDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeCoreDNI, repCost:5e3, moneyCost:12e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
- "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
- "the mind's electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 45%."
- });
- HacknetNodeCoreDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
- }
- AddToAugmentations(HacknetNodeCoreDNI);
-
- //Misc/Hybrid augmentations
- var NeuroFluxGovernor = new Augmentation({
- name:AugmentationNames.NeuroFluxGovernor, repCost:500, moneyCost: 750e3,
- info:"A device that is embedded in the back of the neck. The NeuroFlux Governor " +
- "monitors and regulates nervous impulses coming to and from the spinal column, " +
- "essentially 'governing' the body. By doing so, it improves the functionality of the " +
- "body's nervous system.
" +
- "This is a special augmentation because it can be leveled up infinitely. Each level of this augmentation " +
- "increases ALL of the player's multipliers by 1%."
- });
-
- // Set the Augmentation's level to the currently-installed level
- let currLevel = 0;
- for (let i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations[i].name === AugmentationNames.NeuroFluxGovernor) {
- currLevel = _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations[i].level;
- }
- }
- NeuroFluxGovernor.level = currLevel;
-
- // To set the price/rep req of the NeuroFlux, we have to take into account NeuroFlux
- // levels that are purchased but not yet installed
- let nextLevel = currLevel;
- for (let i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations[i].name === AugmentationNames.NeuroFluxGovernor) {
- ++nextLevel;
- }
- }
- mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].NeuroFluxGovernorLevelMult, nextLevel);
- NeuroFluxGovernor.baseRepRequirement = 500 * mult * _Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- NeuroFluxGovernor.baseCost = 750e3 * mult * _Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
- if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
- delete Augmentations[AugmentationNames.NeuroFluxGovernor];
- }
- NeuroFluxGovernor.addToAllFactions();
- AddToAugmentations(NeuroFluxGovernor);
-
- var Neurotrainer1 = new Augmentation({
- name:AugmentationNames.Neurotrainer1, repCost:400, moneyCost:800e3,
- info:"A decentralized cranial implant that improves the brain's ability to learn. It is " +
- "installed by releasing millions of nanobots into the human brain, each of which " +
- "attaches to a different neural pathway to enhance the brain's ability to retain " +
- "and retrieve information.
" +
- "This augmentation increases the player's experience gain rate for all stats by 10%."
- });
- Neurotrainer1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer1)) {
- delete Augmentations[AugmentationNames.Neurotrainer1];
- }
- AddToAugmentations(Neurotrainer1);
-
- var Neurotrainer2 = new Augmentation({
- name:AugmentationNames.Neurotrainer2, repCost:4e3, moneyCost:9e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
- "require Neurotrainer I to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 15%."
- });
- Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer2)) {
- delete Augmentations[AugmentationNames.Neurotrainer2];
- }
- AddToAugmentations(Neurotrainer2);
-
- var Neurotrainer3 = new Augmentation({
- name:AugmentationNames.Neurotrainer3, repCost:10e3, moneyCost:26e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
- "but it does not require either of them to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 20%."
- });
- Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neurotrainer3)) {
- delete Augmentations[AugmentationNames.Neurotrainer3];
- }
- AddToAugmentations(Neurotrainer3);
-
- var Hypersight = new Augmentation({
- name:AugmentationNames.Hypersight, repCost:60e3, moneyCost:550e6,
- info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
- "Embedded circuitry within the implant provides the ability to detect heat and movement " +
- "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
- "This augmentation: " +
- "Increases the player's dexterity by 40%. " +
- "Increases the player's hacking speed by 3%. " +
- "Increases the amount of money the player gains from hacking by 10%."
- });
- Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.Hypersight)) {
- delete Augmentations[AugmentationNames.Hypersight];
- }
- AddToAugmentations(Hypersight);
-
- var LuminCloaking1 = new Augmentation({
- name:AugmentationNames.LuminCloaking1, repCost:600, moneyCost:1e6,
- info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, have a negative refractive index. As a result, they bend light " +
- "around the skin, making the user much harder to see from the naked eye.
" +
- "This augmentation: " +
- "Increases the player's agility by 5% " +
- "Increases the amount of money the player gains from crimes by 10%."
- });
- LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking1)) {
- delete Augmentations[AugmentationNames.LuminCloaking1];
- }
- AddToAugmentations(LuminCloaking1);
-
- var LuminCloaking2 = new Augmentation({
- name:AugmentationNames.LuminCloaking2, repCost:2e3, moneyCost:6e6,
- info:"This is a more advanced version of the LuminCloaking-V2 augmentation. This skin implant " +
- "reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, are capable of not only bending light but also of bending heat, " +
- "making the user more resilient as well as stealthy.
" +
- "This augmentation: " +
- "Increases the player's agility by 10% " +
- "Increases the player's defense by 10% " +
- "Increases the amount of money the player gains from crimes by 25%.",
- prereqs:[AugmentationNames.LuminCloaking1]
- });
- LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking2)) {
- delete Augmentations[AugmentationNames.LuminCloaking2];
- }
- AddToAugmentations(LuminCloaking2);
-
- var SmartSonar = new Augmentation({
- name:AugmentationNames.SmartSonar, repCost:9e3, moneyCost:15e6,
- info:"A cochlear implant that helps the player detect and locate enemies " +
- "using sound propagation.
" +
- "This augmentation: " +
- "Increases the player's dexterity by 10%. " +
- "Increases the player's dexterity experience gain rate by 15%. " +
- "Increases the amount of money the player gains from crimes by 25%."
- });
- SmartSonar.addToFactions(["Slum Snakes"]);
- if (augmentationExists(AugmentationNames.SmartSonar)) {
- delete Augmentations[AugmentationNames.SmartSonar];
- }
- AddToAugmentations(SmartSonar);
-
- var PowerRecirculator = new Augmentation({
- name:AugmentationNames.PowerRecirculator, repCost:10e3, moneyCost:36e6,
- info:"The body's nerves are attached with polypyrrole nanocircuits that " +
- "are capable of capturing wasted energy (in the form of heat) " +
- "and converting it back into usable power.
" +
- "This augmentation: " +
- "Increases all of the player's stats by 5%. " +
- "Increases the player's experience gain rate for all stats by 10%."
- });
- PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
- if (augmentationExists(AugmentationNames.PowerRecirculator)) {
- delete Augmentations[AugmentationNames.PowerRecirculator];
- }
- AddToAugmentations(PowerRecirculator);
-
- //Unique AUGS (Each Faction gets one unique augmentation)
- //Factions that already have unique augs up to this point:
- // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
- // Silhouette
-
- //Illuminati
- var QLink = new Augmentation({
- name:AugmentationNames.QLink, repCost:750e3, moneyCost:1300e6,
- info:"A brain implant that wirelessly connects you to the Illuminati's " +
- "quantum supercomputer, allowing you to access and use its incredible " +
- "computing power.
" +
- "This augmentation: " +
- "Increases the player's hacking speed by 10%. " +
- "Increases the player's chance of successfully performing a hack by 30%. " +
- "Increases the amount of money the player gains from hacking by 100%."
- });
- QLink.addToFactions(["Illuminati"]);
- if (augmentationExists(AugmentationNames.QLink)) {
- delete Augmentations[AugmentationNames.QLink];
- }
- AddToAugmentations(QLink);
-
- //Daedalus
- var RedPill = new Augmentation({
- name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
- info:"It's time to leave the cave."
- });
- RedPill.addToFactions(["Daedalus"]);
- if (augmentationExists(AugmentationNames.TheRedPill)) {
- delete Augmentations[AugmentationNames.TheRedPill];
- }
- AddToAugmentations(RedPill);
-
- //Covenant
- var SPTN97 = new Augmentation({
- name:AugmentationNames.SPTN97, repCost:500e3, moneyCost:975e6,
- info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an " +
- "artificially-synthesized gene that was developed by DARPA to create " +
- "super-soldiers through genetic modification. The gene was outlawed in " +
- "2056.
" +
- "This augmentation: " +
- "Increases all of the player's combat stats by 75%. " +
- "Increases the player's hacking skill by 15%."
- });
- SPTN97.addToFactions(["The Covenant"]);
- if (augmentationExists(AugmentationNames.SPTN97)) {
- delete Augmentations[AugmentationNames.SPTN97];
- }
- AddToAugmentations(SPTN97);
-
- //ECorp
- var HiveMind = new Augmentation({
- name:AugmentationNames.HiveMind, repCost:600e3, moneyCost:1100e6,
- info:"A brain implant developed by ECorp. They do not reveal what " +
- "exactly the implant does, but they promise that it will greatly " +
- "enhance your abilities."
- });
- HiveMind.addToFactions(["ECorp"]);
- if (augmentationExists(AugmentationNames.HiveMind)) {
- delete Augmentations[AugmentationNames.HiveMind];
- }
- AddToAugmentations(HiveMind);
-
- //MegaCorp
- var CordiARCReactor = new Augmentation({
- name:AugmentationNames.CordiARCReactor, repCost:450e3, moneyCost:1000e6,
- info:"The thoracic cavity is equipped with a small chamber designed " +
- "to hold and sustain hydrogen plasma. The plasma is used to generate " +
- "fusion power through nuclear fusion, providing limitless amount of clean " +
- "energy for the body.
" +
- "This augmentation: " +
- "Increases all of the player's combat stats by 35%. " +
- "Increases all of the player's combat stat experience gain rate by 35%."
- });
- CordiARCReactor.addToFactions(["MegaCorp"]);
- if (augmentationExists(AugmentationNames.CordiARCReactor)) {
- delete Augmentations[AugmentationNames.CordiARCReactor];
- }
- AddToAugmentations(CordiARCReactor);
-
- //BachmanAndAssociates
- var SmartJaw = new Augmentation({
- name:AugmentationNames.SmartJaw, repCost:150e3, moneyCost:550e6,
- info:"A bionic jaw that contains advanced hardware and software " +
- "capable of psychoanalyzing and profiling the personality of " +
- "others using optical imaging software.
" +
- "This augmentation: " +
- "Increases the player's charisma by 50%. " +
- "Increases the player's charisma experience gain rate by 50%. " +
- "Increases the amount of reputation the player gains for a company by 25%. " +
- "Increases the amount of reputation the player gains for a faction by 25%."
- });
- SmartJaw.addToFactions(["Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SmartJaw)) {
- delete Augmentations[AugmentationNames.SmartJaw];
- }
- AddToAugmentations(SmartJaw);
-
- //BladeIndustries
- var Neotra = new Augmentation({
- name:AugmentationNames.Neotra, repCost:225e3, moneyCost:575e6,
- info:"A highly-advanced techno-organic drug that is injected into the skeletal " +
- "and integumentary system. The drug permanently modifies the DNA of the " +
- "body's skin and bone cells, granting them the ability to repair " +
- "and restructure themselves.
" +
- "This augmentation increases the player's strength and defense by 55%."
- });
- Neotra.addToFactions(["Blade Industries"]);
- if (augmentationExists(AugmentationNames.Neotra)) {
- delete Augmentations[AugmentationNames.Neotra];
- }
- AddToAugmentations(Neotra);
-
- //NWO
- var Xanipher = new Augmentation({
- name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
- info:"A concoction of advanced nanobots that is orally ingested into the " +
- "body. These nanobots induce physiological change and significantly " +
- "improve the body's functionining in all aspects.
" +
- "This augmentation: " +
- "Increases all of the player's stats by 20%. " +
- "Increases the player's experience gain rate for all stats by 15%."
- });
- Xanipher.addToFactions(["NWO"]);
- if (augmentationExists(AugmentationNames.Xanipher)) {
- delete Augmentations[AugmentationNames.Xanipher];
- }
- AddToAugmentations(Xanipher);
-
- //ClarkeIncorporated
- var nextSENS = new Augmentation({
- name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
- info:"The body is genetically re-engineered to maintain a state " +
- "of negligible senescence, preventing the body from " +
- "deteriorating with age.
" +
- "This augmentation increases all of the player's stats by 20%."
- });
- nextSENS.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.nextSENS)) {
- delete Augmentations[AugmentationNames.nextSENS];
- }
- AddToAugmentations(nextSENS);
-
- //OmniTekIncorporated
- var OmniTekInfoLoad = new Augmentation({
- name:AugmentationNames.OmniTekInfoLoad, repCost:250e3, moneyCost:575e6,
- info:"OmniTek's data and information repository is uploaded " +
- "into your brain, enhancing your programming and " +
- "hacking abilities.
" +
- "This augmentation: " +
- "Increases the player's hacking skill by 20%. " +
- "Increases the player's hacking experience gain rate by 25%."
- });
- OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
- delete Augmentations[AugmentationNames.OmniTekInfoLoad];
- }
- AddToAugmentations(OmniTekInfoLoad);
-
- //FourSigma
- //TODO Later when Intelligence is added in . Some aug that greatly increases int
-
- //KuaiGongInternational
- var PhotosyntheticCells = new Augmentation({
- name:AugmentationNames.PhotosyntheticCells, repCost:225e3, moneyCost:550e6,
- info:"Chloroplasts are added to epidermal stem cells and are applied " +
- "to the body using a skin graft. The result is photosynthetic " +
- "skin cells, allowing users to generate their own energy " +
- "and nutrition using solar power.
" +
- "This augmentation increases the player's strength, defense, and agility by 40%."
- });
- PhotosyntheticCells.addToFactions(["KuaiGong International"]);
- if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
- delete Augmentations[AugmentationNames.PhotosyntheticCells];
- }
- AddToAugmentations(PhotosyntheticCells);
-
- //BitRunners
- var Neurolink = new Augmentation({
- name:AugmentationNames.Neurolink, repCost:350e3, moneyCost:875e6,
- info:"A brain implant that provides a high-bandwidth, direct neural link between your " +
- "mind and BitRunners' data servers, which reportedly contain " +
- "the largest database of hacking tools and information in the world.
" +
- "This augmentation: " +
- "Increases the player's hacking skill by 15%. " +
- "Increases the player's hacking experience gain rate by 20%. " +
- "Increases the player's chance of successfully performing a hack by 10%. " +
- "Increases the player's hacking speed by 5%. " +
- "Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset."
- });
- Neurolink.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.Neurolink)) {
- delete Augmentations[AugmentationNames.Neurolink];
- }
- AddToAugmentations(Neurolink);
-
- //BlackHand
- var TheBlackHand = new Augmentation({
- name:AugmentationNames.TheBlackHand, repCost:40e3, moneyCost:110e6,
- info:"A highly advanced bionic hand. This prosthetic not only " +
- "enhances strength and dexterity but it is also embedded " +
- "with hardware and firmware that lets the user connect to, access and hack " +
- "devices and machines just by touching them.
" +
- "This augmentation: " +
- "Increases the player's strength and dexterity by 15%. " +
- "Increases the player's hacking skill by 10%. " +
- "Increases the player's hacking speed by 2%. " +
- "Increases the amount of money the player gains from hacking by 10%."
- });
- TheBlackHand.addToFactions(["The Black Hand"]);
- if (augmentationExists(AugmentationNames.TheBlackHand)) {
- delete Augmentations[AugmentationNames.TheBlackHand];
- }
- AddToAugmentations(TheBlackHand);
-
- //NiteSec
- var CRTX42AA = new Augmentation({
- name:AugmentationNames.CRTX42AA, repCost:18e3, moneyCost:45e6,
- info:"The CRTX42-AA gene is injected into the genome. " +
- "The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal " +
- "cortex and improves cognitive abilities.
" +
- "This augmentation: " +
- "Improves the player's hacking skill by 8%. " +
- "Improves the player's hacking experience gain rate by 15%."
- });
- CRTX42AA.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.CRTX42AA)) {
- delete Augmentations[AugmentationNames.CRTX42AA];
- }
- AddToAugmentations(CRTX42AA);
-
- //Chongqing
- var Neuregen = new Augmentation({
- name:AugmentationNames.Neuregen, repCost:15e3, moneyCost:75e6,
- info:"A drug that genetically modifies the neurons in the brain. " +
- "The result is that these neurons never die and continuously " +
- "regenerate and strengthen themselves.
" +
- "This augmentation increases the player's hacking experience gain rate by 40%."
- });
- Neuregen.addToFactions(["Chongqing"]);
- if (augmentationExists(AugmentationNames.Neuregen)) {
- delete Augmentations[AugmentationNames.Neuregen];
- }
- AddToAugmentations(Neuregen);
-
- //Sector12
- var CashRoot = new Augmentation({
- name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
- info:"A collection of digital assets saved on a small chip. The chip is implanted " +
- "into your wrist. A small jack in the chip allows you to connect it to a computer " +
- "and upload the assets.
" +
- "This augmentation: " +
- "Lets the player start with $1,000,000 after a reset. " +
- "Lets the player start with the BruteSSH.exe program after a reset."
- });
- CashRoot.addToFactions(["Sector-12"]);
- if (augmentationExists(AugmentationNames.CashRoot)) {
- delete Augmentations[AugmentationNames.CashRoot];
- }
- AddToAugmentations(CashRoot);
-
- //NewTokyo
- var NutriGen = new Augmentation({
- name:AugmentationNames.NutriGen, repCost:2500, moneyCost:500e3,
- info:"A thermo-powered artificial nutrition generator. Endogenously " +
- "synthesizes glucose, amino acids, and vitamins and redistributes them " +
- "across the body. The device is powered by the body's naturally wasted " +
- "energy in the form of heat.
" +
- "This augmentation: " +
- "Increases the player's experience gain rate for all combat stats by 20%."
- });
- NutriGen.addToFactions(["New Tokyo"]);
- if (augmentationExists(AugmentationNames.NutriGen)) {
- delete Augmentations[AugmentationNames.NutriGen];
- }
- AddToAugmentations(NutriGen);
-
- //Aevum
- //TODO Later Something that lets you learn advanced math...this increases int
- //and profits as a trader/from trading
-
- //Ishima
- var INFRARet = new Augmentation({
- name:AugmentationNames.INFRARet, repCost:3e3, moneyCost:6e6,
- info:"A retina implant consisting of a tiny chip that sits behind the " +
- "retina. This implant lets people visually detect infrared radiation.
" +
- "This augmentation: " +
- "Increases the player's crime success rate by 25%. " +
- "Increases the amount of money the player gains from crimes by 10%. " +
- "Increases the player's dexterity by 10%."
- });
- INFRARet.addToFactions(["Ishima"]);
- if (augmentationExists(AugmentationNames.INFRARet)) {
- delete Augmentations[AugmentationNames.INFRARet];
- }
- AddToAugmentations(INFRARet);
-
- //Volhaven
- var DermaForce = new Augmentation({
- name:AugmentationNames.DermaForce, repCost:6e3, moneyCost:10e6,
- info:"A synthetic skin is grafted onto the body. The skin consists of " +
- "millions of nanobots capable of projecting high-density muon beams, " +
- "creating an energy barrier around the user.
" +
- "This augmentation increases the player's defense by 40%."
- });
- DermaForce.addToFactions(["Volhaven"]);
- if (augmentationExists(AugmentationNames.DermaForce)) {
- delete Augmentations[AugmentationNames.DermaForce];
- }
- AddToAugmentations(DermaForce);
-
- //SpeakersForTheDead
- var GrapheneBrachiBlades = new Augmentation({
- name:AugmentationNames.GrapheneBrachiBlades, repCost:90e3, moneyCost:500e6,
- info:"An upgrade to the BrachiBlades augmentation. It infuses " +
- "the retractable blades with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation: " +
- "Increases the player's strength and defense by 40%. " +
- "Increases the player's crime success rate by 10%. " +
- "Increases the amount of money the player gains from crimes by 30%.",
- prereqs:[AugmentationNames.BrachiBlades]
- });
- GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
- delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
- }
- AddToAugmentations(GrapheneBrachiBlades);
-
- //DarkArmy
- var GrapheneBionicArms = new Augmentation({
- name:AugmentationNames.GrapheneBionicArms, repCost:200e3, moneyCost:750e6,
- info:"An upgrade to the Bionic Arms augmentation. It infuses the " +
- "prosthetic arms with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation increases the player's strength and dexterity by 85%.",
- prereqs:[AugmentationNames.BionicArms]
- });
- GrapheneBionicArms.addToFactions(["The Dark Army"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
- delete Augmentations[AugmentationNames.GrapheneBionicArms];
- }
- AddToAugmentations(GrapheneBionicArms);
-
- //TheSyndicate
- var BrachiBlades = new Augmentation({
- name:AugmentationNames.BrachiBlades, repCost:5e3, moneyCost:18e6,
- info:"A set of retractable plasteel blades are implanted in the arm, underneath the skin.
" +
- "This augmentation: " +
- "Increases the player's strength and defense by 15%. " +
- "Increases the player's crime success rate by 10%. " +
- "Increases the amount of money the player gains from crimes by 15%."
- });
- BrachiBlades.addToFactions(["The Syndicate"]);
- if (augmentationExists(AugmentationNames.BrachiBlades)) {
- delete Augmentations[AugmentationNames.BrachiBlades];
- }
- AddToAugmentations(BrachiBlades);
-
- //Tetrads
- var BionicArms = new Augmentation({
- name:AugmentationNames.BionicArms, repCost:25e3, moneyCost:55e6,
- info:"Cybernetic arms created from plasteel and carbon fibers that completely replace " +
- "the user's organic arms.
" +
- "This augmentation increases the user's strength and dexterity by 30%."
- });
- BionicArms.addToFactions(["Tetrads"]);
- if (augmentationExists(AugmentationNames.BionicArms)) {
- delete Augmentations[AugmentationNames.BionicArms];
- }
- AddToAugmentations(BionicArms);
-
- //TianDiHui
- var SNA = new Augmentation({
- name:AugmentationNames.SNA, repCost:2500, moneyCost:6e6,
- info:"A cranial implant that affects the user's personality, making them better " +
- "at negotiation in social situations.
" +
- "This augmentation: " +
- "Increases the amount of money the player earns at a company by 10%. " +
- "Increases the amount of reputation the player gains when working for a " +
- "company or faction by 15%."
- });
- SNA.addToFactions(["Tian Di Hui"]);
- if (augmentationExists(AugmentationNames.SNA)) {
- delete Augmentations[AugmentationNames.SNA];
- }
- AddToAugmentations(SNA);
-
- //For BitNode-2, add all Augmentations to crime/evil factions.
- //Do this before adding special Augmentations that become available in later BitNodes
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bitNodeN === 2) {
- console.log("Adding all augmentations to crime factions for Bit node 2");
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["Slum Snakes"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["Tetrads"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["The Syndicate"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["The Dark Army"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["Speakers for the Dead"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["NiteSec"].addAllAugmentations(Augmentations);
- _Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["Factions"]["The Black Hand"].addAllAugmentations(Augmentations);
- }
-
- //Special Bladeburner Augmentations
- var BladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_2__["factionExists"])(BladeburnersFactionName)) {
- var EsperEyewear = new Augmentation({
- name:AugmentationNames.EsperEyewear, repCost:500, moneyCost:33e6,
- info:"Ballistic-grade protective and retractable eyewear that was designed specially " +
- "for Bladeburner units. This " +
- "is implanted by installing a mechanical frame in the skull's orbit. " +
- "This frame interfaces with the brain and allows the user to " +
- "automatically extrude and extract the eyewear. The eyewear protects " +
- "against debris, shrapnel, laser, flash, and gas. It is also " +
- "embedded with a data processing chip that can be programmed to display an " +
- "AR HUD and assist the user in field missions.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%. " +
- "Increases the player's dexterity by 5%."
- });
- EsperEyewear.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EsperEyewear);
-
- var EMS4Recombination = new Augmentation({
- name:AugmentationNames.EMS4Recombination, repCost: 1e3, moneyCost:55e6,
- info:"A DNA recombination of the EMS-4 Gene. This genetic engineering " +
- "technique was originally used on Bladeburners during the Synthoid uprising " +
- "to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
- "improve reflexes and memory-recall among other things.
" +
- "This augmentation: " +
- "Increases the player's sucess chance in Bladeburner contracts/operations by 3%. " +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 5%. " +
- "Increases the player's Bladeburner stamina gain rate by 2%."
- });
- EMS4Recombination.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EMS4Recombination);
-
- var OrionShoulder = new Augmentation({
- name:AugmentationNames.OrionShoulder, repCost:2.5e3, moneyCost:110e6,
- info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, " +
- "the ORION-MKIV shoulder enhances the strength and dexterity " +
- "of the user's right arm. It also provides protection due to its " +
- "crystallized graphene plating.
" +
- "This augmentation: " +
- "Increases the player's defense by 5%. " +
- "Increases the player's strength and dexterity by 5%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%."
- });
- OrionShoulder.addToFactions([BladeburnersFactionName]);
- resetAugmentation(OrionShoulder);
-
- var HyperionV1 = new Augmentation({
- name:AugmentationNames.HyperionV1, repCost: 5e3, moneyCost:550e6,
- info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable " +
- "of rapidly firing bolts of high-density plasma. The weapon is meant to " +
- "be used against augmented enemies as the ionized " +
- "nature of the plasma disrupts the electrical systems of Augmentations. However, " +
- "it can also be effective against non-augmented enemies due to its high temperature " +
- "and concussive force.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 6%."
- });
- HyperionV1.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV1);
-
- var HyperionV2 = new Augmentation({
- name:AugmentationNames.HyperionV2, repCost:10e3, moneyCost:1.1e9,
- info:"A pair of mini plasma cannons embedded into the hands. This augmentation " +
- "is more advanced and powerful than the original V1 model. This V2 model is " +
- "more power-efficiency, more accurate, and can fire plasma bolts at a much " +
- "higher velocity than the V1 model.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 8%.",
- prereqs:[AugmentationNames.HyperionV1]
- });
- HyperionV2.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV2);
-
- var GolemSerum = new Augmentation({
- name:AugmentationNames.GolemSerum, repCost:12.5e3, moneyCost:2.2e9,
- info:"A serum that permanently enhances many aspects of a human's capabilities, " +
- "including strength, speed, immune system performance, and mitochondrial efficiency. The " +
- "serum was originally developed by the Chinese military in an attempt to " +
- "create super soldiers.
" +
- "This augmentation: " +
- "Increases all of the player's combat stats by 7%. " +
- "Increases the player's Bladeburner stamina gain rate by 5%. "
- });
- GolemSerum.addToFactions([BladeburnersFactionName]);
- resetAugmentation(GolemSerum);
-
- var VangelisVirus = new Augmentation({
- name:AugmentationNames.VangelisVirus, repCost:7.5e3, moneyCost:550e6,
- info:"A synthetic symbiotic virus that is injected into the human brain tissue. The Vangelis virus " +
- "heightens the senses and focus of its host, and also enhances its intuition.
" +
- "This augmentation: " +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 10%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%. " +
- "Increases the player's dexterity experience gain rate by 10%."
- });
- VangelisVirus.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus);
-
- var VangelisVirus3 = new Augmentation({
- name:AugmentationNames.VangelisVirus3, repCost:15e3, moneyCost:2.2e9,
- info:"An improved version of Vangelis, a synthetic symbiotic virus that is " +
- "injected into the human brain tissue. On top of the benefits of the original " +
- "virus, this also grants an accelerated healing factor and enhanced " +
- "agility/reflexes.
" +
- "This augmentation: " +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%. " +
- "Increases the player's defense and dexterity experience gain rate by 10%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%.",
- prereqs:[AugmentationNames.VangelisVirus]
- });
- VangelisVirus3.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus3);
-
- var INTERLINKED = new Augmentation({
- name:AugmentationNames.INTERLINKED, repCost:10e3, moneyCost:1.1e9,
- info:"The DNA is genetically modified to enhance the human's body " +
- "extracellular matrix (ECM). This improves the ECM's ability to " +
- "structurally support the body and grants heightened strength and " +
- "durability.
" +
- "This augmentation: " +
- "Increases the player's experience gain rate for all combat stats by 5%. " +
- "Increases the player's Bladeburner max stamina by 10%."
- });
- INTERLINKED.addToFactions([BladeburnersFactionName]);
- resetAugmentation(INTERLINKED);
-
- var BladeRunner = new Augmentation({
- name:AugmentationNames.BladeRunner, repCost:8e3, moneyCost:1.65e9,
- info:"A cybernetic foot augmentation that was specially created for Bladeburners " +
- "during the Synthoid Uprising. The organic musculature of the human foot " +
- "is enhanced with flexible carbon nanotube matrices that are controlled by " +
- "intelligent servo-motors.
" +
- "This augmentation: " +
- "Increases the player's agility by 5%. " +
- "Increases the player's Bladeburner max stamina by 5%. " +
- "Increases the player's Bladeburner stamina gain rate by 5%. "
- });
- BladeRunner.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeRunner);
-
- var BladeArmor = new Augmentation({
- name:AugmentationNames.BladeArmor, repCost:5e3, moneyCost:275e6,
- info:"A powered exoskeleton suit (exosuit) designed as armor for Bladeburner units. This " +
- "exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, " +
- "concussive, thermal, chemical, and electric trauma. It also enhances the user's " +
- "strength and agility.
" +
- "This augmentation: " +
- "Increases all of the player's combat stats by 4%. " +
- "Increases the player's Bladeburner stamina gain rate by 2%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%.",
- });
- BladeArmor.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmor);
-
- var BladeArmorPowerCells = new Augmentation({
- name:AugmentationNames.BladeArmorPowerCells, repCost:7.5e3, moneyCost:550e6,
- info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of " +
- "more efficiently storing and using power.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%. " +
- "Increases the player's Bladeburner stamina gain rate by 2%. " +
- "Increases the player's Bladeburner max stamina by 5%.",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorPowerCells.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorPowerCells);
-
- var BladeArmorEnergyShielding = new Augmentation({
- name:AugmentationNames.BladeArmorEnergyShielding, repCost:8.5e3, moneyCost:1.1e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system " +
- "that is capable of projecting an energy shielding force field.
" +
- "This augmentation: " +
- "Increases the player's defense by 5%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 6%.",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorEnergyShielding.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorEnergyShielding);
-
- var BladeArmorUnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorUnibeam, repCost:12.5e3, moneyCost:3.3e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
- "weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
- "threats while keeping casualties to a minimum.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 8%.",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorUnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorUnibeam);
-
- var BladeArmorOmnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorOmnibeam, repCost:25e3, moneyCost:5.5e9,
- info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use " +
- "multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
- "modules that combine together to form a single, more powerful beam of up to " +
- "2000MW.
" +
- "This augmentation: " +
- "Increases the player's success chance in Bladeburner contracts/operations by 10%.",
- prereqs:[AugmentationNames.BladeArmorUnibeam]
- });
- BladeArmorOmnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorOmnibeam);
-
- var BladeArmorIPU = new Augmentation({
- name:AugmentationNames.BladeArmorIPU, repCost: 6e3, moneyCost:220e6,
- info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing " +
- "Unit that was specially designed to analyze Synthoid related data and " +
- "information.
" +
- "This augmentation: " +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%. " +
- "Increases the player's success chance in Bladeburner contracts/operations by 2%.",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorIPU.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorIPU);
-
- var BladesSimulacrum = new Augmentation({
- name:AugmentationNames.BladesSimulacrum, repCost:3e3, moneyCost:80e9,
- info:"A highly-advanced matter phase-shifter module that is embedded " +
- "in the brainstem and cerebellum. This augmentation allows " +
- "the user to project and control a holographic simulacrum within an " +
- "extremely large radius. These specially-modified holograms were specially " +
- "weaponized by Bladeburner units to be used against Synthoids.
" +
- "This augmentation allows you to perform Bladeburner actions and other " +
- "actions (such as working, commiting crimes, etc.) at the same time."
- });
- BladesSimulacrum.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladesSimulacrum);
- }
-
- //Update costs based on how many have been purchased
- var mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultipleAugMultiplier, _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations.length);
- for (var name in Augmentations) {
- if (Augmentations.hasOwnProperty(name)) {
- Augmentations[name].baseCost *= mult;
- }
- }
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].reapplyAllAugmentations();
-}
-
-//Resets an Augmentation during (re-initizliation)
-function resetAugmentation(newAugObject) {
- if (!(newAugObject instanceof Augmentation)) {
- throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");
- }
- var name = newAugObject.name;
- if (augmentationExists(name)) {
- delete Augmentations[name];
- }
- AddToAugmentations(newAugObject);
-}
-
-function applyAugmentation(aug, reapply=false) {
- Augmentations[aug.name].owned = true;
- switch(aug.name) {
- //Combat stat augmentations
- case AugmentationNames.Targeting1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.10;
- break;
- case AugmentationNames.Targeting2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.20;
- break;
- case AugmentationNames.Targeting3:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.30;
- break;
- case AugmentationNames.SyntheticHeart: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.5;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.5;
- break;
- case AugmentationNames.SynfibrilMuscle: //Medium-high level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.3;
- break;
- case AugmentationNames.CombatRib1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.1;
- break;
- case AugmentationNames.CombatRib2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.14;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.14;
- break;
- case AugmentationNames.CombatRib3:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.18;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.18;
- break;
- case AugmentationNames.NanofiberWeave: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.2;
- break;
- case AugmentationNames.SubdermalArmor: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 2.2;
- break;
- case AugmentationNames.WiredReflexes: //Low level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.05;
- break;
- case AugmentationNames.GrapheneBoneLacings: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.7;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.7;
- break;
- case AugmentationNames.BionicSpine: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.15;
- break;
- case AugmentationNames.GrapheneBionicSpine: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.6;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.6;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.6;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.6;
- break;
- case AugmentationNames.BionicLegs: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.6;
- break;
- case AugmentationNames.GrapheneBionicLegs: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 2.5;
- break;
-
- //Labor stats augmentations
- case AugmentationNames.EnhancedSocialInteractionImplant: //Med-high level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.6;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.6;
- break;
- case AugmentationNames.TITN41Injection:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.SpeechProcessor: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.2;
- break;
-
- //Hacking augmentations
- case AugmentationNames.BitWire:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.ArtificialBioNeuralNetwork: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.12;
- break;
- case AugmentationNames.ArtificialSynapticPotentiation: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.05;
- break;
- case AugmentationNames.EnhancedMyelinSheathing: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.SynapticEnhancement: //Low Level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- break;
- case AugmentationNames.NeuralRetentionEnhancement: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.DataJack: //Med low level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.25;
- break;
- case AugmentationNames.ENM: //Medium level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCore: //Medium level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.07;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.ENMCoreV2: //Medium high level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCoreV3: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.25;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.ENMAnalyzeEngine: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.1;
- break;
- case AugmentationNames.ENMDMA: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.2;
- break;
- case AugmentationNames.Neuralstimulator: //Medium Level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.12;
- break;
- case AugmentationNames.NeuralAccelerator:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.2;
- break;
- case AugmentationNames.CranialSignalProcessorsG1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.CranialSignalProcessorsG2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.CranialSignalProcessorsG3:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.09;
- break;
- case AugmentationNames.CranialSignalProcessorsG4:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_grow_mult *= 1.25;
- break;
- case AugmentationNames.CranialSignalProcessorsG5:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.25;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_grow_mult *= 1.75;
- break;
- case AugmentationNames.NeuronalDensification:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- break;
-
- //Work augmentations
- case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.2;
- break;
- case AugmentationNames.SpeechEnhancement: //Low level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.1;
- break;
- case AugmentationNames.FocusWire: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].work_money_mult *= 1.2;
- break;
- case AugmentationNames.PCDNI: //Med level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.PCDNIOptimizer: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.75;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.PCDNINeuralNetwork: //High level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.ADRPheromone1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].faction_rep_mult *= 1.1;
- break;
- case AugmentationNames.ADRPheromone2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].faction_rep_mult *= 1.2;
- break;
-
- //Hacknet Node Augmentations
- case AugmentationNames.HacknetNodeCPUUpload:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_purchase_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeCacheUpload:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.10;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_level_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeNICUpload:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_purchase_cost_mult *= 0.9;
- break;
- case AugmentationNames.HacknetNodeKernelDNI:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.25;
- break;
- case AugmentationNames.HacknetNodeCoreDNI:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.45;
- break;
-
- //Misc augmentations
- case AugmentationNames.NeuroFluxGovernor:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_grow_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.01;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.01;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.01;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].faction_rep_mult *= 1.01;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_success_mult *= 1.01;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_money_mult *= 1.01;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_purchase_cost_mult *= 0.99;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_ram_cost_mult *= 0.99;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_core_cost_mult *= 0.99;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacknet_node_level_cost_mult *= 0.99;
-
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].work_money_mult *= 1.01;
-
- if (!reapply) {
- Augmentations[aug.name].level = aug.level;
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations[i].level = aug.level;
- break;
- }
- }
- }
- break;
- case AugmentationNames.Neurotrainer1: //Low Level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.1;
- break;
- case AugmentationNames.Neurotrainer2: //Medium level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neurotrainer3: //High Level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.2;
- break;
- case AugmentationNames.Hypersight: //Medium high level
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.HemoRecirculator:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.08;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.08;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.08;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.08;
- break;
- case AugmentationNames.SmartSonar:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.PowerRecirculator:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.1;
- break;
- //Unique augmentations (for factions)
- case AugmentationNames.QLink:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 2;
- break;
- case AugmentationNames.TheRedPill:
- break;
- case AugmentationNames.SPTN97:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.75;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.75;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.75;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.75;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.15;
- break;
- case AugmentationNames.HiveMind:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_grow_mult *= 3;
- break;
- case AugmentationNames.CordiARCReactor:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.35;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.35;
- break;
- case AugmentationNames.SmartJaw:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.5;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.5;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.25;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].faction_rep_mult *= 1.25;
- break;
- case AugmentationNames.Neotra:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.55;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.55;
- break;
- case AugmentationNames.Xanipher:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.nextSENS:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].charisma_mult *= 1.2;
- break;
- case AugmentationNames.OmniTekInfoLoad:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.PhotosyntheticCells:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.4;
- break;
- case AugmentationNames.Neurolink:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_chance_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.TheBlackHand:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_speed_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.CRTX42AA:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_mult *= 1.08;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neuregen:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].hacking_exp_mult *= 1.4;
- break;
- case AugmentationNames.CashRoot:
- break;
- case AugmentationNames.NutriGen:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.2;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.2;
- break;
- case AugmentationNames.INFRARet:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_success_mult *= 1.25;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.1;
- break;
- case AugmentationNames.DermaForce:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.4;
- break;
- case AugmentationNames.GrapheneBrachiBlades:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.4;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_success_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.3;
- break;
- case AugmentationNames.GrapheneBionicArms:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.85;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.85;
- break;
- case AugmentationNames.BrachiBlades:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_success_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].crime_money_mult *= 1.15;
- break;
- case AugmentationNames.BionicArms:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.3;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.3;
- break;
- case AugmentationNames.SNA:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].work_money_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].company_rep_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].faction_rep_mult *= 1.15;
- break;
-
- //Bladeburner augmentations
- case AugmentationNames.EsperEyewear:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.05;
- break;
- case AugmentationNames.EMS4Recombination:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.03;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_analysis_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_stamina_gain_mult *= 1.02;
- break;
- case AugmentationNames.OrionShoulder:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.HyperionV1:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.06;
- break;
- case AugmentationNames.HyperionV2:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.08;
- break;
- case AugmentationNames.GolemSerum:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.07;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.07;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.07;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.07;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.VangelisVirus:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_analysis_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.VangelisVirus3:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.1;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_analysis_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.05;
- break;
- case AugmentationNames.INTERLINKED:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_exp_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_max_stamina_mult *= 1.1;
- break;
- case AugmentationNames.BladeRunner:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_max_stamina_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmor:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].strength_mult *= 1.04;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.04;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].dexterity_mult *= 1.04;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].agility_mult *= 1.04;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_stamina_gain_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.03;
- break;
- case AugmentationNames.BladeArmorPowerCells:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_stamina_gain_mult *= 1.02;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_max_stamina_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmorEnergyShielding:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].defense_mult *= 1.05;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.06;
- break;
- case AugmentationNames.BladeArmorUnibeam:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.08;
- break;
- case AugmentationNames.BladeArmorOmnibeam:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.1;
- break;
- case AugmentationNames.BladeArmorIPU:
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_analysis_mult *= 1.15;
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bladeburner_success_chance_mult *= 1.02;
- break;
- case AugmentationNames.BladesSimulacrum: //No multiplier effect
- break;
- default:
- throw new Error("ERROR: No such augmentation!");
- return;
- }
-
- if (aug.name === AugmentationNames.NeuroFluxGovernor) {
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- //Already have this aug, just upgrade the level
- return;
- }
- }
- }
-
- if (!reapply) {
- var ownedAug = new PlayerOwnedAugmentation(aug.name);
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.push(ownedAug);
- }
-}
-
-function PlayerOwnedAugmentation(name) {
- this.name = name;
- this.level = 1;
-}
-
-function installAugmentations(cbScript=null) {
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations.length == 0) {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("You have not purchased any Augmentations to install!");
- return false;
- }
- var augmentationList = "";
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations.length; ++i) {
- var aug = Augmentations[_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations[i].name];
- if (aug == null) {
- console.log("ERROR. Invalid augmentation");
- continue;
- }
- applyAugmentation(_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations[i]);
- augmentationList += (aug.name + " ");
- }
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations = [];
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("You slowly drift to sleep as scientists put you under in order " +
- "to install the following Augmentations: " + augmentationList +
- " You wake up in your home...you feel different...");
- Object(_Prestige__WEBPACK_IMPORTED_MODULE_6__[/* prestigeAugmentation */ "a"])();
-
- //Run a script after prestiging
- if (cbScript && Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_19__["isString"])(cbScript)) {
- var home = _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].getHomeComputer();
- for (var i = 0; i < home.scripts.length; ++i) {
- if (home.scripts[i].filename === cbScript) {
- var script = home.scripts[i];
- var ramUsage = script.ramUsage;
- var ramAvailable = home.maxRam - home.ramUsed;
- if (ramUsage > ramAvailable) {
- return; //Not enough RAM
- }
- var runningScriptObj = new _Script__WEBPACK_IMPORTED_MODULE_8__[/* RunningScript */ "b"](script, []); //No args
- runningScriptObj.threads = 1; //Only 1 thread
- home.runningScripts.push(runningScriptObj);
- Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_4__[/* addWorkerScript */ "c"])(runningScriptObj, home);
- }
- }
- }
-}
-
-function augmentationExists(name) {
- return Augmentations.hasOwnProperty(name);
-}
-
-//Used for testing balance
-function giveAllAugmentations() {
- for (var name in Augmentations) {
- var aug = Augmentations[name];
- if (aug == null) {continue;}
- var ownedAug = new PlayerOwnedAugmentation(name);
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.push(ownedAug);
- }
- _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].reapplyAllAugmentations();
-}
-
-function displayAugmentationsContent(contentEl) {
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20__["removeChildrenFromElement"])(contentEl);
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("h1", {
- innerText:"Purchased Augmentations",
- }));
-
- //Bladeburner text, once mechanic is unlocked
- var bladeburnerText = "\n";
- if (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].bitNodeN === 6 || _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_3__[/* hasBladeburnerSF */ "c"]) {
- bladeburnerText = "Bladeburner Progress\n\n";
- }
-
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("pre", {
- width:"70%", whiteSpace:"pre-wrap", display:"block",
- innerText:"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.\n" +
- "WARNING: Installing your Augmentations resets most of your progress, including:\n\n" +
- "Stats/Skill levels and Experience\n" +
- "Money\n" +
- "Scripts on every computer but your home computer\n" +
- "Purchased servers\n" +
- "Hacknet Nodes\n" +
- "Faction/Company reputation\n" +
- "Stocks\n" +
- bladeburnerText +
- "Installing Augmentations lets you start over with the perks and benefits granted by all " +
- "of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades " +
- "on your home computer (but you will lose all programs besides NUKE.exe)."
- }));
-
- //Install Augmentations button
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button", innerText:"Install Augmentations",
- tooltip:"'I never asked for this'",
- clickListener:()=>{
- installAugmentations();
- return false;
- }
- }));
-
- //Backup button
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button flashing-button", innerText:"Backup Save (Export)",
- tooltip:"It's always a good idea to backup/export your save!",
- clickListener:()=>{
- _SaveObject__WEBPACK_IMPORTED_MODULE_7__[/* saveObject */ "b"].exportGame();
- return false;
- }
- }));
-
- //Purchased/queued augmentations list
- var queuedAugmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("ul", {class:"augmentations-list"});
-
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations.length; ++i) {
- var augName = _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (_Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].queuedAugmentations[i].level);
- }
-
- var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- queuedAugmentationsList.appendChild(accordion[0]);
- }
- contentEl.appendChild(queuedAugmentationsList);
-
- //Installed augmentations list
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("h1", {
- innerText:"Installed Augmentations", marginTop:"8px",
- }));
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("p", {
- width:"70%", whiteSpace:"pre-wrap",
- innerText:"List of all Augmentations (including Source Files) that have been " +
- "installed. You have gained the effects of these Augmentations."
- }));
-
- var augmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("ul", {class:"augmentations-list"});
-
- //Expand/Collapse All buttons
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Expand All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (!allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Collapse All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
-
- //Sort Buttons
- const sortInOrderButton = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort in Order",
- tooltip:"Sorts the Augmentations alphabetically and Source Files in numerical order (1, 2, 3,...)",
- clickListener:()=>{
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20__["removeChildrenFromElement"])(augmentationsList);
-
- //Create a copy of Player's Source Files and augs array and sort them
- var sourceFiles = _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].sourceFiles.slice();
- var augs = _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations.slice();
- sourceFiles.sort((sf1, sf2)=>{
- return sf1.n - sf2.n;
- });
- augs.sort((aug1, aug2)=>{
- return aug1.name <= aug2.name ? -1 : 1;
- });
- displaySourceFiles(augmentationsList, sourceFiles);
- displayAugmentations(augmentationsList, augs);
-
- _Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].OwnedAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["OwnedAugmentationsOrderSetting"].Alphabetically;
- }
- });
- contentEl.appendChild(sortInOrderButton);
-
- const sortByAcquirementTimeButton = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort by Acquirement Time",
- tooltip:"Sorts the Augmentations and Source Files based on when you acquired them (same as default)",
- clickListener:()=>{
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_20__["removeChildrenFromElement"])(augmentationsList);
- displaySourceFiles(augmentationsList, _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].sourceFiles);
- displayAugmentations(augmentationsList, _Player__WEBPACK_IMPORTED_MODULE_5__[/* Player */ "a"].augmentations);
-
- _Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].OwnedAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["OwnedAugmentationsOrderSetting"].AcquirementTime;
- }
- });
- contentEl.appendChild(sortByAcquirementTimeButton);
-
- if (_Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].OwnedAugmentationsOrder === _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["OwnedAugmentationsOrderSetting"].Alphabetically) {
- sortInOrderButton.click();
- } else {
- sortByAcquirementTimeButton.click();
- }
- contentEl.appendChild(augmentationsList);
-
- // Display multiplier information at the bottom
- contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__["createElement"])("p", {
- display: "block",
- innerHTML:
- `
',
- }))
-}
-
-//Creates the accordion elements to display Augmentations
-// @listElement - List DOM element to append accordion elements to
-// @augs - Array of Augmentation objects
-function displayAugmentations(listElement, augs) {
- for (var i = 0; i < augs.length; ++i) {
- var augName = augs[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (augs[i].level);
- }
- var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- listElement.appendChild(accordion[0]);
- }
-}
-
-//Creates the accordion elements to display Source Files
-// @listElement - List DOM element to append accordion elements to
-// @sourceFiles - Array of Source File objects
-function displaySourceFiles(listElement, sourceFiles) {
- for (var i = 0; i < sourceFiles.length; ++i) {
- var srcFileKey = "SourceFile" + sourceFiles[i].n;
- var sourceFileObject = _SourceFile__WEBPACK_IMPORTED_MODULE_12__[/* SourceFiles */ "b"][srcFileKey];
- if (sourceFileObject == null) {
- console.log("ERROR: Invalid source file number: " + sourceFiles[i].n);
- continue;
- }
- const maxLevel = sourceFiles[i].n == 12 ? "∞" : "3";
- var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_14__["createAccordionElement"])({
- hdrText:sourceFileObject.name + " " + "Level " + (sourceFiles[i].lvl) + " / "+maxLevel,
- panelText:sourceFileObject.info
- });
-
- listElement.appendChild(accordion[0]);
- }
-}
-
-
-
-
-
-/***/ }),
-/* 22 */
+/* 24 */
/*!****************************************!*\
!*** ./src/StockMarket/StockMarket.js ***!
\****************************************/
@@ -10659,35 +8176,36 @@ function displaySourceFiles(listElement, sourceFiles) {
/* unused harmony export Order */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OrderTypes; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return PositionTypes; });
-/* harmony import */ var _Stock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Stock */ 28);
+/* harmony import */ var _Stock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Stock */ 31);
/* harmony import */ var _Stock__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Stock__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Locations */ 5);
/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../NetscriptFunctions */ 43);
-/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../NetscriptWorker */ 26);
+/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../NetscriptFunctions */ 47);
+/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../NetscriptWorker */ 29);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Player */ 0);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! .././ui/navigationTracking */ 12);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! .././ui/navigationTracking */ 14);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! .././ui/numeralFormat */ 4);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/uiHelpers/clearEventListeners */ 16);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/uiHelpers/clearEventListeners */ 22);
/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/helpers/exceptionAlert */ 44);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 15);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/helpers/exceptionAlert */ 45);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 17);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/helpers/keyCodes */ 25);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/helpers/keyCodes */ 27);
/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 30);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 32);
/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__);
-/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElementById */ 20);
+/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElementById */ 23);
/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/YesNoBox */ 19);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/YesNoBox */ 21);
/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_17__);
@@ -11704,7 +9222,7 @@ function switchToDisplayAllMode() {
function createAllStockTickers() {
var stockList = document.getElementById("stock-market-list");
if (stockList == null) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__[/* exceptionAlert */ "a"])("Error creating Stock Tickers UI. DOM element with ID 'stock-market-list' could not be found");
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_11__["exceptionAlert"])("Error creating Stock Tickers UI. DOM element with ID 'stock-market-list' could not be found");
}
Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(stockList);
@@ -12198,7 +9716,7 @@ function updateStockOrderList(stock) {
/***/ }),
-/* 23 */
+/* 25 */
/*!*****************************************!*\
!*** ./src/Corporation/IndustryData.ts ***!
\*****************************************/
@@ -12209,7 +9727,7 @@ function updateStockOrderList(stock) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const BaseResearchTree_1 = __webpack_require__(/*! ./data/BaseResearchTree */ 213);
+const BaseResearchTree_1 = __webpack_require__(/*! ./data/BaseResearchTree */ 231);
const numeralFormat_1 = __webpack_require__(/*! ../ui/numeralFormat */ 4);
// Map of official names for each Industry
exports.Industries = {
@@ -12328,7 +9846,7 @@ exports.resetIndustryResearchTrees = resetIndustryResearchTrees;
/***/ }),
-/* 24 */
+/* 26 */
/*!**********************************!*\
!*** ./src/Programs/Programs.ts ***!
\**********************************/
@@ -12339,8 +9857,8 @@ exports.resetIndustryResearchTrees = resetIndustryResearchTrees;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const Program_1 = __webpack_require__(/*! ./Program */ 201);
-const programsMetadata_1 = __webpack_require__(/*! ./data/programsMetadata */ 200);
+const Program_1 = __webpack_require__(/*! ./Program */ 220);
+const programsMetadata_1 = __webpack_require__(/*! ./data/programsMetadata */ 219);
exports.Programs = {};
for (const params of programsMetadata_1.programsMetadata) {
exports.Programs[params.key] = new Program_1.Program(params.name, params.create);
@@ -12348,7 +9866,7 @@ for (const params of programsMetadata_1.programsMetadata) {
/***/ }),
-/* 25 */
+/* 27 */
/*!***********************************!*\
!*** ./utils/helpers/keyCodes.ts ***!
\***********************************/
@@ -12392,7 +9910,79 @@ exports.KEY = {
/***/ }),
-/* 26 */
+/* 28 */
+/*!**********************************!*\
+ !*** ./src/ui/MainMenu/Links.ts ***!
+ \**********************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+// Get references to the Main Menu link DOM elements
+// Does NOT include collapsible headers for the links
+const clearEventListeners_1 = __webpack_require__(/*! ../../../utils/uiHelpers/clearEventListeners */ 22);
+exports.MainMenuLinks = {
+ Terminal: null,
+ ScriptEditor: null,
+ ActiveScripts: null,
+ CreateProgram: null,
+ Stats: null,
+ Factions: null,
+ Augmentations: null,
+ HacknetNodes: null,
+ City: null,
+ Travel: null,
+ Job: null,
+ StockMarket: null,
+ Bladeburner: null,
+ Corporation: null,
+ Gang: null,
+ Tutorial: null,
+ Options: null,
+ DevMenu: null,
+};
+function initializeMainMenuLinks() {
+ try {
+ function safeGetLink(id) {
+ const elem = clearEventListeners_1.clearEventListeners(id);
+ if (elem == null) {
+ throw new Error(`clearEventListeners() failed for element with id: ${id}`);
+ }
+ return elem;
+ }
+ exports.MainMenuLinks.Terminal = safeGetLink("terminal-menu-link");
+ exports.MainMenuLinks.ScriptEditor = safeGetLink("create-script-menu-link");
+ exports.MainMenuLinks.ActiveScripts = safeGetLink("active-scripts-menu-link");
+ exports.MainMenuLinks.CreateProgram = safeGetLink("create-program-menu-link");
+ exports.MainMenuLinks.Stats = safeGetLink("stats-menu-link");
+ exports.MainMenuLinks.Factions = safeGetLink("factions-menu-link");
+ exports.MainMenuLinks.Augmentations = safeGetLink("augmentations-menu-link");
+ exports.MainMenuLinks.HacknetNodes = safeGetLink("hacknet-nodes-menu-link");
+ exports.MainMenuLinks.City = safeGetLink("city-menu-link");
+ exports.MainMenuLinks.Travel = safeGetLink("travel-menu-link");
+ exports.MainMenuLinks.Job = safeGetLink("job-menu-link");
+ exports.MainMenuLinks.StockMarket = safeGetLink("stock-market-menu-link");
+ exports.MainMenuLinks.Bladeburner = safeGetLink("bladeburner-menu-link");
+ exports.MainMenuLinks.Corporation = safeGetLink("corporation-menu-link");
+ exports.MainMenuLinks.Gang = safeGetLink("gang-menu-link");
+ exports.MainMenuLinks.Tutorial = safeGetLink("tutorial-menu-link");
+ exports.MainMenuLinks.Options = document.getElementById("options-menu-link"); // This click listener is already set, so don't clear it
+ exports.MainMenuLinks.DevMenu = safeGetLink("dev-menu-link");
+ return true;
+ }
+ catch (e) {
+ console.error(`Failed to initialize Main Menu Links: ${e}`);
+ return false;
+ }
+}
+exports.initializeMainMenuLinks = initializeMainMenuLinks;
+
+
+/***/ }),
+/* 29 */
/*!********************************!*\
!*** ./src/NetscriptWorker.js ***!
\********************************/
@@ -12409,29 +9999,29 @@ exports.KEY = {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return addWorkerScript; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return updateOnlineScriptTimes; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return prestigeWorkerScripts; });
-/* harmony import */ var _ActiveScriptsUI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI */ 68);
+/* harmony import */ var _ActiveScriptsUI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI */ 73);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _JSInterpreter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./JSInterpreter */ 132);
-/* harmony import */ var _NetscriptEnvironment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEnvironment */ 116);
-/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptEvaluator */ 6);
-/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptFunctions */ 43);
-/* harmony import */ var _NetscriptJSEvaluator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./NetscriptJSEvaluator */ 117);
-/* harmony import */ var _NetscriptPort__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./NetscriptPort */ 72);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Server */ 11);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Settings */ 18);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _JSInterpreter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./JSInterpreter */ 143);
+/* harmony import */ var _NetscriptEnvironment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEnvironment */ 124);
+/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptEvaluator */ 7);
+/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptFunctions */ 47);
+/* harmony import */ var _NetscriptJSEvaluator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./NetscriptJSEvaluator */ 125);
+/* harmony import */ var _NetscriptPort__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./NetscriptPort */ 76);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Server */ 12);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Settings */ 20);
/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var escodegen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! escodegen */ 110);
+/* harmony import */ var escodegen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! escodegen */ 117);
/* harmony import */ var escodegen__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(escodegen__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn */ 49);
+/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn */ 52);
/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/helpers/compareArrays */ 93);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/helpers/compareArrays */ 99);
/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/helpers/arrayToString */ 55);
+/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/helpers/arrayToString */ 59);
/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_15__);
-/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/helpers/roundToTwo */ 83);
+/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/helpers/roundToTwo */ 88);
/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_17__);
@@ -12456,7 +10046,7 @@ exports.KEY = {
-const walk = __webpack_require__(/*! acorn/dist/walk */ 149);
+const walk = __webpack_require__(/*! acorn/dist/walk */ 162);
function WorkerScript(runningScriptObj) {
this.name = runningScriptObj.filename;
@@ -13067,7 +10657,7 @@ function updateOnlineScriptTimes(numCycles = 1) {
/***/ }),
-/* 27 */
+/* 30 */
/*!**********************************************!*\
!*** ./src/Corporation/EmployeePositions.ts ***!
\**********************************************/
@@ -13090,7 +10680,7 @@ exports.EmployeePositions = {
/***/ }),
-/* 28 */
+/* 31 */
/*!**********************************!*\
!*** ./src/StockMarket/Stock.ts ***!
\**********************************/
@@ -13101,8 +10691,8 @@ exports.EmployeePositions = {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
-const getRandomInt_1 = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 15);
+const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+const getRandomInt_1 = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 17);
/**
* Represents the valuation of a company in the World Stock Exchange.
*/
@@ -13142,34 +10732,7 @@ JSONReviver_1.Reviver.constructors.Stock = Stock;
/***/ }),
-/* 29 */
-/*!*****************************************!*\
- !*** ./src/Company/CompanyPositions.ts ***!
- \*****************************************/
-/*! no static exports found */
-/*! all exports used */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-// Constructs all CompanyPosition objects using the metadata in data/companypositions.ts
-const CompanyPositionsMetadata_1 = __webpack_require__(/*! ./data/CompanyPositionsMetadata */ 215);
-const CompanyPosition_1 = __webpack_require__(/*! ./CompanyPosition */ 87);
-exports.CompanyPositions = {};
-function addCompanyPosition(params) {
- if (exports.CompanyPositions[params.name] != null) {
- console.warn(`Duplicate Company Position being defined: ${params.name}`);
- }
- exports.CompanyPositions[params.name] = new CompanyPosition_1.CompanyPosition(params);
-}
-CompanyPositionsMetadata_1.companyPositionMetadata.forEach((e) => {
- addCompanyPosition(e);
-});
-
-
-/***/ }),
-/* 30 */
+/* 32 */
/*!******************************************************!*\
!*** ./utils/uiHelpers/removeChildrenFromElement.ts ***!
\******************************************************/
@@ -13180,8 +10743,8 @@ CompanyPositionsMetadata_1.companyPositionMetadata.forEach((e) => {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-const isString_1 = __webpack_require__(/*! ../helpers/isString */ 40);
-const getElementById_1 = __webpack_require__(/*! ./getElementById */ 54);
+const isString_1 = __webpack_require__(/*! ../helpers/isString */ 43);
+const getElementById_1 = __webpack_require__(/*! ./getElementById */ 57);
/**
* Clears out all children from the provided element.
* If a string is passed in, it will treat it as an ID and search for the element to delete all children from.
@@ -13209,7 +10772,4304 @@ exports.removeChildrenFromElement = removeChildrenFromElement;
/***/ }),
-/* 31 */
+/* 33 */
+/*!*****************************************!*\
+ !*** ./src/Company/CompanyPositions.ts ***!
+ \*****************************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+// Constructs all CompanyPosition objects using the metadata in data/companypositions.ts
+const CompanyPositionsMetadata_1 = __webpack_require__(/*! ./data/CompanyPositionsMetadata */ 233);
+const CompanyPosition_1 = __webpack_require__(/*! ./CompanyPosition */ 96);
+exports.CompanyPositions = {};
+function addCompanyPosition(params) {
+ if (exports.CompanyPositions[params.name] != null) {
+ console.warn(`Duplicate Company Position being defined: ${params.name}`);
+ }
+ exports.CompanyPositions[params.name] = new CompanyPosition_1.CompanyPosition(params);
+}
+CompanyPositionsMetadata_1.companyPositionMetadata.forEach((e) => {
+ addCompanyPosition(e);
+});
+
+
+/***/ }),
+/* 34 */
+/*!****************************!*\
+ !*** ./src/Bladeburner.js ***!
+ \****************************/
+/*! exports provided: Bladeburner */
+/*! exports used: Bladeburner */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Bladeburner; });
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentation/Augmentations */ 13);
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Augmentation/data/AugmentationNames */ 6);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Constants */ 1);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Faction/Faction */ 58);
+/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Faction_Faction__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Faction/Factions */ 16);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 49);
+/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Locations */ 5);
+/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_8__);
+/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Player */ 0);
+/* harmony import */ var _RedPill__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RedPill */ 64);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_11__);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 27);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12__);
+/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/helpers/createProgressBarText */ 91);
+/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_13__);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 32);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 70);
+/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__);
+/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/uiHelpers/appendLineBreaks */ 55);
+/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__);
+/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/helpers/clearObject */ 85);
+/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__);
+/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/uiHelpers/createPopup */ 40);
+/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_21__);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ui/navigationTracking */ 14);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 45);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 17);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__);
+/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 93);
+/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_26__);
+/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../utils/uiHelpers/removeElement */ 63);
+/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_27__);
+/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/uiHelpers/removeElementById */ 23);
+/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_28__);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var CityNames = ["Aevum", "Chongqing", "Sector-12", "New Tokyo", "Ishima", "Volhaven"];
+
+var CyclesPerSecond = 5; //Game cycle is 200 ms
+
+var StaminaGainPerSecond = 0.0085;
+var BaseStaminaLoss = 0.285; //Base stamina loss per action. Increased based on difficulty
+var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get bonus stamina gain
+
+var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
+
+//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
+//experience gain. Its formula is:
+//difficulty ^ exponentialFactor + difficulty / linearFactor
+var DiffMultExponentialFactor = 0.28;
+var DiffMultLinearFactor = 650;
+
+var EffAgiLinearFactor = 40e3;
+var EffDexLinearFactor = 40e3;
+var EffAgiExponentialFactor = 0.032;
+var EffDexExponentialFactor = 0.03;
+
+var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
+
+var PopulationThreshold = 1e9; //Population at which success rates start being affected
+var ChaosThreshold = 50; //City chaos level after which it starts making tasks harder
+
+var BaseStatGain = 1; //Base stat gain per second
+var BaseIntGain = 0.001; //Base intelligence stat gain
+
+var ActionCountGrowthPeriod = 300; //Time (s) it takes for action count to grow by its specified value
+
+var RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
+var RankNeededForFaction = 25;
+
+var ContractSuccessesPerLevel = 3.5; //How many successes you need to level up a contract
+var OperationSuccessesPerLevel = 3; //How many successes you need to level up an op
+
+var RanksPerSkillPoint = 4; //How many ranks needed to get 1 Skill Point
+
+var ContractBaseMoneyGain = 50e3; //Base Money Gained per contract
+
+//DOM related variables
+var ActiveActionCssClass = "bladeburner-active-action";
+
+//Console related stuff
+var consoleHistoryIndex = 0;
+var consoleHelpText = {
+ helpList:"Use 'help [command]' to get more information about a particular Bladeburner console command.
" +
+ "automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks " +
+ "clear/cls Clear the console " +
+ "help [cmd] Display this help text, or help text for a specific command " +
+ "log [en/dis] [type] Enable or disable logging for events and actions " +
+ "skill [action] [name] Level or display info about your Bladeburner skills " +
+ "start [type] [name] Start a Bladeburner action/task " +
+ "stop Stops your current Bladeburner action/task ",
+ automate:"automate [var] [val] [hi/low]
" +
+ "A simple way to automate your Bladeburner actions. This console command can be used " +
+ "to automatically start an action when your stamina rises above a certain threshold, and " +
+ "automatically switch to another action when your stamina drops below another threshold.
" +
+ "automate status - Check the current status of your automation and get a brief description of what it'll do " +
+ "automate en - Enable the automation feature " +
+ "automate dis - Disable the automation feature
" +
+ "There are four properties that must be set for this automation to work properly. Here is how to set them:
" +
+ "automate stamina 100 high " +
+ "automate contract Tracking high " +
+ "automate stamina 50 low " +
+ 'automate general "Field Analysis" low
' +
+ "Using the four console commands above will set the automation to perform Tracking contracts " +
+ "if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below " +
+ "50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must " +
+ "exactly match whatever the name is in the UI.",
+ clear:"clear
Clears the console",
+ cls:"cls
Clears the console",
+ help:"help [command]
" +
+ "Running 'help' with no arguments displays the general help text, which lists all console commands " +
+ "and a brief description of what they do. A command can be specified to get more specific help text " +
+ "about that particular command. For example:
" +
+ "help automate
" +
+ "will display specific information about using the automate console command",
+ log:"log [en/dis] [type]
" +
+ "Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged " +
+ "in the console. There are also random events that are logged in the console as well. The five categories of " +
+ "things that get logged are:
" +
+ "The logging for these categories can be enabled or disabled like so:
" +
+ "log dis contracts - Disables logging that occurs when contracts are completed " +
+ "log en contracts - Enables logging that occurs when contracts are completed " +
+ "log dis events - Disables logging for Bladeburner random events
" +
+ "Logging can be universally enabled/disabled using the 'all' keyword:
" +
+ "log dis all " +
+ "log en all",
+ skill:"skill [action] [name]
" +
+ "Level or display information about your skills.
" +
+ "To display information about all of your skills and your multipliers, use:
" +
+ "skill list
" +
+ "To display information about a specific skill, specify the name of the skill afterwards. " +
+ "Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If " +
+ "the name of the skill has whitespace, enclose the name of the skill in double quotation marks:
" +
+ "skill list Reaper " +
+ 'skill list "Digital Observer"
' +
+ "This console command can also be used to level up skills:
" +
+ "Start an action. An action is specified by its type and its name. The " +
+ "name is case-sensitive. It must appear exactly as it does in the UI. If " +
+ "the name of the action has whitespace, enclose it in double quotation marks. " +
+ "Valid action types include:
" +
+ "Stop your current action and go idle",
+}
+
+//Keypresses for Console
+$(document).keydown(function(event) {
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner)) {
+ //if (DomElems.consoleInput && !event.ctrlKey && !event.shiftKey && !event.altKey) {
+ // DomElems.consoleInput.focus();
+ //}
+
+ if (!(_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner instanceof Bladeburner)) {return;}
+ let consoleHistory = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner.consoleHistory;
+
+ //NOTE: Keycodes imported from Terminal.js
+ if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12__["KEY"].ENTER) {
+ event.preventDefault();
+ var command = DomElems.consoleInput.value;
+ if (command.length > 0) {
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner.postToConsole("> " + command);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner.resetConsoleInput();
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner.executeConsoleCommands(command);
+ }
+ }
+
+ if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12__["KEY"].UPARROW) {
+ if (DomElems.consoleInput == null) {return;}
+ var i = consoleHistoryIndex;
+ var len = consoleHistory.length;
+
+ if (len === 0) {return;}
+ if (i < 0 || i > len) {
+ consoleHistoryIndex = len;
+ }
+
+ if (i !== 0) {
+ --consoleHistoryIndex;
+ }
+
+ var prevCommand = consoleHistory[consoleHistoryIndex];
+ DomElems.consoleInput.value = prevCommand;
+ setTimeout(function(){DomElems.consoleInput.selectionStart = DomElems.consoleInput.selectionEnd = 10000; }, 0);
+ }
+
+ if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_12__["KEY"].DOWNARROW) {
+ if (DomElems.consoleInput == null) {return;}
+ var i = consoleHistoryIndex;
+ var len = consoleHistory.length;
+
+ if (len == 0) {return;}
+ if (i < 0 || i > len) {
+ consoleHistoryIndex = len;
+ }
+
+ //Latest command, put nothing
+ if (i == len || i == len-1) {
+ consoleHistoryIndex = len;
+ DomElems.consoleInput.value = "";
+ } else {
+ ++consoleHistoryIndex;
+ var prevCommand = consoleHistory[consoleHistoryIndex];
+ DomElems.consoleInput.value = prevCommand;
+ }
+ }
+ }
+});
+
+function City(params={}) {
+ this.name = params.name ? params.name : _Locations__WEBPACK_IMPORTED_MODULE_8__["Locations"].Sector12;
+
+ //Synthoid population and estimate
+ this.pop = params.pop ? params.pop : Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 100);
+ this.commsEst = this.comms + Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(-5, 5);
+ if (this.commsEst < 0) {this.commsEst = 0;}
+ this.chaos = 0;
+}
+
+City.prototype.improvePopulationEstimateByCount = function(n) {
+ if (isNaN(n)) {throw new Error("NaN passeed into City.improvePopulationEstimateByCount()");}
+ if (this.popEst < this.pop) {
+ this.popEst += n;
+ if (this.popEst > this.pop) {this.popEst = this.pop;}
+ } else if (this.popEst > this.pop) {
+ this.popEst -= n;
+ if (this.popEst < this.pop) {this.popEst = this.pop;}
+ }
+}
+
+//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
+City.prototype.improvePopulationEstimateByPercentage = function(p, skillMult=1) {
+ p = p*skillMult;
+ if (isNaN(p)) {throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");}
+ if (this.popEst < this.pop) {
+ ++this.popEst; //In case estimate is 0
+ this.popEst *= (1 + (p/100));
+ if (this.popEst > this.pop) {this.popEst = this.pop;}
+ } else if (this.popEst > this.pop) {
+ this.popEst *= (1 - (p/100));
+ if (this.popEst < this.pop) {this.popEst = this.pop;}
+ }
+}
+
+City.prototype.improveCommunityEstimate = function(n=1) {
+ if (isNaN(n)) {throw new Error("NaN passed into City.improveCommunityEstimate()");}
+ if (this.commsEst < this.comms) {
+ this.commsEst += n;
+ if (this.commsEst > this.comms) {this.commsEst = this.comms;}
+ } else if (this.commsEst > this.comms) {
+ this.commsEst -= n;
+ if (this.commsEst < this.comms) {this.commsEst = this.comms;}
+ }
+}
+
+//@params options:
+// estChange(int): How much the estimate should change by
+// estOffset(int): Add offset to estimate (offset by percentage)
+City.prototype.changePopulationByCount = function(n, params={}) {
+ if (isNaN(n)) {throw new Error("NaN passed into City.changePopulationByCount()");}
+ this.pop += n;
+ if (params.estChange && !isNaN(params.estChange)) {this.popEst += params.estChange;}
+ if (params.estOffset) {
+ this.popEst = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(this.popEst, params.estOffset);
+ }
+ this.popEst = Math.max(this.popEst, 0);
+}
+
+//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
+//@params options:
+// changeEstEqually(bool) - Change the population estimate by an equal amount
+// nonZero (bool) - Set to true to ensure that population always changes by at least 1
+City.prototype.changePopulationByPercentage = function(p, params={}) {
+ if (isNaN(p)) {throw new Error("NaN passed into City.changePopulationByPercentage()");}
+ if (p === 0) {return;}
+ var change = Math.round(this.pop * (p/100));
+
+ //Population always changes by at least 1
+ if (params.nonZero && change === 0) {
+ p > 0 ? change = 1 : change = -1;
+ }
+
+ this.pop += change;
+ if (params.changeEstEqually) {
+ this.popEst += change;
+ if (this.popEst < 0) {this.popEst = 0;}
+ }
+ return change;
+}
+
+City.prototype.changeChaosByCount = function(n) {
+ if (isNaN(n)) {throw new Error("NaN passed into City.changeChaosByCount()");}
+ if (n === 0) {return;}
+ this.chaos += n;
+ if (this.chaos < 0) {this.chaos = 0;}
+}
+
+//@p is the percentage, not the multiplier (e.g. pass in p = 5 for 5%)
+City.prototype.changeChaosByPercentage = function(p) {
+ if (isNaN(p)) {throw new Error("NaN passed into City.chaosChaosByPercentage()");}
+ if (p === 0) {return;}
+ var change = this.chaos * (p/100);
+ this.chaos += change;
+ if (this.chaos < 0) {this.chaos = 0;}
+}
+
+City.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("City", this);
+}
+City.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(City, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.City = City;
+
+function Skill(params={name:"foo", desc:"foo"}) {
+ if (params.name) {
+ this.name = params.name;
+ } else {
+ throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");
+ }
+ if (params.desc) {
+ this.desc = params.desc;
+ } else {
+ throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");
+ }
+ this.baseCost = params.baseCost ? params.baseCost : 1; //Cost is in Skill Points
+ this.costInc = params.costInc ? params.costInc : 1; //Additive cost increase per level
+
+ if (params.maxLvl) {this.maxLvl = params.maxLvl;}
+
+ //These benefits are additive. So total multiplier will be level (handled externally) times the
+ //effects below
+ if (params.successChanceAll) {this.successChanceAll = params.successChanceAll;}
+ if (params.successChanceStealth) {this.successChanceStealth = params.successChanceStealth;}
+ if (params.successChanceKill) {this.successChanceKill = params.successChanceKill;}
+ if (params.successChanceContract) {this.successChanceContract = params.successChanceContract;}
+ if (params.successChanceOperation) {this.successChanceOperation = params.successChanceOperation;}
+
+ //This multiplier affects everything that increases synthoid population/community estimate
+ //e.g. Field analysis, Investigation Op, Undercover Op
+ if (params.successChanceEstimate) {this.successChanceEstimate = params.successChanceEstimate;}
+
+ if (params.actionTime) {this.actionTime = params.actionTime;}
+ if (params.effHack) {this.effHack = params.effHack;}
+ if (params.effStr) {this.effStr = params.effStr;}
+ if (params.effDef) {this.effDef = params.effDef;}
+ if (params.effDex) {this.effDex = params.effDex;}
+ if (params.effAgi) {this.effAgi = params.effAgi;}
+ if (params.effCha) {this.effCha = params.effCha;}
+
+ if (params.stamina) {this.stamina = params.stamina;}
+
+ //Equipment
+ if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;}
+ if (params.gunAbility) {this.gunAbility = params.gunAbility;}
+}
+
+Skill.prototype.calculateCost = function(currentLevel) {
+ return Math.floor((this.baseCost + (currentLevel * this.costInc)) * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"].BladeburnerSkillCost);
+}
+var Skills = {};
+var SkillNames = {
+ BladesIntuition: "Blade's Intuition",
+ Reaper: "Reaper",
+ Cloak: "Cloak",
+ Marksman: "Marksman",
+ WeaponProficiency: "Weapon Proficiency",
+ Overclock: "Overclock",
+ EvasiveSystem: "Evasive System",
+ ShortCircuit: "Short-Circuit",
+ DigitalObserver: "Digital Observer",
+ Datamancer: "Datamancer",
+ Tracer: "Tracer",
+ CybersEdge: "Cyber's Edge"
+}
+
+//Base Class for Contracts, Operations, and BlackOps
+function Action(params={}) {
+ this.name = params.name ? params.name : "";
+ this.desc = params.desc ? params.desc : "";
+
+ //Difficulty scales with level
+ //Exact formula is not set in stone
+ //Initial design: baseDifficulty * (difficultyFac ^ level)?
+ //difficulty Fac is slightly greater than 1
+ this.level = 1;
+ this.maxLevel = 1;
+ this.autoLevel = true;
+ this.baseDifficulty = params.baseDifficulty ? Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(params.baseDifficulty, 10) : 100;
+ this.difficultyFac = params.difficultyFac ? params.difficultyFac : 1.01;
+
+ //Rank increase/decrease is affected by this exponent
+ this.rewardFac = params.rewardFac ? params.rewardFac : 1.02;
+
+ this.successes = 0;
+ this.failures = 0;
+
+ //All of these scale with level/difficulty
+ this.rankGain = params.rankGain ? params.rankGain : 0;
+ if (params.rankLoss) {this.rankLoss = params.rankLoss;}
+ if (params.hpLoss) {
+ this.hpLoss = params.hpLoss;
+ this.hpLost = 0;
+ }
+
+ //Action Category. Current categories are stealth and kill
+ this.isStealth = params.isStealth ? true : false;
+ this.isKill = params.isKill ? true : false;
+
+ //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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1e3, 25e3);
+ this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["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};
+ this.weights = params.weights ? params.weights : defaultWeights;
+
+ //Check to make sure weights are summed properly
+ var sum = 0;
+ for (var weight in this.weights) {
+ if (this.weights.hasOwnProperty(weight)) {
+ sum += this.weights[weight];
+ }
+ }
+ if (sum - 1 >= 10 * Number.EPSILON) {
+ throw new Error("Invalid weights when constructing Action " + this.name +
+ ". The weights should sum up to 1. They sum up to :" + 1);
+ }
+
+ //Diminishing returns of stats (stat ^ decay where 0 <= decay <= 1)
+ var defaultDecays = {hack:0.9,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.9,int:0.9};
+ this.decays = params.decays ? params.decays : defaultDecays;
+ for (var decay in this.decays) {
+ if (this.decays.hasOwnProperty(decay)) {
+ if (this.decays[decay] > 1) {
+ throw new Error("Invalid decays when constructing " +
+ "Action " + this.name + ". " +
+ "Decay value cannot be greater than 1");
+ }
+ }
+ }
+}
+
+Action.prototype.getDifficulty = function() {
+ var difficulty = this.baseDifficulty * Math.pow(this.difficultyFac, this.level-1);
+ if (isNaN(difficulty)) {throw new Error("Calculated NaN in Action.getDifficulty()");}
+ return difficulty;
+}
+
+//@inst - Bladeburner Object
+//@params - options:
+// est (bool): Get success chance estimate instead of real success chance
+Action.prototype.getSuccessChance = function(inst, params={}) {
+ if (inst == null) {throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");}
+ var difficulty = this.getDifficulty();
+ var competence = 0;
+ for (var stat in this.weights) {
+ if (this.weights.hasOwnProperty(stat)) {
+ var playerStatLvl = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queryStatFromString(stat);
+ var key = "eff" + stat.charAt(0).toUpperCase() + stat.slice(1);
+ var effMultiplier = inst.skillMultipliers[key];
+ if (effMultiplier == null) {
+ console.log("ERROR: Failed to find Bladeburner Skill multiplier for: " + stat);
+ effMultiplier = 1;
+ }
+ competence += (this.weights[stat] * Math.pow(effMultiplier*playerStatLvl, this.decays[stat]));
+ }
+ }
+ competence *= inst.calculateStaminaPenalty();
+
+ //For Operations, factor in team members
+ if (this instanceof Operation || this instanceof BlackOperation) {
+ if (this.teamCount && this.teamCount > 0) {
+ this.teamCount = Math.min(this.teamCount, inst.teamSize);
+ var teamMultiplier = Math.pow(this.teamCount, 0.05);
+ competence *= teamMultiplier;
+ }
+ }
+
+ //Lower city population results in lower chances
+ if (!(this instanceof BlackOperation)) {
+ var city = inst.getCurrentCity();
+ if (params.est) {
+ competence *= (city.popEst / PopulationThreshold);
+ } else {
+ competence *= (city.pop / PopulationThreshold);
+ }
+
+ //Too high of a chaos results in lower chances
+ if (city.chaos > ChaosThreshold) {
+ var diff = 1 + (city.chaos - ChaosThreshold);
+ var mult = Math.pow(diff, 0.1);
+ difficulty *= mult;
+ }
+
+ //For Raid Operations, no communities = fail
+ if (this instanceof Operation && this.name === "Raid") {
+ if (city.comms <= 0) {return 0;}
+ }
+ }
+
+ //Factor skill multipliers into success chance
+ competence *= inst.skillMultipliers.successChanceAll;
+ if (this instanceof Operation || this instanceof BlackOperation) {
+ competence *= inst.skillMultipliers.successChanceOperation;
+ }
+ if (this instanceof Contract) {
+ competence *= inst.skillMultipliers.successChanceContract;
+ }
+ if (this.isStealth) {
+ competence *= inst.skillMultipliers.successChanceStealth;
+ }
+ if (this.isKill) {
+ competence *= inst.skillMultipliers.successChanceKill;
+ }
+
+ //Augmentation multiplier
+ competence *= _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner_success_chance_mult;
+
+ if (isNaN(competence)) {throw new Error("Competence calculated as NaN in Action.getSuccessChance()");}
+ return Math.min(1, competence / difficulty);
+}
+
+//Tests for success. Should be called when an action has completed
+// @inst - Bladeburner Object
+Action.prototype.attempt = function(inst) {
+ return (Math.random() < this.getSuccessChance(inst));
+}
+
+Action.prototype.getActionTime = function(inst) {
+ var difficulty = this.getDifficulty();
+ var baseTime = difficulty / DifficultyToTimeFactor;
+ var skillFac = inst.skillMultipliers.actionTime; //Always < 1
+
+ var effAgility = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].agility * inst.skillMultipliers.effAgi;
+ var effDexterity = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].dexterity * inst.skillMultipliers.effDex;
+ var statFac = 0.5 * (Math.pow(effAgility, EffAgiExponentialFactor) +
+ Math.pow(effDexterity, EffDexExponentialFactor) +
+ (effAgility / EffAgiLinearFactor) +
+ (effDexterity / EffDexLinearFactor)); //Always > 1
+
+ baseTime = Math.max(1, baseTime * skillFac / statFac);
+
+ if (this instanceof Contract) {
+ return Math.ceil(baseTime);
+ } else if (this instanceof Operation) {
+ return Math.ceil(baseTime);
+ } else if (this instanceof BlackOperation) {
+ return Math.ceil(baseTime * 1.5);
+ } else {
+ throw new Error("Unrecognized Action Type in Action.getActionTime(this). Must be either Contract, Operation, or BlackOperation");
+ }
+}
+
+Action.prototype.getSuccessesNeededForNextLevel = function(baseSuccessesPerLevel) {
+ return Math.ceil((0.5) * (this.maxLevel) * (2 * baseSuccessesPerLevel + (this.maxLevel-1)));
+}
+
+Action.prototype.setMaxLevel = function(baseSuccessesPerLevel) {
+ if (this.successes >= this.getSuccessesNeededForNextLevel(baseSuccessesPerLevel)) {
+ ++this.maxLevel;
+ }
+}
+
+Action.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("Action", this);
+}
+Action.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(Action, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.Action = Action;
+var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
+
+//Action Identifier
+var ActionTypes = Object.freeze({
+ "Idle": 1,
+ "Contract": 2,
+ "Operation": 3,
+ "BlackOp": 4,
+ "BlackOperation": 4,
+ "Training": 5,
+ "Recruitment": 6,
+ "FieldAnalysis": 7,
+ "Field Analysis": 7
+});
+function ActionIdentifier(params={}) {
+ if (params.name) {this.name = params.name;}
+ if (params.type) {this.type = params.type;}
+}
+ActionIdentifier.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("ActionIdentifier", this);
+}
+ActionIdentifier.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(ActionIdentifier, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.ActionIdentifier = ActionIdentifier;
+
+//Contracts
+function Contract(params={}) {
+ Action.call(this, params);
+}
+Contract.prototype = Object.create(Action.prototype);
+Contract.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("Contract", this);
+}
+Contract.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(Contract, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.Contract = Contract;
+
+//Operations
+function Operation(params={}) {
+ Action.call(this, params);
+ this.reqdRank = params.reqdRank ? params.reqdRank : 100;
+ this.teamCount = params.teamCount ? params.teamCount : 0; //# of team members to use
+}
+Operation.prototype = Object.create(Action.prototype);
+Operation.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("Operation", this);
+}
+Operation.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(Operation, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.Operation = Operation;
+
+//Black Operations
+function BlackOperation(params={}) {
+ Operation.call(this, params);
+
+ //Black ops are one time missions
+ this.count = 1;
+ this.countGrowth = 0;
+}
+BlackOperation.prototype = Object.create(Action.prototype);
+BlackOperation.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("BlackOperation", this);
+}
+BlackOperation.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(BlackOperation, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.BlackOperation = BlackOperation;
+var BlackOperations = {};
+
+function Bladeburner(params={}) {
+ this.numHosp = 0; //Number of hospitalizations
+ this.moneyLost = 0; //Money lost due to hospitalizations
+ this.rank = 0;
+ this.maxRank = 0; //Used to determine skill points
+
+ this.skillPoints = 0;
+ this.totalSkillPoints = 0;
+
+ this.teamSize = 0; //Number of team members
+ this.teamLost = 0; //Number of team members lost
+
+ this.storedCycles = 0;
+
+ this.randomEventCounter = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(240, 600); //4-10 minutes
+
+ //These times are in seconds
+ this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
+ this.actionTimeCurrent = 0;
+
+ //ActionIdentifier Object
+ var idleActionType = ActionTypes["Idle"];
+ this.action = new ActionIdentifier({type:idleActionType});
+
+ this.cities = {};
+ for (var i = 0; i < CityNames.length; ++i) {
+ this.cities[CityNames[i]] = new City({name:CityNames[i]});
+ }
+ this.city = _Locations__WEBPACK_IMPORTED_MODULE_8__["Locations"].Sector12;
+
+ //Map of SkillNames -> level
+ this.skills = {};
+ this.skillMultipliers = {};
+ this.updateSkillMultipliers(); //Calls resetSkillMultipliers()
+
+ //Max Stamina is based on stats and Bladeburner-specific bonuses
+ this.staminaBonus = 0; //Gained from training
+ this.maxStamina = 0;
+ this.calculateMaxStamina();
+ this.stamina = this.maxStamina;
+
+ //Contracts and Operations objects. These objects have unique
+ //properties because they are randomized in each instance and have stats like
+ //successes/failures, so they need to be saved/loaded by the game.
+ this.contracts = {};
+ this.operations = {};
+
+ //Object that contains name of all Black Operations that have been completed
+ this.blackops = {};
+
+ //Flags for whether these actions should be logged to console
+ this.logging = {
+ general:true,
+ contracts:true,
+ ops:true,
+ blackops:true,
+ events:true,
+ }
+
+ //Simple automation values
+ this.automateEnabled = false;
+ this.automateActionHigh = 0;
+ this.automateThreshHigh = 0; //Stamina Threshold
+ this.automateActionLow = 0;
+ this.automateThreshLow = 0; //Stamina Threshold
+
+ //Console command history
+ this.consoleHistory = [];
+ this.consoleLogs = [];
+
+ //Initialization
+ initBladeburner();
+ this.initializeDomElementRefs();
+ if (params.new) {this.create();}
+}
+
+Bladeburner.prototype.prestige = function() {
+ this.resetAction();
+ var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["Factions"]["Bladeburners"];
+ if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_7__[/* joinFaction */ "c"])(bladeburnerFac);
+ }
+}
+
+Bladeburner.prototype.create = function() {
+ this.contracts["Tracking"] = new Contract({
+ name:"Tracking",
+ desc:"Identify and locate Synthoids. This contract involves reconnaissance " +
+ "and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.
" +
+ "Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for " +
+ "whatever city you are currently in.",
+ baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
+ rankGain:0.3, hpLoss:0.5,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(25, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 75)/10,
+ 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
+ });
+ this.contracts["Bounty Hunter"] = new Contract({
+ name:"Bounty Hunter",
+ desc:"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.
" +
+ "Successfully completing a Bounty Hunter contract will lower the population in your " +
+ "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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 75)/10,
+ 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
+ });
+ this.contracts["Retirement"] = new Contract({
+ name:"Retirement",
+ desc:"Hunt down and retire (kill) rogue Synthoids.
" +
+ "Successfully copmleting a Retirement contract will lower the population in your current " +
+ "city, and will also increase its chaos level.",
+ baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
+ rankGain:0.6, hpLoss:1,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5,75)/10,
+ 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
+ });
+
+ this.operations["Investigation"] = new Operation({
+ name:"Investigation",
+ desc:"As a field agent, investigate and identify Synthoid " +
+ "populations, movements, and operations.
Successful " +
+ "Investigation ops will increase the accuracy of your " +
+ "synthoid data.
" +
+ "You will NOT lose HP from failed Investigation ops.",
+ baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
+ rankGain:2.2, rankLoss:0.2,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(10, 40)/10,
+ 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
+ });
+ this.operations["Undercover Operation"] = new Operation({
+ name:"Undercover Operation",
+ desc:"Conduct undercover operations to identify hidden " +
+ "and underground Synthoid communities and organizations.
" +
+ "Successful Undercover ops will increase the accuracy of your synthoid " +
+ "data.",
+ baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
+ rankGain:4.4, rankLoss:0.4, hpLoss:2,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(10, 40)/10,
+ 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
+ });
+ this.operations["Sting Operation"] = new Operation({
+ name:"Sting Operation",
+ desc:"Conduct a sting operation to bait and capture particularly " +
+ "notorious Synthoid criminals.",
+ baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
+ rankGain:5.5, rankLoss:0.5, hpLoss:2.5,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 300), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(3, 40)/10,
+ 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
+ });
+ this.operations["Raid"] = new Operation({
+ name:"Raid",
+ desc:"Lead an assault on a known Synthoid community. Note that " +
+ "there must be an existing Synthoid community in your current city " +
+ "in order for this Operation to be successful",
+ baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
+ rankGain:55,rankLoss:2.5,hpLoss:50,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 200), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(2, 40)/10,
+ 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
+ });
+ this.operations["Stealth Retirement Operation"] = new Operation({
+ name:"Stealth Retirement Operation",
+ desc:"Lead a covert operation to retire Synthoids. The " +
+ "objective is to complete the task without " +
+ "drawing any attention. Stealth and discretion are key.",
+ baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
+ rankGain:22, rankLoss:2, hpLoss:10,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 20)/10,
+ 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
+ });
+ this.operations["Assassination"] = new Operation({
+ name:"Assassination",
+ desc:"Assassinate Synthoids that have been identified as " +
+ "important, high-profile social and political leaders " +
+ "in the Synthoid communities.",
+ baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
+ rankGain:44, rankLoss:4, hpLoss:5,
+ count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 200), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 20)/10,
+ 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
+ });
+}
+
+Bladeburner.prototype.storeCycles = function(numCycles=1) {
+ this.storedCycles += numCycles;
+}
+
+Bladeburner.prototype.process = function() {
+ //Extreme condition...if Operation Daedalus is complete trigger the BitNode
+ if (_RedPill__WEBPACK_IMPORTED_MODULE_10__[/* redPillFlag */ "b"] === false && this.blackops.hasOwnProperty("Operation Daedalus")) {
+ return Object(_RedPill__WEBPACK_IMPORTED_MODULE_10__[/* hackWorldDaemon */ "a"])(_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bitNodeN);
+ }
+
+ //If the Player starts doing some other actions, set action to idle and alert
+ if (_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_1__["AugmentationNames"].BladesSimulacrum].owned === false && _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].isWorking) {
+ if (this.action.type !== ActionTypes["Idle"]) {
+ let msg = "Your Bladeburner action was cancelled because you started doing something else.";
+ if (this.automateEnabled) {
+ msg += `
Your automation was disabled as well. You will have to re-enable it through the Bladeburner console`
+ this.automateEnabled = false;
+ }
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])(msg);
+ }
+ this.resetAction();
+ }
+
+ // If the Player has no Stamina, set action to idle
+ if (this.stamina <= 0) {
+ this.log("Your Bladeburner action was cancelled because your stamina hit 0");
+ this.resetAction();
+ }
+
+ //A 'tick' for this mechanic is one second (= 5 game cycles)
+ if (this.storedCycles >= CyclesPerSecond) {
+ var seconds = Math.floor(this.storedCycles / CyclesPerSecond);
+ seconds = Math.min(seconds, 5); //Max of 5 'ticks'
+ this.storedCycles -= seconds * CyclesPerSecond;
+
+ //Stamina
+ this.calculateMaxStamina();
+ this.stamina += (this.calculateStaminaGainPerSecond() * seconds);
+ this.stamina = Math.min(this.maxStamina, this.stamina);
+
+ //Count increase for contracts/operations
+ for (var contractName in this.contracts) {
+ if (this.contracts.hasOwnProperty(contractName)) {
+ var contract = this.contracts[contractName];
+ contract.count += (seconds * contract.countGrowth/ActionCountGrowthPeriod);
+ }
+ }
+ for (var operationName in this.operations) {
+ if (this.operations.hasOwnProperty(operationName)) {
+ var op = this.operations[operationName];
+ op.count += (seconds * op.countGrowth/ActionCountGrowthPeriod);
+ }
+ }
+
+ //Chaos goes down very slowly
+ for (var i = 0; i < CityNames.length; ++i) {
+ var city = this.cities[CityNames[i]];
+ if (!(city instanceof City)) {throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");}
+ city.chaos -= (0.0001 * seconds);
+ city.chaos = Math.max(0, city.chaos);
+ }
+
+ //Random Events
+ this.randomEventCounter -= seconds;
+ if (this.randomEventCounter <= 0) {
+ this.randomEvent();
+ this.randomEventCounter = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(240, 600);
+ }
+
+ this.processAction(seconds);
+
+ //Automation
+ if (this.automateEnabled) {
+ // Note: Do NOT set this.action = this.automateActionHigh/Low since it creates a reference
+ if (this.stamina <= this.automateThreshLow) {
+ if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {
+ this.action = new ActionIdentifier({type: this.automateActionLow.type, name: this.automateActionLow.name});
+ this.startAction(this.action);
+ }
+ } else if (this.stamina >= this.automateThreshHigh) {
+ if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {
+ this.action = new ActionIdentifier({type: this.automateActionHigh.type, name: this.automateActionHigh.name});
+ this.startAction(this.action);
+ }
+ }
+ }
+
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner)) {
+ this.updateContent();
+ }
+ }
+}
+
+Bladeburner.prototype.calculateMaxStamina = function() {
+ var effAgility = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].agility * this.skillMultipliers.effAgi;
+ var maxStamina = (Math.pow(effAgility, 0.8) + this.staminaBonus);
+ maxStamina *= this.skillMultipliers.stamina;
+ maxStamina *= _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].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__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].agility * this.skillMultipliers.effAgi;
+ var maxStaminaBonus = this.maxStamina / MaxStaminaToGainFactor;
+ var gain = (StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17);
+ return gain * (this.skillMultipliers.stamina * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner_stamina_gain_mult);
+}
+
+Bladeburner.prototype.calculateStaminaPenalty = function() {
+ return Math.min(1, this.stamina / (0.5 * this.maxStamina));
+}
+
+Bladeburner.prototype.changeRank = function(change) {
+ if (isNaN(change)) {throw new Error("NaN passed into Bladeburner.changeRank()");}
+ this.rank += change;
+ if (this.rank < 0) {this.rank = 0;}
+ this.maxRank = Math.max(this.rank, this.maxRank);
+
+ var bladeburnersFactionName = "Bladeburners";
+ if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["factionExists"])(bladeburnersFactionName)) {
+ var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["Factions"][bladeburnersFactionName];
+ if (!(bladeburnerFac instanceof _Faction_Faction__WEBPACK_IMPORTED_MODULE_5__["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__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].faction_rep_mult * favorBonus);
+ }
+ }
+
+ //Gain skill points. You get 1 every 4 ranks
+ var rankNeededForSp = (this.totalSkillPoints+1) * RanksPerSkillPoint;
+ if (this.maxRank >= rankNeededForSp) {
+ //Calculate how many skill points to gain
+ var gainedSkillPoints = Math.floor((this.maxRank - rankNeededForSp) / RanksPerSkillPoint + 1);
+ this.skillPoints += gainedSkillPoints;
+ this.totalSkillPoints += gainedSkillPoints;
+ }
+}
+
+Bladeburner.prototype.getCurrentCity = function() {
+ var city = this.cities[this.city];
+ if (!(city instanceof City)) {
+ throw new Error("Bladeburner.getCurrentCity() did not properly return a City object");
+ }
+ return city;
+}
+
+Bladeburner.prototype.resetSkillMultipliers = function() {
+ this.skillMultipliers = {
+ successChanceAll:1,
+ successChanceStealth:1,
+ successChanceKill:1,
+ successChanceContract:1,
+ successChanceOperation:1,
+ successChanceEstimate:1,
+ actionTime:1,
+ effHack:1,
+ effStr:1,
+ effDef:1,
+ effDex:1,
+ effAgi:1,
+ effCha:1,
+ effInt:1,
+ stamina:1,
+ weaponAbility:1,
+ gunAbility:1,
+ };
+}
+
+Bladeburner.prototype.updateSkillMultipliers = function() {
+ this.resetSkillMultipliers();
+ for (var skillName in this.skills) {
+ if (this.skills.hasOwnProperty(skillName)) {
+ var skill = Skills[skillName];
+ if (skill == null) {
+ throw new Error("Could not find Skill Object for: " + skillName);
+ }
+ var level = this.skills[skillName];
+ if (level == null || level <= 0) {continue;} //Not upgraded
+
+ var multiplierNames = Object.keys(this.skillMultipliers);
+ for (var i = 0; i < multiplierNames.length; ++i) {
+ var multiplierName = multiplierNames[i];
+ if (skill[multiplierName] != null && !isNaN(skill[multiplierName])) {
+ var value = skill[multiplierName] * level;
+ var multiplierValue = 1 + (value / 100);
+ if (multiplierName === "actionTime") {
+ multiplierValue = 1 - (value / 100);
+ }
+ this.skillMultipliers[multiplierName] *= multiplierValue;
+ }
+ }
+ }
+ }
+}
+
+Bladeburner.prototype.upgradeSkill = function(skill) {
+ //This does NOT handle deduction of skill points
+ var skillName = skill.name;
+ if (this.skills[skillName]) {
+ ++this.skills[skillName];
+ } else {
+ this.skills[skillName] = 1;
+ }
+ if (isNaN(this.skills[skillName]) || this.skills[skillName] < 0) {
+ throw new Error("Level of Skill " + skillName + " is invalid: " + this.skills[skillName]);
+ }
+ this.updateSkillMultipliers();
+}
+
+Bladeburner.prototype.getActionObject = function(actionId) {
+ //Given an ActionIdentifier object, returns the corresponding
+ //GeneralAction, Contract, Operation, or BlackOperation object
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ return this.contracts[actionId.name];
+ case ActionTypes["Operation"]:
+ return this.operations[actionId.name];
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return BlackOperations[actionId.name];
+ case ActionTypes["Training"]:
+ return GeneralActions["Training"];
+ case ActionTypes["Field Analysis"]:
+ return GeneralActions["Field Analysis"];
+ case ActionTypes["Recruitment"]:
+ return GeneralActions["Recruitment"];
+ default:
+ return null;
+ }
+}
+
+//Sets the player to the "IDLE" action
+Bladeburner.prototype.resetAction = function() {
+ this.action = new ActionIdentifier({type:ActionTypes.Idle});
+}
+
+Bladeburner.prototype.startAction = function(actionId) {
+ if (actionId == null) {return;}
+ this.action = actionId;
+ this.actionTimeCurrent = 0;
+ switch (actionId.type) {
+ case ActionTypes["Idle"]:
+ this.actionTimeToComplete = 0;
+ break;
+ case ActionTypes["Contract"]:
+ try {
+ var action = this.getActionObject(actionId);
+ if (action == null) {
+ throw new Error("Failed to get Contract Object for: " + actionId.name);
+ }
+ if (action.count < 1) {return this.resetAction();}
+ this.actionTimeToComplete = action.getActionTime(this);
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+ break;
+ case ActionTypes["Operation"]:
+ try {
+ var action = this.getActionObject(actionId);
+ if (action == null) {
+ throw new Error ("Failed to get Operation Object for: " + actionId.name);
+ }
+ if (action.count < 1) {return this.resetAction();}
+ if (actionId.name === "Raid" && this.getCurrentCity().commsEst === 0) {return this.resetAction();}
+ this.actionTimeToComplete = action.getActionTime(this);
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+ break;
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ try {
+ // Safety measure - don't repeat BlackOps that are already done
+ if (this.blackops[actionId.name] != null) {
+ this.resetAction();
+ this.log("Error: Tried to start a Black Operation that had already been completed");
+ break;
+ }
+
+ var action = this.getActionObject(actionId);
+ if (action == null) {
+ throw new Error("Failed to get BlackOperation object for: " + actionId.name);
+ }
+ this.actionTimeToComplete = action.getActionTime(this);
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+ break;
+ case ActionTypes["Training"]:
+ this.actionTimeToComplete = 30;
+ break;
+ case ActionTypes["Recruitment"]:
+ this.actionTimeToComplete = this.getRecruitmentTime();
+ break;
+ case ActionTypes["FieldAnalysis"]:
+ case ActionTypes["Field Analysis"]:
+ this.actionTimeToComplete = 30;
+ break;
+ default:
+ throw new Error("Invalid Action Type in Bladeburner.startAction(): " + actionId.type);
+ break;
+ }
+}
+
+Bladeburner.prototype.processAction = function(seconds) {
+ if (this.action.type === ActionTypes["Idle"]) {return;}
+ if (this.actionTimeToComplete <= 0) {
+ console.log("action.type: " + this.action.type);
+ throw new Error("Invalid actionTimeToComplete value: " + this.actionTimeToComplete);
+ }
+ if (!(this.action instanceof ActionIdentifier)) {
+ throw new Error("Bladeburner.action is not an ActionIdentifier Object");
+ }
+
+ this.actionTimeCurrent += seconds;
+ if (this.actionTimeCurrent >= this.actionTimeToComplete) {
+ return this.completeAction();
+ }
+}
+
+Bladeburner.prototype.completeAction = function() {
+ switch (this.action.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ try {
+ var isOperation = (this.action.type === ActionTypes["Operation"]);
+ var action = this.getActionObject(this.action);
+ if (action == null) {
+ throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
+ }
+ var difficulty = action.getDifficulty();
+ var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
+ var rewardMultiplier = Math.pow(action.rewardFac, action.level-1);
+
+ //Stamina loss is based on difficulty
+ this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
+ if (this.stamina < 0) {this.stamina = 0;}
+
+ //Process Contract/Operation success/failure
+ if (action.attempt(this)) {
+ this.gainActionStats(action, true);
+ ++action.successes;
+ --action.count;
+
+ //Earn money for contracts
+ var moneyGain = 0;
+ if (!isOperation) {
+ moneyGain = ContractBaseMoneyGain * rewardMultiplier;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainMoney(moneyGain);
+ }
+
+ if (isOperation) {
+ action.setMaxLevel(OperationSuccessesPerLevel);
+ } else {
+ action.setMaxLevel(ContractSuccessesPerLevel);
+ }
+ if (action.rankGain) {
+ var gain = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(action.rankGain * rewardMultiplier * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"].BladeburnerRank, 10);
+ this.changeRank(gain);
+ if (isOperation && this.logging.ops) {
+ this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(gain, 3) + " rank");
+ } else if (!isOperation && this.logging.contracts) {
+ this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(gain, 3) + " rank and " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_11__["numeralWrapper"].format(moneyGain, "$0.000a"));
+ }
+ }
+ isOperation ? this.completeOperation(true) : this.completeContract(true);
+ } else {
+ this.gainActionStats(action, false);
+ ++action.failures;
+ var loss = 0, damage = 0;
+ if (action.rankLoss) {
+ loss = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(action.rankLoss * rewardMultiplier, 10);
+ this.changeRank(-1 * loss);
+ }
+ if (action.hpLoss) {
+ damage = action.hpLoss * difficultyMultiplier;
+ damage = Math.ceil(Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(damage, 10));
+ this.hpLost += damage;
+ if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].takeDamage(damage)) {
+ ++this.numHosp;
+ this.moneyLost += (_Constants__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].max_hp);
+ }
+ }
+ var logLossText = "";
+ if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(loss, 3) + " rank.";}
+ if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(damage, 0) + " damage.";}
+ if (isOperation && this.logging.ops) {
+ this.log(action.name + " failed! " + logLossText);
+ } else if (!isOperation && this.logging.contracts) {
+ this.log(action.name + " contract failed! " + logLossText);
+ }
+ isOperation ? this.completeOperation(false) : this.completeContract(false);
+ }
+ if (action.autoLevel) {action.level = action.maxLevel;} //Autolevel
+ this.startAction(this.action); //Repeat action
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+ break;
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ try {
+ var action = this.getActionObject(this.action);
+ if (action == null || !(action instanceof BlackOperation)) {
+ throw new Error("Failed to get BlackOperation Object for: " + this.action.name);
+ }
+ var difficulty = action.getDifficulty();
+ var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
+
+ //Stamina loss is based on difficulty
+ this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
+ if (this.stamina < 0) {this.stamina = 0;}
+
+ //Team loss variables
+ var teamCount = action.teamCount, teamLossMax;
+
+ if (action.attempt(this)) {
+ this.gainActionStats(action, true);
+ action.count = 0;
+ this.blackops[action.name] = true;
+ var rankGain = 0;
+ if (action.rankGain) {
+ rankGain = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(action.rankGain * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"].BladeburnerRank, 10);
+ this.changeRank(rankGain);
+ }
+ teamLossMax = Math.ceil(teamCount/2);
+
+ //Operation Daedalus
+ if (action.name === "Operation Daedalus") {
+ this.resetAction();
+ return Object(_RedPill__WEBPACK_IMPORTED_MODULE_10__[/* hackWorldDaemon */ "a"])(_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bitNodeN);
+ }
+
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner)) {
+ this.createActionAndSkillsContent();
+ }
+
+ if (this.logging.blackops) {
+ this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(rankGain, 1) + " rank");
+ }
+ } else {
+ this.gainActionStats(action, false);
+ var rankLoss = 0, damage = 0;
+ if (action.rankLoss) {
+ rankLoss = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(action.rankLoss, 10);
+ this.changeRank(-1 * rankLoss);
+ }
+ if (action.hpLoss) {
+ damage = action.hpLoss * difficultyMultiplier;
+ damage = Math.ceil(Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_17__["addOffset"])(damage, 10));
+ if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].takeDamage(damage)) {
+ ++this.numHosp;
+ this.moneyLost += (_Constants__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].max_hp);
+ }
+ }
+ teamLossMax = Math.floor(teamCount);
+
+ if (this.logging.blackops) {
+ this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(rankLoss, 1) + " rank and took " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(damage, 0) + " damage");
+ }
+ }
+
+ this.resetAction(); //Stop regardless of success or fail
+
+ //Calculate team lossses
+ if (teamCount >= 1) {
+ var losses = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, teamLossMax);
+ this.teamSize -= losses;
+ this.teamLost += losses;
+ if (this.logging.blackops) {
+ this.log("You lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(losses, 0) + " team members during " + action.name);
+ }
+ }
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+ break;
+ case ActionTypes["Training"]:
+ this.stamina -= (0.5 * BaseStaminaLoss);
+ var strExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].strength_exp_mult,
+ defExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].defense_exp_mult,
+ dexExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].dexterity_exp_mult,
+ agiExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].agility_exp_mult,
+ staminaGain = 0.04 * this.skillMultipliers.stamina;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainStrengthExp(strExpGain);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainDefenseExp(defExpGain);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainDexterityExp(dexExpGain);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainAgilityExp(agiExpGain);
+ this.staminaBonus += (staminaGain);
+ if (this.logging.general) {
+ this.log("Training completed. Gained: " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(strExpGain, 1) + " str exp, " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(defExpGain, 1) + " def exp, " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(dexExpGain, 1) + " dex exp, " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(agiExpGain, 1) + " agi exp, " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["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__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].hacking_skill, 0.3) +
+ 0.04 * Math.pow(_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].intelligence, 0.9) +
+ 0.02 * Math.pow(_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].charisma, 0.3);
+ eff *= _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bladeburner_analysis_mult;
+ if (isNaN(eff) || eff < 0) {
+ throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");
+ }
+ var hackingExpGain = 20 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].hacking_exp_mult,
+ charismaExpGain = 20 * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].charisma_exp_mult;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainHackingExp(hackingExpGain);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainIntelligenceExp(BaseIntGain);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainCharismaExp(charismaExpGain);
+ this.changeRank(0.1 * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"].BladeburnerRank);
+ this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate);
+ if (this.logging.general) {
+ this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(charismaExpGain, 1) + " charisma exp");
+ }
+ this.startAction(this.action); //Repeat action
+ break;
+ case ActionTypes["Recruitment"]:
+ var successChance = this.getRecruitmentSuccessChance();
+ console.log("Bladeburner recruitment success chance: " + successChance);
+ if (Math.random() < successChance) {
+ var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainCharismaExp(expGain);
+ ++this.teamSize;
+ if (this.logging.general) {
+ this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(expGain, 1) + " charisma exp");
+ }
+ } else {
+ var expGain = BaseStatGain * this.actionTimeToComplete;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainCharismaExp(expGain);
+ if (this.logging.general) {
+ this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(expGain, 1) + " charisma exp");
+ }
+ }
+ this.startAction(this.action); //Repeat action
+ break;
+ default:
+ break;
+ }
+}
+
+Bladeburner.prototype.completeContract = function(success) {
+ if (this.action.type !== ActionTypes.Contract) {
+ throw new Error("completeContract() called even though current action is not a Contract");
+ }
+ var city = this.getCurrentCity();
+ if (success) {
+ switch (this.action.name) {
+ case "Tracking":
+ //Increase estimate accuracy by a relatively small amount
+ city.improvePopulationEstimateByCount(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(100, 1e3));
+ break;
+ case "Bounty Hunter":
+ city.changePopulationByCount(-1, {estChange:-1});
+ city.changeChaosByCount(0.02);
+ break;
+ case "Retirement":
+ city.changePopulationByCount(-1, {estChange:-1});
+ city.changeChaosByCount(0.04);
+ break;
+ default:
+ throw new Error("Invalid Action name in completeContract: " + this.action.name);
+ }
+ }
+}
+
+Bladeburner.prototype.completeOperation = function(success) {
+ if (this.action.type !== ActionTypes.Operation) {
+ throw new Error("completeOperation() called even though current action is not an Operation");
+ }
+ var action = this.getActionObject(this.action);
+ if (action == null) {
+ throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
+ }
+
+ //Calculate team losses
+ var teamCount = action.teamCount, max;
+ if (teamCount >= 1) {
+ if (success) {
+ max = Math.ceil(teamCount/2);
+ } else {
+ max = Math.floor(teamCount)
+ }
+ var losses = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(0, max);
+ this.teamSize -= losses;
+ this.teamLost += losses;
+ if (this.logging.ops && losses > 0) {
+ this.log("Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(losses, 0) + " team members during this " + action.name);
+ }
+ }
+
+ var city = this.getCurrentCity();
+ switch (action.name) {
+ case "Investigation":
+ if (success) {
+ city.improvePopulationEstimateByPercentage(0.4 * this.skillMultipliers.successChanceEstimate);
+ if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
+ city.improveCommunityEstimate(1);
+ }
+ } else {
+ this.triggerPotentialMigration(this.city, 0.1);
+ }
+ break;
+ case "Undercover Operation":
+ if (success) {
+ city.improvePopulationEstimateByPercentage(0.8 * this.skillMultipliers.successChanceEstimate);
+ if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
+ city.improveCommunityEstimate(1);
+ }
+ } else {
+ this.triggerPotentialMigration(this.city, 0.15);
+ }
+ break;
+ case "Sting Operation":
+ if (success) {
+ city.changePopulationByPercentage(-0.1, {changeEstEqually:true, nonZero:true});
+ }
+ city.changeChaosByCount(0.1);
+ break;
+ case "Raid":
+ if (success) {
+ city.changePopulationByPercentage(-1, {changeEstEqually:true, nonZero:true});
+ --city.comms;
+ --city.commsEst;
+ } else {
+ var change = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(-3, -1);
+ city.changePopulationByPercentage(change, {nonZero:true});
+ }
+ city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(1, 5));
+ break;
+ case "Stealth Retirement Operation":
+ if (success) {
+ city.changePopulationByPercentage(-0.5, {changeEstEqually:true,nonZero:true});
+ }
+ city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(-3, -1));
+ break;
+ case "Assassination":
+ if (success) {
+ city.changePopulationByCount(-1, {estChange:-1});
+ }
+ city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(-5, 5));
+ break;
+ default:
+ throw new Error("Invalid Action name in completeOperation: " + this.action.name);
+ }
+}
+
+Bladeburner.prototype.getRecruitmentTime = function() {
+ var effCharisma = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].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__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].charisma, 0.45) / (this.teamSize + 1);
+}
+
+//Process stat gains from Contracts, Operations, and Black Operations
+//@action(Action obj) - Derived action class
+//@success(bool) - Whether action was successful
+Bladeburner.prototype.gainActionStats = function(action, success) {
+ var difficulty = action.getDifficulty();
+
+ //Gain multiplier based on difficulty. If this changes then the
+ //same variable calculated in completeAction() needs to change too
+ var difficultyMult = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
+
+ var time = this.actionTimeToComplete;
+ var successMult = success ? 1 : 0.5;
+
+ var unweightedGain = time * BaseStatGain * successMult * difficultyMult;
+ var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult;
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainHackingExp(unweightedGain * action.weights.hack * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].hacking_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainStrengthExp(unweightedGain * action.weights.str * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].strength_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainDefenseExp(unweightedGain * action.weights.def * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].defense_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainDexterityExp(unweightedGain * action.weights.dex * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].dexterity_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainAgilityExp(unweightedGain * action.weights.agi * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].agility_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gainCharismaExp(unweightedGain * action.weights.cha * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].charisma_exp_mult);
+ _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(0, 5)];
+ while (destCityName === sourceCityName) {
+ destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(0, 5)];
+ }
+ var destCity = this.cities[destCityName];
+
+ if (!(sourceCity instanceof City) || !(destCity instanceof City)) {
+ throw new Error("sourceCity/destCity was not a City object in Bladeburner.randomEvent()");
+ }
+
+ if (chance <= 0.05) {
+ //New Synthoid Community, 5%
+ ++sourceCity.comms;
+ var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(10, 20) / 100;
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop += count;
+ if (this.logging.events) {
+ this.log("Intelligence indicates that a new Synthoid community was formed in a city");
+ }
+ } else if (chance <= 0.1) {
+ //Synthoid Community Migration, 5%
+ if (sourceCity.comms <= 0) {
+ //If no comms in source city, then instead trigger a new Synthoid community event
+ ++sourceCity.comms;
+ var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(10, 20) / 100;
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop += count;
+ if (this.logging.events) {
+ this.log("Intelligence indicates that a new Synthoid community was formed in a city");
+ }
+ } else {
+ --sourceCity.comms;
+ ++destCity.comms;
+
+ //Change pop
+ var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(10, 20) / 100;
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop -= count;
+ destCity.pop += count;
+
+ if (this.logging.events) {
+ this.log("Intelligence indicates that a Synthoid community migrated from " + sourceCityName + " to some other city");
+ }
+ }
+ } else if (chance <= 0.3) {
+ //New Synthoids (non community), 20%
+ var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(8, 24) / 100;
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop += count;
+ if (this.logging.events) {
+ this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
+ }
+ } else if (chance <= 0.5) {
+ //Synthoid migration (non community) 20%
+ this.triggerMigration(sourceCityName);
+ if (this.logging.events) {
+ this.log("Intelligence indicates that a large number of Synthoids migrated from " + sourceCityName + " to some other city");
+ }
+ } else if (chance <= 0.7) {
+ //Synthoid Riots (+chaos), 20%
+ sourceCity.chaos += 1;
+ sourceCity.chaos *= (1 + Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(5, 20) / 100;
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop -= count;
+ if (this.logging.events) {
+ this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
+ }
+ }
+ //20% chance of nothing happening
+}
+
+Bladeburner.prototype.triggerPotentialMigration = function(sourceCityName, chance) {
+ if (chance == null || isNaN(chance)) {
+ console.log("ERROR: Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()");
+ }
+ if (chance > 1) {chance /= 100;}
+ if (Math.random() < chance) {this.triggerMigration(sourceCityName);}
+}
+
+Bladeburner.prototype.triggerMigration = function(sourceCityName) {
+ var destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(0, 5)];
+ while (destCityName === sourceCityName) {
+ destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(3, 15) / 100;
+
+ if (rand < 0.05 && sourceCity.comms > 0) { //5% chance for community migration
+ percentage *= Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_25__["getRandomInt"])(2, 4); //Migration increases population change
+ --sourceCity.comms;
+ ++destCity.comms;
+ }
+ var count = Math.round(sourceCity.pop * percentage);
+ sourceCity.pop -= count;
+ destCity.pop += count;
+}
+
+var DomElems = {};
+
+Bladeburner.prototype.initializeDomElementRefs = function() {
+ DomElems = {
+ bladeburnerDiv: null,
+
+ //Main Divs
+ overviewConsoleParentDiv: null,
+
+ overviewDiv: null, //Overview of stats that stays fixed on left
+ actionAndSkillsDiv: null, //Panel for different sections (contracts, ops, skills)
+ currentTab: null, //Contracts, Operations, Black Ops, Skills
+
+ consoleDiv: null,
+ consoleTable: null,
+ consoleInputRow: null, //tr
+ consoleInputCell: null, //td
+ consoleInputHeader: null, //"> "
+ consoleInput: null, //Actual input element
+
+ //Overview Content
+ overviewRank: null,
+ overviewStamina: null,
+ overviewStaminaHelpTip: null,
+ overviewGen1: null, //Stamina Penalty, Team, Hospitalized stats, current city
+ overviewEstPop: null,
+ overviewEstPopHelpTip: null,
+ overviewEstComms: null,
+ overviewChaos: null,
+ overviewSkillPoints: null,
+ overviewBonusTime: null,
+ overviewAugSuccessMult: null,
+ overviewAugMaxStaminaMult: null,
+ overviewAugStaminaGainMult: null,
+ overviewAugAnalysisMult: null,
+
+ //Actions and Skills Content
+ actionsAndSkillsDesc: null,
+ actionsAndSkillsList: null, //ul element of all UI elements in this panel
+ generalActions: {},
+ contracts: {},
+ operations: {},
+ blackops: {},
+ skills: {},
+ skillPointsDisplay: null,
+ };
+}
+
+Bladeburner.prototype.createContent = function() {
+ DomElems.bladeburnerDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ id:"bladeburner-container", position:"fixed", class:"generic-menupage-container",
+ });
+
+ //Parent Div for Overview and Console
+ DomElems.overviewConsoleParentDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ height:"60%", display:"block", position:"relative",
+ });
+
+ //Overview and Action/Skill pane
+ DomElems.overviewDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ width:"30%", display:"inline-block", border:"1px solid white",
+ });
+
+ DomElems.actionAndSkillsDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ height:"60%", width:"70%", display:"block",
+ border:"1px solid white", margin:"6px", padding:"6px",
+ });
+
+ DomElems.currentTab = "general";
+
+ this.createOverviewContent();
+ this.createActionAndSkillsContent();
+
+ //Console
+ DomElems.consoleDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-console-div",
+ clickListener:()=>{
+ if (DomElems.consoleInput instanceof Element) {
+ DomElems.consoleInput.focus();
+ }
+ return false;
+ }
+ });
+ DomElems.consoleTable = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("table", {class:"bladeburner-console-table"});
+ DomElems.consoleInputRow = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"});
+ DomElems.consoleInputCell = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("td", {class:"bladeburner-console-input-cell"});
+ DomElems.consoleInputHeader = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("pre", {innerText:"> "});
+ DomElems.consoleInput = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("input", {
+ type:"text", class:"bladeburner-console-input", tabIndex:1,
+ onfocus:()=>{DomElems.consoleInput.value = DomElems.consoleInput.value}
+ });
+
+ DomElems.consoleInputCell.appendChild(DomElems.consoleInputHeader);
+ DomElems.consoleInputCell.appendChild(DomElems.consoleInput);
+ DomElems.consoleInputRow.appendChild(DomElems.consoleInputCell);
+ DomElems.consoleTable.appendChild(DomElems.consoleInputRow);
+ DomElems.consoleDiv.appendChild(DomElems.consoleTable);
+
+ DomElems.overviewConsoleParentDiv.appendChild(DomElems.overviewDiv);
+ DomElems.overviewConsoleParentDiv.appendChild(DomElems.consoleDiv);
+ DomElems.bladeburnerDiv.appendChild(DomElems.overviewConsoleParentDiv);
+ DomElems.bladeburnerDiv.appendChild(DomElems.actionAndSkillsDiv);
+
+ document.getElementById("entire-game-container").appendChild(DomElems.bladeburnerDiv);
+
+ if (this.consoleLogs.length === 0) {
+ this.postToConsole("Bladeburner Console BETA");
+ this.postToConsole("Type 'help' to see console commands");
+ } else {
+ for (let i = 0; i < this.consoleLogs.length; ++i) {
+ this.postToConsole(this.consoleLogs[i], false);
+ }
+ }
+
+ DomElems.consoleInput.focus();
+}
+
+Bladeburner.prototype.clearContent = function() {
+ if (DomElems.bladeburnerDiv instanceof Element) {
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(DomElems.bladeburnerDiv);
+ Object(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_27__["removeElement"])(DomElems.bladeburnerDiv);
+ }
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems);
+ this.initializeDomElementRefs();
+}
+
+Bladeburner.prototype.createOverviewContent = function() {
+ if (DomElems.overviewDiv == null) {
+ throw new Error("Bladeburner.createOverviewContent() called with DomElems.overviewDiv = null");
+ }
+
+ DomElems.overviewRank = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ innerText:"Rank: ",
+ display:"inline-block",
+ tooltip:"Your rank within the Bladeburner division",
+ });
+
+ DomElems.overviewStamina = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ display:"inline-block",
+ });
+
+ DomElems.overviewStaminaHelpTip = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"help-tip",
+ innerText:"?",
+ clickListener: ()=> {
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["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.
" +
+ "Once your " +
+ "stamina falls below 50% of its max value, it begins to negatively " +
+ "affect the success rate of your contracts/operations. This penalty " +
+ "is shown in the overview panel. If the penalty is 15%, then this means " +
+ "your success rate would be multipled by 85% (100 - 15).
" +
+ "Your max stamina and stamina gain rate can also be increased by " +
+ "training, or through skills and Augmentation upgrades.");
+ },
+ });
+
+ DomElems.overviewGen1 = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ display:"block",
+ });
+
+ DomElems.overviewEstPop = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ innerText:"?", class:"help-tip",
+ clickListener:()=>{
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["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.
" +
+ "Therefore, it is important that this Synthoid population estimate " +
+ "is accurate so that you have a better idea of your " +
+ "success rate for contracts/operations. Certain " +
+ "actions will increase the accuracy of your population " +
+ "estimate.
" +
+ "The Synthoid populations of cities can change due to your " +
+ "actions or random events. If random events occur, they will " +
+ "be logged in the Bladeburner Console.");
+ }
+ });
+
+ DomElems.overviewEstComms = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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.overviewBonusTime = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ innerText: "Bonus time: ",
+ display: "inline-block",
+ tooltip: "You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by browser). " +
+ "Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed."
+ });
+ DomElems.overviewSkillPoints = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {display:"block"});
+
+
+ DomElems.overviewAugSuccessMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugMaxStaminaMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugStaminaGainMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugAnalysisMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {display:"block"});
+
+
+ DomElems.overviewDiv.appendChild(DomElems.overviewRank);
+ Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["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_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ DomElems.overviewDiv.appendChild(DomElems.overviewEstComms);
+ Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ DomElems.overviewDiv.appendChild(DomElems.overviewChaos);
+ Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["appendLineBreaks"])(DomElems.overviewDiv, 2);
+ DomElems.overviewDiv.appendChild(DomElems.overviewBonusTime);
+ DomElems.overviewDiv.appendChild(DomElems.overviewSkillPoints);
+ Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["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_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_18__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("a", { //Cancel Button
+ innerText:"Cancel", class:"a-link-button",
+ clickListener:()=>{
+ Object(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_28__["removeElementById"])(popupId); return false;
+ }
+ }))
+ popupArguments.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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 " +
+ "your location in the game otherwise",
+ }));
+ for (var i = 0; i < CityNames.length; ++i) {
+ (function(inst, i) {
+ popupArguments.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_28__["removeElementById"])(popupId);
+ inst.updateOverviewContent();
+ return false;
+ }
+ }));
+ })(this, i);
+ }
+ Object(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_21__["createPopup"])(popupId, popupArguments);
+ }
+ }));
+
+ //Faction button
+ const bladeburnersFactionName = "Bladeburners";
+ if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["factionExists"])(bladeburnersFactionName)) {
+ var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["Factions"][bladeburnersFactionName];
+ if (!(bladeburnerFac instanceof _Faction_Faction__WEBPACK_IMPORTED_MODULE_5__["Faction"])) {
+ throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
+ }
+ DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["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__WEBPACK_IMPORTED_MODULE_4__["Engine"].loadFactionContent();
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_7__[/* displayFactionContent */ "a"])(bladeburnersFactionName);
+ } else {
+ if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_7__[/* joinFaction */ "c"])(bladeburnerFac);
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction");
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(DomElems.overviewDiv);
+ this.createOverviewContent();
+ } else {
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!")
+ }
+ }
+ return false;
+ }
+ }));
+ }
+
+ DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("br"));
+ DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("br"));
+
+ this.updateOverviewContent();
+}
+
+Bladeburner.prototype.createActionAndSkillsContent = function() {
+ if (DomElems.currentTab == null) {DomElems.currentTab = "general";}
+
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv);
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems.generalActions);
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems.contracts);
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems.operations);
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems.blackops);
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_19__["clearObject"])(DomElems.skills);
+
+ //Navigation buttons
+ var currTab = DomElems.currentTab.toLowerCase();
+ var buttons = ["General", "Contracts", "Operations", "BlackOps", "Skills"];
+ for (var i = 0; i < buttons.length; ++i) {
+ (function(buttons, i, inst, currTab) {
+
+ DomElems.actionAndSkillsDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("a", {
+ innerText:buttons[i],
+ class:currTab === buttons[i].toLowerCase() ? "bladeburner-nav-button-inactive" : "bladeburner-nav-button",
+ clickListener:()=>{
+ DomElems.currentTab = buttons[i].toLowerCase();
+ inst.createActionAndSkillsContent();
+ return false;
+ }
+ }));
+ }) (buttons, i, this, currTab);
+ }
+
+ //General info/description for each action
+ DomElems.actionsAndSkillsDesc = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ display:"block", margin:"4px", padding:"4px"
+ });
+
+ //List for actions/skills
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList);
+ DomElems.actionsAndSkillsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("ul");
+
+ switch(currTab) {
+ case "general":
+ this.createGeneralActionsContent();
+ break;
+ case "contracts":
+ this.createContractsContent();
+ break;
+ case "operations":
+ this.createOperationsContent();
+ break;
+ case "blackops":
+ this.createBlackOpsContent();
+ break;
+ case "skills":
+ this.createSkillsContent();
+ break;
+ default:
+ throw new Error("Invalid value for DomElems.currentTab in Bladeburner.createActionAndSkillsContent");
+ }
+ this.updateContent();
+
+ DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsDesc);
+ DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsList);
+}
+
+Bladeburner.prototype.createGeneralActionsContent = function() {
+ if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
+ throw new Error("Bladeburner.createGeneralActionsContent called with either " +
+ "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
+ }
+
+ DomElems.actionsAndSkillsDesc.innerText =
+ "These are generic actions that will assist you in your Bladeburner " +
+ "duties. They will not affect your Bladeburner rank in any way."
+
+ for (var actionName in GeneralActions) {
+ if (GeneralActions.hasOwnProperty(actionName)) {
+ DomElems.generalActions[actionName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-action", name:actionName
+ });
+ DomElems.actionsAndSkillsList.appendChild(DomElems.generalActions[actionName]);
+ }
+ }
+}
+
+Bladeburner.prototype.createContractsContent = function() {
+ if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
+ throw new Error("Bladeburner.createContractsContent called with either " +
+ "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
+ }
+
+ DomElems.actionsAndSkillsDesc.innerHTML =
+ "Complete contracts in order to increase your Bladeburner rank and earn money. " +
+ "Failing a contract will cause you to lose HP, which can lead to hospitalization.
" +
+ "You can unlock higher-level contracts by successfully completing them. " +
+ "Higher-level contracts are more difficult, but grant more rank, experience, and money.";
+
+ for (var contractName in this.contracts) {
+ if (this.contracts.hasOwnProperty(contractName)) {
+ DomElems.contracts[contractName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-action", name:contractName
+ });
+ DomElems.actionsAndSkillsList.appendChild(DomElems.contracts[contractName]);
+ }
+ }
+}
+
+Bladeburner.prototype.createOperationsContent = function() {
+ if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
+ throw new Error("Bladeburner.createOperationsContent called with either " +
+ "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
+ }
+
+ DomElems.actionsAndSkillsDesc.innerHTML =
+ "Carry out operations for the Bladeburner division. " +
+ "Failing an operation will reduce your Bladeburner rank. It will also " +
+ "cause you to lose HP, which can lead to hospitalization. In general, " +
+ "operations are harder and more punishing than contracts, " +
+ "but are also more rewarding.
" +
+ "Operations can affect the chaos level and Synthoid population of your " +
+ "current city. The exact effects vary between different Operations.
" +
+ "For operations, you can use a team. You must first recruit team members. " +
+ "Having a larger team will improves your chances of success.
" +
+ "You can unlock higher-level operations by successfully completing them. " +
+ "Higher-level operations are more difficult, but grant more rank and experience.";
+
+ for (var operationName in this.operations) {
+ if (this.operations.hasOwnProperty(operationName)) {
+ DomElems.operations[operationName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-action", name:operationName
+ });
+ DomElems.actionsAndSkillsList.appendChild(DomElems.operations[operationName]);
+ }
+ }
+}
+
+Bladeburner.prototype.createBlackOpsContent = function() {
+ if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
+ throw new Error("Bladeburner.createBlackOpsContent called with either " +
+ "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
+ }
+
+ DomElems.actionsAndSkillsDesc.innerHTML =
+ "Black Operations (Black Ops) are special, one-time covert operations. " +
+ "Each Black Op must be unlocked successively by completing " +
+ "the one before it.
" +
+ "Your ultimate goal to climb through the ranks of Bladeburners is to complete " +
+ "all of the Black Ops.
" +
+ "Like normal operations, you may use a team for Black Ops. Failing " +
+ "a black op will incur heavy HP and rank losses.";
+
+ //Put Black Operations in sequence of required rank
+ var blackops = [];
+ for (var blackopName in BlackOperations) {
+ if (BlackOperations.hasOwnProperty(blackopName)) {
+ blackops.push(BlackOperations[blackopName]);
+ }
+ }
+ blackops.sort(function(a, b) {
+ return (a.reqdRank - b.reqdRank);
+ });
+
+ for (var i = 0; i < blackops.length; ++i) {
+ DomElems.blackops[blackops[i].name] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-action", name:blackops[i].name
+ });
+ DomElems.actionsAndSkillsList.appendChild(DomElems.blackops[blackops[i].name]);
+ if (this.blackops[[blackops[i].name]] == null) {break;} //Can't be found in completed blackops
+ }
+}
+
+Bladeburner.prototype.createSkillsContent = function() {
+ if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
+ throw new Error("Bladeburner.createSkillsContent called with either " +
+ "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
+ }
+
+ //Display Current multipliers
+ DomElems.actionsAndSkillsDesc.innerHTML =
+ "You will gain one skill point every " + RanksPerSkillPoint + " ranks.
" +
+ "Note that when upgrading a skill, the benefit for that skill is additive. " +
+ "However, the effects of different skills with each other is multiplicative.
"
+ var multKeys = Object.keys(this.skillMultipliers);
+ for (var i = 0; i < multKeys.length; ++i) {
+ var mult = this.skillMultipliers[multKeys[i]];
+ if (mult && mult !== 1) {
+ mult = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(mult, 3);
+ switch(multKeys[i]) {
+ case "successChanceAll":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Total Success Chance: x" + mult + " ";
+ break;
+ case "successChanceStealth":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Stealth Success Chance: x" + mult + " ";
+ break;
+ case "successChanceKill":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Retirement Success Chance: x" + mult + " ";
+ break;
+ case "successChanceContract":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Contract Success Chance: x" + mult + " ";
+ break;
+ case "successChanceOperation":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Operation Success Chance: x" + mult + " ";
+ break;
+ case "successChanceEstimate":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Synthoid Data Estimate: x" + mult + " ";
+ break;
+ case "actionTime":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Action Time: x" + mult + " ";
+ break;
+ case "effHack":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Hacking Skill: x" + mult + " ";
+ break;
+ case "effStr":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Strength: x" + mult + " ";
+ break;
+ case "effDef":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Defense: x" + mult + " ";
+ break;
+ case "effDex":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Dexterity: x" + mult + " ";
+ break;
+ case "effAgi":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Agility: x" + mult + " ";
+ break;
+ case "effCha":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Charisma: x" + mult + " ";
+ break;
+ case "effInt":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Intelligence: x" + mult + " ";
+ break;
+ case "stamina":
+ DomElems.actionsAndSkillsDesc.innerHTML += "Stamina: x" + mult + " ";
+ break;
+ case "weaponAbility":
+ //DomElems.actionsAndSkillsDesc.innerHTML +=
+ break;
+ case "gunAbility":
+ //DomElems.actionsAndSkillsDesc.innerHTML
+ break;
+ default:
+ console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
+ break;
+ }
+ }
+ }
+
+ //Skill Points
+ DomElems.skillPointsDisplay = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("p", {
+ innerHTML:" Skill Points: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_20__["createElement"])("div", {
+ class:"bladeburner-action", name:skillName
+ });
+ DomElems.actionsAndSkillsList.appendChild(DomElems.skills[skillName]);
+ }
+ }
+}
+
+Bladeburner.prototype.updateContent = function() {
+ this.updateOverviewContent();
+ this.updateActionAndSkillsContent();
+}
+
+Bladeburner.prototype.updateOverviewContent = function() {
+ if (!_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner)) {return;}
+ DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(this.rank, 2);
+ DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(this.maxStamina, 3);
+ DomElems.overviewGen1.innerHTML =
+ "Stamina Penalty: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%
');
+
+ if (DomElems.consoleTable.childNodes.length > MaxConsoleEntries) {
+ DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
+ }
+
+ this.updateConsoleScroll();
+}
+
+Bladeburner.prototype.updateConsoleScroll = function() {
+ DomElems.consoleDiv.scrollTop = DomElems.consoleDiv.scrollHeight;
+}
+
+Bladeburner.prototype.resetConsoleInput = function() {
+ DomElems.consoleInput.value = "";
+}
+
+Bladeburner.prototype.clearConsole = function() {
+ while (DomElems.consoleTable.childNodes.length > 1) {
+ DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
+ }
+
+ this.consoleLogs.length = 0;
+}
+
+Bladeburner.prototype.log = function(input) {
+ //Adds a timestamp and then just calls postToConsole
+ this.postToConsole(`[${Object(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_26__["getTimestamp"])()}] ${input}`);
+}
+
+//Handles a potential series of commands (comm1; comm2; comm3;)
+Bladeburner.prototype.executeConsoleCommands = function(commands) {
+ try {
+ //Console History
+ if (this.consoleHistory[this.consoleHistory.length-1] != commands) {
+ this.consoleHistory.push(commands);
+ if (this.consoleHistory.length > 50) {
+ this.consoleHistory.splice(0, 1);
+ }
+ }
+ consoleHistoryIndex = this.consoleHistory.length;
+
+ var arrayOfCommands = commands.split(";");
+ for (var i = 0; i < arrayOfCommands.length; ++i) {
+ this.executeConsoleCommand(arrayOfCommands[i]);
+ }
+ } catch(e) {
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_23__["exceptionAlert"])(e);
+ }
+}
+
+//A single command
+Bladeburner.prototype.executeConsoleCommand = function(command) {
+ command = command.trim();
+ command = command.replace(/\s\s+/g, ' '); //Replace all whitespace w/ a single space
+
+ var args = this.parseCommandArguments(command);
+ if (args.length <= 0) {return;} //Log an error?
+
+ switch(args[0].toLowerCase()) {
+ case "automate":
+ this.executeAutomateConsoleCommand(args);
+ break;
+ case "clear":
+ case "cls":
+ this.clearConsole();
+ break;
+ case "help":
+ this.executeHelpConsoleCommand(args);
+ break;
+ case "log":
+ this.executeLogConsoleCommand(args);
+ break;
+ case "skill":
+ this.executeSkillConsoleCommand(args);
+ break;
+ case "start":
+ this.executeStartConsoleCommand(args);
+ break;
+ case "stop":
+ this.resetAction();
+ break;
+ default:
+ this.postToConsole("Invalid console command");
+ break;
+ }
+}
+
+Bladeburner.prototype.parseCommandArguments = function(command) {
+ //Returns an array with command and its arguments in each index.
+ //e.g. skill "blade's intuition" foo returns [skill, blade's intuition, foo]
+ //The input to this fn will be trimmed and will have all whitespace replaced w/ a single space
+ var args = [];
+ var start = 0, i = 0;
+ while (i < command.length) {
+ var c = command.charAt(i);
+ if (c === '"') {
+ var endQuote = command.indexOf('"', i+1);
+ if (endQuote !== -1 && (endQuote === command.length-1 || command.charAt(endQuote+1) === " ")) {
+ args.push(command.substr(i+1, (endQuote - i - 1)));
+ if (endQuote === command.length-1) {
+ start = i = endQuote+1;
+ } else {
+ start = i = endQuote+2; //Skip the space
+ }
+ continue;
+ }
+ } else if (c === " ") {
+ args.push(command.substr(start, i-start));
+ start = i+1;
+ }
+ ++i;
+ }
+ if (start !== i) {args.push(command.substr(start, i-start));}
+ console.log("Bladeburner.parseCommandArguments returned: " + args);
+ return args;
+}
+
+Bladeburner.prototype.executeAutomateConsoleCommand = function(args) {
+ if (args.length !== 2 && args.length !== 4) {
+ this.postToConsole("Invalid use of 'automate' command: automate [var] [val] [hi/low]. Use 'help automate' for more info");
+ return;
+ }
+
+ //Enable/Disable
+ if (args.length === 2) {
+ var flag = args[1];
+ if (flag.toLowerCase() === "status") {
+ this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled"));
+ if (this.automateEnabled) {
+ this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(this.automateThreshLow, 0) +
+ ", you will automatically switch to " + this.automateActionLow.name +
+ ". When your stamina recovers to " +
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " +
+ "switch to " + this.automateActionHigh.name + ".");
+ }
+
+ } else if (flag.toLowerCase().includes("en")) {
+ if (!(this.automateActionLow instanceof ActionIdentifier) ||
+ !(this.automateActionHigh instanceof ActionIdentifier)) {
+ return this.log("Failed to enable automation. Actions were not set");
+ }
+ this.automateEnabled = true;
+ this.log("Bladeburner automation enabled");
+ } else if (flag.toLowerCase().includes("d")) {
+ this.automateEnabled = false;
+ this.log("Bladeburner automation disabled");
+ } else {
+ this.log("Invalid argument for 'automate' console command: " + args[1]);
+ }
+ return;
+ }
+
+ //Set variables
+ if (args.length === 4) {
+ var variable = args[1], val = args[2];
+
+ var highLow = false; //True for high, false for low
+ if (args[3].toLowerCase().includes("hi")) {highLow = true;}
+
+ switch (variable) {
+ case "general":
+ case "gen":
+ if (GeneralActions[val] != null) {
+ var action = new ActionIdentifier({
+ type:ActionTypes[val], name:val
+ });
+ if (highLow) {
+ this.automateActionHigh = action;
+ } else {
+ this.automateActionLow = action;
+ }
+ this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
+ } else {
+ this.postToConsole("Invalid action name specified: " + val);
+ }
+ break;
+ case "contract":
+ case "contracts":
+ if (this.contracts[val] != null) {
+ var action = new ActionIdentifier({
+ type:ActionTypes.Contract, name:val
+ });
+ if (highLow) {
+ this.automateActionHigh = action;
+ } else {
+ this.automateActionLow = action;
+ }
+ this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
+ } else {
+ this.postToConsole("Invalid contract name specified: " + val);
+ }
+ break;
+ case "ops":
+ case "op":
+ case "operations":
+ case "operation":
+ if (this.operations[val] != null) {
+ var action = new ActionIdentifier({
+ type:ActionTypes.Operation, name:val
+ });
+ if (highLow) {
+ this.automateActionHigh = action;
+ } else {
+ this.automateActionLow = action;
+ }
+ this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
+ } else {
+ this.postToConsole("Invalid Operation name specified: " + val);
+ }
+ break;
+ case "stamina":
+ if (isNaN(val)) {
+ this.postToConsole("Invalid value specified for stamina threshold (must be numeric): " + val);
+ } else {
+ if (highLow) {
+ this.automateThreshHigh = Number(val);
+ } else {
+ this.automateThreshLow = Number(val);
+ }
+ this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") stamina threshold set to " + val);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return;
+ }
+}
+
+Bladeburner.prototype.executeHelpConsoleCommand = function(args) {
+ if (args.length === 1) {
+ this.postToConsole(consoleHelpText.helpList);
+ } else {
+ for (var i = 1; i < args.length; ++i) {
+ var commandText = consoleHelpText[args[i]];
+ if (commandText != null) {
+ this.postToConsole(commandText);
+ this.postToConsole(" ");
+ }
+ }
+ }
+}
+
+Bladeburner.prototype.executeLogConsoleCommand = function(args) {
+ if (args.length < 3) {
+ this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]");
+ this.postToConsole("Use 'help log' for more details and examples");
+ return;
+ }
+
+ var flag = true;
+ if (args[1].toLowerCase().includes("d")) {flag = false;} //d for disable
+
+ switch (args[2].toLowerCase()) {
+ case "general":
+ case "gen":
+ this.logging.general = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for general actions");
+ break;
+ case "contract":
+ case "contracts":
+ this.logging.contracts = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for Contracts");
+ break;
+ case "ops":
+ case "op":
+ case "operations":
+ case "operation":
+ this.logging.ops = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for Operations");
+ break;
+ case "blackops":
+ case "blackop":
+ case "black operations":
+ case "black operation":
+ this.logging.blackops = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for BlackOps");
+ break;
+ case "event":
+ case "events":
+ this.logging.events = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for events");
+ break;
+ case "all":
+ this.logging.general = flag;
+ this.logging.contracts = flag;
+ this.logging.ops = flag;
+ this.logging.blackops = flag;
+ this.logging.events = flag;
+ this.log("Logging " + (flag ? "enabled" : "disabled") + " for everything");
+ break;
+ default:
+ this.postToConsole("Invalid action/event type specified: " + args[2]);
+ this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]");
+ break;
+ }
+}
+
+Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
+ switch (args.length) {
+ case 1:
+ //Display Skill Help Command
+ this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
+ this.postToConsole("Use 'help skill' for more info");
+ break;
+ case 2:
+ if (args[1].toLowerCase() === "list") {
+ //List all skills and their level
+ this.postToConsole("Skills: ");
+ var skillNames = Object.keys(Skills);
+ for(var i = 0; i < skillNames.length; ++i) {
+ 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__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(level, 0));
+ }
+ this.postToConsole(" ");
+ this.postToConsole("Effects: ");
+ var multKeys = Object.keys(this.skillMultipliers);
+ for (var i = 0; i < multKeys.length; ++i) {
+ var mult = this.skillMultipliers[multKeys[i]];
+ if (mult && mult !== 1) {
+ mult = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(mult, 3);
+ switch(multKeys[i]) {
+ case "successChanceAll":
+ this.postToConsole("Total Success Chance: x" + mult);
+ break;
+ case "successChanceStealth":
+ this.postToConsole("Stealth Success Chance: x" + mult);
+ break;
+ case "successChanceKill":
+ this.postToConsole("Retirement Success Chance: x" + mult);
+ break;
+ case "successChanceContract":
+ this.postToConsole("Contract Success Chance: x" + mult);
+ break;
+ case "successChanceOperation":
+ this.postToConsole("Operation Success Chance: x" + mult);
+ break;
+ case "successChanceEstimate":
+ this.postToConsole("Synthoid Data Estimate: x" + mult);
+ break;
+ case "actionTime":
+ this.postToConsole("Action Time: x" + mult);
+ break;
+ case "effHack":
+ this.postToConsole("Hacking Skill: x" + mult);
+ break;
+ case "effStr":
+ this.postToConsole("Strength: x" + mult);
+ break;
+ case "effDef":
+ this.postToConsole("Defense: x" + mult);
+ break;
+ case "effDex":
+ this.postToConsole("Dexterity: x" + mult);
+ break;
+ case "effAgi":
+ this.postToConsole("Agility: x" + mult);
+ break;
+ case "effCha":
+ this.postToConsole("Charisma: x" + mult);
+ break;
+ case "effInt":
+ this.postToConsole("Intelligence: x" + mult);
+ break;
+ case "stamina":
+ this.postToConsole("Stamina: x" + mult);
+ break;
+ case "weaponAbility":
+ //DomElems.actionsAndSkillsDesc.innerHTML +=
+ break;
+ case "gunAbility":
+ //DomElems.actionsAndSkillsDesc.innerHTML
+ break;
+ default:
+ console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
+ break;
+ }
+ }
+ }
+ } else {
+ this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
+ this.postToConsole("Use 'help skill' for more info");
+ }
+ break;
+ case 3:
+ var skillName = args[2];
+ var skill = Skills[skillName];
+ if (skill == null || !(skill instanceof Skill)) {
+ 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__WEBPACK_IMPORTED_MODULE_24__["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.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__WEBPACK_IMPORTED_MODULE_24__["formatNumber"])(pointCost, 0));
+ }
+
+ } else {
+ this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
+ this.postToConsole("Use 'help skill' for more info");
+ }
+ break;
+ default:
+ this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
+ this.postToConsole("Use 'help skill' for more info");
+ break;
+ }
+}
+
+Bladeburner.prototype.executeStartConsoleCommand = function(args) {
+ if (args.length !== 3) {
+ this.postToConsole("Invalid usage of 'start' console command: start [type] [name]");
+ this.postToConsole("Use 'help start' for more info");
+ return;
+ }
+ var name = args[2];
+ switch (args[1].toLowerCase()) {
+ case "general":
+ case "gen":
+ if (GeneralActions[name] != null) {
+ this.action.type = ActionTypes[name];
+ this.action.name = name;
+ this.startAction(this.action);
+ this.updateActionAndSkillsContent();
+ } else {
+ this.postToConsole("Invalid action name specified: " + args[2]);
+ }
+ break;
+ case "contract":
+ case "contracts":
+ if (this.contracts[name] != null) {
+ this.action.type = ActionTypes.Contract;
+ this.action.name = name;
+ this.startAction(this.action);
+ this.updateActionAndSkillsContent();
+ } else {
+ this.postToConsole("Invalid contract name specified: " + args[2]);
+ }
+ break;
+ case "ops":
+ case "op":
+ case "operations":
+ case "operation":
+ if (this.operations[name] != null) {
+ this.action.type = ActionTypes.Operation;
+ this.action.name = name;
+ this.startAction(this.action);
+ this.updateActionAndSkillsContent();
+ } else {
+ this.postToConsole("Invalid Operation name specified: " + args[2]);
+ }
+ break;
+ case "blackops":
+ case "blackop":
+ case "black operations":
+ case "black operation":
+ if (BlackOperations[name] != null) {
+ this.action.type = ActionTypes.BlackOperation;
+ this.action.name = name;
+ this.startAction(this.action);
+ this.updateActionAndSkillsContent();
+ } else {
+ this.postToConsole("Invalid BlackOp name specified: " + args[2]);
+ }
+ break;
+ default:
+ this.postToConsole("Invalid action/event type specified: " + args[1]);
+ this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]");
+ break;
+ }
+}
+
+Bladeburner.prototype.getActionIdFromTypeAndName = function(type="", name="") {
+ if (type === "" || name === "") {return null;}
+ var action = new ActionIdentifier();
+ var convertedType = type.toLowerCase().trim();
+ var convertedName = name.toLowerCase().trim();
+ switch (convertedType) {
+ case "contract":
+ case "contracts":
+ case "contr":
+ action.type = ActionTypes["Contract"];
+ if (this.contracts.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ break;
+ case "operation":
+ case "operations":
+ case "op":
+ case "ops":
+ action.type = ActionTypes["Operation"];
+ if (this.operations.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ break;
+ case "blackoperation":
+ case "black operation":
+ case "black operations":
+ case "black op":
+ case "black ops":
+ case "blackop":
+ case "blackops":
+ action.type = ActionTypes["BlackOp"];
+ if (BlackOperations.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ break;
+ case "general":
+ case "general action":
+ case "gen":
+ break;
+ default:
+ return null;
+ }
+
+ if (convertedType.startsWith("gen")) {
+ switch (convertedName) {
+ case "training":
+ action.type = ActionTypes["Training"];
+ action.name = "Training";
+ break;
+ case "recruitment":
+ case "recruit":
+ action.type = ActionTypes["Recruitment"];
+ action.name = "Recruitment";
+ break;
+ case "field analysis":
+ case "fieldanalysis":
+ action.type = ActionTypes["Field Analysis"];
+ action.name = "Field Analysis";
+ break;
+ default:
+ return null;
+ }
+ return action;
+ }
+}
+
+Bladeburner.prototype.getTypeAndNameFromActionId = function(actionId) {
+ var res = {};
+ let types = Object.keys(ActionTypes);
+ for (let i = 0; i < types.length; ++i) {
+ if (actionId.type === ActionTypes[types[i]]) {
+ res.type = types[i];
+ break;
+ }
+ }
+ if (res.type == null) {res.type = "Idle";}
+
+ res.name = actionId.name != null ? actionId.name : "Idle";
+ return res;
+}
+
+Bladeburner.prototype.getContractNamesNetscriptFn = function() {
+ return Object.keys(this.contracts);
+}
+
+Bladeburner.prototype.getOperationNamesNetscriptFn = function() {
+ return Object.keys(this.operations);
+}
+
+Bladeburner.prototype.getBlackOpNamesNetscriptFn = function() {
+ return Object.keys(BlackOperations);
+}
+
+Bladeburner.prototype.getGeneralActionNamesNetscriptFn = function() {
+ return Object.keys(GeneralActions);
+}
+
+Bladeburner.prototype.getSkillNamesNetscriptFn = function() {
+ return Object.keys(Skills);
+}
+
+Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: bladeburner.startAction() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return false;
+ }
+
+ // Special logic for Black Ops
+ if (actionId.type === ActionTypes["BlackOp"]) {
+ // Can't start a BlackOp if you don't have the required rank
+ let action = this.getActionObject(actionId);
+ if (action.reqdRank > this.rank) {
+ workerScript.log(`Failed to start Black Op ${actionId.name} due to insufficient rank`);
+ return false;
+ }
+
+ // Can't start a BlackOp if its already been done
+ if (this.blackops[actionId.name] != null) {
+ workerScript.log(`Failed to start Black Op ${actionId.name} because its already been completed`);
+ return false;
+ }
+
+ // Can't start a BlackOp if you haven't done the one before it
+ var blackops = [];
+ for (const nm in BlackOperations) {
+ if (BlackOperations.hasOwnProperty(nm)) {
+ blackops.push(nm);
+ }
+ }
+ blackops.sort(function(a, b) {
+ return (BlackOperations[a].reqdRank - BlackOperations[b].reqdRank); // Sort black ops in intended order
+ });
+
+ let i = blackops.indexOf(actionId.name);
+ if (i === -1) {
+ workerScript.log("ERROR: Invalid Black Operation name passed into bladeburner.startAction(). Note that this name is case-sensitive & whitespace-sensitive");
+ return false;
+ }
+
+ if (i > 0 && this.blackops[blackops[i-1]] == null) {
+ workerScript.log(`ERROR: Cannot attempt Black Operation ${actionId.name} because you have not done the preceding one`);
+ return false;
+ }
+ }
+
+ try {
+ this.startAction(actionId);
+ if (workerScript.shouldLog("startAction")) {
+ workerScript.scriptRef.log("Starting bladeburner action with type " + type + " and name " + name);
+ }
+ return true;
+ } catch(e) {
+ this.resetAction();
+ workerScript.scriptRef.log("ERROR: bladeburner.startAction() failed to start action of type " + type + " due to invalid name: " + name +
+ "Note that this name is case-sensitive and whitespace-sensitive");
+ return false;
+ }
+}
+
+Bladeburner.prototype.getActionTimeNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: bladeburner.getActionTime() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return actionObj.getActionTime(this);
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return 30;
+ case ActionTypes["Recruitment"]:
+ return this.getRecruitmentTime();
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getActionEstimatedSuccessChanceNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: bladeburner.getActionEstimatedSuccessChance() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return actionObj.getSuccessChance(this, {est:true});
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return 1;
+ case ActionTypes["Recruitment"]:
+ return this.getRecruitmentSuccessChance();
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getActionCountRemainingNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: bladeburner.getActionCountRemaining() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ return Math.floor( actionObj.count );
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ if (this.blackops[name] != null) {
+ return 0;
+ } else {
+ return 1;
+ }
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return Infinity;
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getSkillLevelNetscriptFn = function(skillName, workerScript) {
+ var errorLogText = "ERROR: bladeburner.getSkillLevel() failed due to an invalid skill specified: " +
+ skillName + ". Note that the name of the skill is case-sensitive";
+
+ if (skillName === "") {
+ return -1;
+ }
+
+ if (!Skills.hasOwnProperty(skillName)) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ if (this.skills[skillName] == null) {
+ return 0;
+ } else {
+ return this.skills[skillName];
+ }
+}
+
+Bladeburner.prototype.getSkillUpgradeCostNetscriptFn = function(skillName, workerScript) {
+ var errorLogText = "ERROR: bladeburner.getSkillUpgradeCostNetscriptFn() failed due to an invalid skill specified: " +
+ skillName + ". Note that the name of the skill is case-sensitive";
+
+ if (skillName === "") {
+ return -1;
+ }
+
+ if (!Skills.hasOwnProperty(skillName)) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var skill = Skills[skillName];
+ if (this.skills[skillName] == null) {
+ return skill.calculateCost(0);
+ } else {
+ return skill.calculateCost(this.skills[skillName]);
+ }
+}
+
+Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript) {
+ var errorLogText = "ERROR: bladeburner.upgradeSkill() failed due to an invalid skill specified: " +
+ skillName + ". Note that the name of the skill is case-sensitive";
+ if (!Skills.hasOwnProperty(skillName)) {
+ workerScript.log(errorLogText);
+ return false;
+ }
+
+ var skill = Skills[skillName];
+ var currentLevel = 0;
+ if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
+ currentLevel = this.skills[skillName];
+ }
+ var cost = skill.calculateCost(currentLevel);
+
+ if(skill.maxLvl && currentLevel >= skill.maxLvl) {
+ if (workerScript.shouldLog("upgradeSkill")) {
+ workerScript.log(`bladeburner.upgradeSkill() failed because ${skillName} is already maxed`);
+ }
+ return false;
+ }
+
+ if (this.skillPoints < cost) {
+ if (workerScript.shouldLog("upgradeSkill")) {
+ workerScript.log("bladeburner.upgradeSkill() failed because you do not have enough " +
+ "skill points to upgrade " + skillName + " (You have " +
+ this.skillPoints + ", you need " + cost + ")");
+ }
+ return false;
+ }
+
+ this.skillPoints -= cost;
+ this.upgradeSkill(skill);
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner) && DomElems.currentTab.toLowerCase() === "skills") {
+ this.createActionAndSkillsContent();
+ }
+ if (workerScript.shouldLog("upgradeSkill")) {
+ workerScript.log(skillName + " successfully upgraded to level " + this.skills[skillName]);
+ }
+ return true;
+}
+
+Bladeburner.prototype.getTeamSizeNetscriptFn = function(type, name, workerScript) {
+ if (type === "" && name === "") {
+ return this.teamSize;
+ }
+
+ var errorLogText = "ERROR: bladeburner.getTeamSize() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ if (actionId.type === ActionTypes["Operation"] ||
+ actionId.type === ActionTypes["BlackOp"] ||
+ actionId.type === ActionTypes["BlackOperation"]) {
+ return actionObj.teamCount;
+ } else {
+ return 0;
+ }
+}
+
+Bladeburner.prototype.setTeamSizeNetscriptFn = function(type, name, size, workerScript) {
+ var errorLogText = "ERROR: bladeburner.setTeamSize() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ if (actionId.type !== ActionTypes["Operation"] &&
+ actionId.type !== ActionTypes["BlackOp"] &&
+ actionId.type !== ActionTypes["BlackOperation"]) {
+ workerScript.log("ERROR: bladeburner.setTeamSize() failed. This function " +
+ "only works for Operations and BlackOps");
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var sanitizedSize = Math.round(size);
+ if (isNaN(sanitizedSize)) {
+ workerScript.log("ERROR: bladeburner.setTeamSize() failed due to an invalid 'size' argument: " + size);
+ return -1;
+ }
+ if (this.teamSize < sanitizedSize) {sanitizedSize = this.teamSize;}
+ actionObj.teamCount = sanitizedSize;
+ if (workerScript.shouldLog("setTeamSize")) {
+ workerScript.log("Team size for " + name + " set to " + sanitizedSize);
+ }
+ return sanitizedSize;
+}
+
+Bladeburner.prototype.getCityEstimatedPopulationNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: bladeburner.getCityEstimatedPopulation() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].popEst;
+}
+
+Bladeburner.prototype.getCityEstimatedCommunitiesNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: bladeburner.getCityEstimatedCommunities() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].commsEst;
+}
+
+Bladeburner.prototype.getCityChaosNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: bladeburner.getCityChaos() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].chaos;
+}
+
+Bladeburner.prototype.switchCityNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: bladeburner.switchCity() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return false;
+ }
+ this.city = cityName;
+ return true;
+}
+
+Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) {
+ var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_6__["Factions"]["Bladeburners"];
+ if (bladeburnerFac.isMember) {
+ return true;
+ } else if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_7__[/* joinFaction */ "c"])(bladeburnerFac);
+ if (workerScript.shouldLog("joinBladeburnerFaction")) {
+ workerScript.log("Joined Bladeburners Faction");
+ }
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__["Page"].Bladeburner)) {
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_15__["removeChildrenFromElement"])(DomElems.overviewDiv);
+ this.createOverviewContent();
+ }
+ return true;
+ } else {
+ if (workerScript.shouldLog("joinBladeburnerFaction")) {
+ workerScript.log("Failed to join Bladeburners Faction because " +
+ "you do not have the required " + RankNeededForFaction + " rank");
+ }
+ return false;
+ }
+}
+
+Bladeburner.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_toJSON"])("Bladeburner", this);
+}
+Bladeburner.fromJSON = function(value) {
+ return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Generic_fromJSON"])(Bladeburner, value.data);
+}
+_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.Bladeburner = Bladeburner;
+
+//This initialized Bladeburner-related data that is NOT saved/loaded
+// eg: Skill Objects, BLack Operations
+//Any data that is saved/loaded should go in Bladeburner object
+// eg: contracts, operations
+function initBladeburner() {
+ //Skills
+ Skills[SkillNames.BladesIntuition] = new Skill({
+ name:SkillNames.BladesIntuition,
+ desc:"Each level of this skill increases your success chance " +
+ "for all Contracts, Operations, and BlackOps by 3%",
+ baseCost:5, costInc:2,
+ successChanceAll:3
+ });
+ Skills[SkillNames.Reaper] = new Skill({
+ name:SkillNames.Reaper,
+ desc:"Each level of this skill increases your " +
+ "effective combat stats for Bladeburner actions by 3%",
+ baseCost:3, costInc:2,
+ effStr:3, effDef:3, effDex:3, effAgi:3
+ });
+ Skills[SkillNames.Cloak] = new Skill({
+ name:SkillNames.Cloak,
+ desc:"Each level of this skill increases your " +
+ "success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",
+ baseCost:3, costInc:1,
+ successChanceStealth:5.5
+ });
+
+ //TODO Marksman
+ //TODO Weapon Proficiency
+
+ Skills[SkillNames.Overclock] = new Skill({
+ name:SkillNames.Overclock,
+ desc:"Each level of this skill decreases the time it takes " +
+ "to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
+ baseCost:5, costInc:1.1, maxLvl:95,
+ actionTime:1
+ });
+ Skills[SkillNames.EvasiveSystem] = new Skill({
+ name:SkillNames.EvasiveSystem,
+ desc:"Each level of this skill increases your effective " +
+ "dexterity and agility for Bladeburner actions by 5%",
+ baseCost:2, costInc: 1,
+ effDex:5, effAgi:5
+ });
+ Skills[SkillNames.ShortCircuit] = new Skill({
+ name:SkillNames.ShortCircuit,
+ desc:"Each level of this skill increases your success chance " +
+ "in Contracts, Operations, and BlackOps that involve retirement by 5.5%",
+ baseCost:3, costInc:2,
+ successChanceKill:5.5
+ });
+ Skills[SkillNames.DigitalObserver] = new Skill({
+ name:SkillNames.DigitalObserver,
+ desc:"Each level of this skill increases your success chance in " +
+ "all Operations and BlackOps by 4%",
+ baseCost:5, costInc:2,
+ successChanceOperation:4
+ });
+ Skills[SkillNames.Datamancer] = new Skill({
+ name:SkillNames.Datamancer,
+ desc:"Each level of this skill increases your effectiveness in " +
+ "synthoid population analysis and investigation by 5%. " +
+ "This affects all actions that can potentially increase " +
+ "the accuracy of your synthoid population/community estimates.",
+ baseCost:3,costInc:1,
+ successChanceEstimate:5
+ });
+ Skills[SkillNames.Tracer] = new Skill({
+ name:SkillNames.Tracer,
+ desc:"Each level of this skill increases your success chance in " +
+ "all Contracts by 4%",
+ baseCost:3, costInc:2,
+ successChanceContract:4
+ });
+ Skills[SkillNames.CybersEdge] = new Skill({
+ name:SkillNames.CybersEdge,
+ desc:"Each level of this skill increases your max " +
+ "stamina by 2%",
+ baseCost:1, costInc:3,
+ stamina:2
+ });
+
+ //General Actions
+ var actionName = "Training";
+ GeneralActions[actionName] = new Action({
+ name:actionName,
+ desc:"Improve your abilities at the Bladeburner unit's specialized training " +
+ "center. Doing this gives experience for all combat stats and also " +
+ "increases your max stamina."
+ });
+
+ var actionName = "Field Analysis";
+ GeneralActions[actionName] = new Action({
+ name:actionName,
+ desc:"Mine and analyze Synthoid-related data. This improve the " +
+ "Bladeburner's unit intelligence on Synthoid locations and " +
+ "activities. Completing this action will improve the accuracy " +
+ "of your Synthoid population estimated in the current city.
" +
+ "Does NOT require stamina."
+ });
+
+ var actionName = "Recruitment";
+ GeneralActions[actionName] = new Action({
+ name:actionName,
+ desc:"Attempt to recruit members for your Bladeburner team. These members " +
+ "can help you conduct operations.
" +
+ "Does NOT require stamina."
+ });
+
+ //Black Operations
+ BlackOperations["Operation Typhoon"] = new BlackOperation({
+ name:"Operation Typhoon",
+ desc:"Obadiah Zenyatta is the leader of a RedWater PMC. It has long " +
+ "been known among the intelligence community that Zenyatta, along " +
+ "with the rest of the PMC, is a Synthoid.
" +
+ "The goal of Operation Typhoon is to find and eliminate " +
+ "Zenyatta and RedWater by any means necessary. After the task " +
+ "is completed, the actions must be covered up from the general public.",
+ baseDifficulty:2000, reqdRank:2.5e3,
+ rankGain:50, rankLoss:10, hpLoss:100,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true
+ });
+ BlackOperations["Operation Zero"] = new BlackOperation({
+ name:"Operation Zero",
+ desc:"AeroCorp is one of the world's largest defense contractors. " +
+ "It's leader, Steve Watataki, is thought to be a supporter of " +
+ "Synthoid rights. He must be removed.
" +
+ "The goal of Operation Zero is to covertly infiltrate AeroCorp and " +
+ "uncover any incriminating evidence or " +
+ "information against Watataki that will cause him to be removed " +
+ "from his position at AeroCorp. Incriminating evidence can be " +
+ "fabricated as a last resort. Be warned that AeroCorp has some of " +
+ "the most advanced security measures in the world.",
+ baseDifficulty:2500, reqdRank:5e3,
+ rankGain:60, rankLoss:15, hpLoss:50,
+ weights:{hack:0.2,str:0.15,def:0.15,dex:0.2,agi:0.2,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.75},
+ isStealth:true
+ });
+ BlackOperations["Operation X"] = new BlackOperation({
+ name:"Operation X",
+ desc:"We have recently discovered an underground publication " +
+ "group called Samizdat. Even though most of their publications " +
+ "are nonsensical conspiracy theories, the average human is " +
+ "gullible enough to believe them. Many of their works discuss " +
+ "Synthoids and pose a threat to society. The publications are spreading " +
+ "rapidly in China and other Eastern countries.
" +
+ "Samizdat has done a good job of keeping hidden and anonymous. " +
+ "However, we've just received intelligence that their base of " +
+ "operations is in Ishima's underground sewer systems. Your task is to " +
+ "investigate the sewer systems, and eliminate Samizdat. They must " +
+ "never publish anything again.",
+ baseDifficulty:3000, reqdRank:7.5e3,
+ rankGain:75, rankLoss:15, hpLoss:100,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true
+ });
+ BlackOperations["Operation Titan"] = new BlackOperation({
+ name:"Operation Titan",
+ desc:"Several months ago Titan Laboratories' Bioengineering department " +
+ "was infiltrated by Synthoids. As far as we know, Titan Laboratories' " +
+ "management has no knowledge about this. We don't know what the " +
+ "Synthoids are up to, but the research that they could " +
+ "be conducting using Titan Laboraties' vast resources is potentially " +
+ "very dangerous.
" +
+ "Your goal is to enter and destroy the Bioengineering department's " +
+ "facility in Aevum. The task is not just to retire the Synthoids there, but " +
+ "also to destroy any information or research at the facility that " +
+ "is relevant to the Synthoids and their goals.",
+ baseDifficulty:4000, reqdRank:10e3,
+ rankGain:100, rankLoss:20, hpLoss:100,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true
+ });
+ BlackOperations["Operation Ares"] = new BlackOperation({
+ name:"Operation Ares",
+ desc:"One of our undercover agents, Agent Carter, has informed us of a " +
+ "massive weapons deal going down in Dubai between rogue Russian " +
+ "militants and a radical Synthoid community. These weapons are next-gen " +
+ "plasma and energy weapons. It is critical for the safety of humanity " +
+ "that this deal does not happen.
" +
+ "Your task is to intercept the deal. Leave no survivors.",
+ baseDifficulty:5000, reqdRank:12.5e3,
+ rankGain:125, rankLoss:20, hpLoss:200,
+ weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
+ decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true
+ });
+ BlackOperations["Operation Archangel"] = new BlackOperation({
+ name:"Operation Archangel",
+ desc:"Our analysts have discovered that the popular Red Rabbit brothel in " +
+ "Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence " +
+ "suggests that the profit from this brothel is used to fund a large " +
+ "black market arms trafficking operation.
" +
+ "The goal of this operation is to take out the leaders that are running " +
+ "the Red Rabbit brothel. Try to limit the number of other casualties, " +
+ "but do what you must to complete the mission.",
+ baseDifficulty:7500, reqdRank:15e3,
+ rankGain:200, rankLoss:20, hpLoss:25,
+ weights:{hack:0,str:0.2,def:0.2,dex:0.3,agi:0.3,cha:0, int:0},
+ decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true,
+ });
+ BlackOperations["Operation Juggernaut"] = new BlackOperation({
+ name:"Operation Juggernaut",
+ desc:"The CIA has just encountered a new security threat. A new " +
+ "criminal group, lead by a shadowy operative who calls himself " +
+ "Juggernaut, has been smuggling drugs and weapons (including " +
+ "suspected bioweapons) into Sector-12. We also have reason " +
+ "to believe the tried to break into one of Universal Energy's " +
+ "facilities in order to cause a city-wide blackout. The CIA " +
+ "suspects that Juggernaut is a heavily-augmented Synthoid, and " +
+ "have thus enlisted our help.
" +
+ "Your mission is to eradicate Juggernaut and his followers.",
+ baseDifficulty:10e3, reqdRank:20e3,
+ rankGain:300, rankLoss:40, hpLoss:300,
+ weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
+ decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true,
+ });
+ BlackOperations["Operation Red Dragon"] = new BlackOperation({
+ name:"Operation Red Dragon",
+ desc:"The Tetrads criminal organization is suspected of " +
+ "reverse-engineering the MK-VI Synthoid design. We believe " +
+ "they altered and possibly improved the design and began " +
+ "manufacturing their own Synthoid models in order to bolster " +
+ "their criminal activities.
" +
+ "Your task is to infiltrate and destroy the Tetrads' base of operations " +
+ "in Los Angeles. Intelligence tells us that their base houses " +
+ "one of their Synthoid manufacturing units.",
+ baseDifficulty:12.5e3, reqdRank:25e3,
+ rankGain:500, rankLoss:50, hpLoss:500,
+ weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true,
+ });
+ BlackOperations["Operation K"] = new BlackOperation({
+ name:"Operation K",
+ desc:"CODE RED SITUATION. Our intelligence tells us that VitaLife " +
+ "has discovered a new android cloning technology. This technology " +
+ "is supposedly capable of cloning Synthoid, not only physically " +
+ "but also their advanced AI modules. We do not believe that " +
+ "VitaLife is trying to use this technology illegally or " +
+ "maliciously, but if any Synthoids were able to infiltrate the " +
+ "corporation and take advantage of this technology then the " +
+ "results would be catastrophic.
" +
+ "We do not have the power or jurisdiction to shutdown this down " +
+ "through legal or political means, so we must resort to a covert " +
+ "operation. Your goal is to destroy this technology and eliminate" +
+ "anyone who was involved in its creation.",
+ baseDifficulty:15e3, reqdRank:30e3,
+ rankGain:750, rankLoss:60, hpLoss:1000,
+ weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true
+ });
+ BlackOperations["Operation Deckard"] = new BlackOperation({
+ name:"Operation Deckard",
+ desc:"Despite your success in eliminating VitaLife's new android-replicating " +
+ "technology in Operation K, we've discovered that a small group of " +
+ "MK-VI Synthoids were able to make off with the schematics and design " +
+ "of the technology before the Operation. It is almost a certainty that " +
+ "these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising." +
+ "The goal of Operation Deckard is to hunt down these Synthoids and retire " +
+ "them. I don't need to tell you how critical this mission is.",
+ baseDifficulty:20e3, reqdRank:40e3,
+ rankGain:1e3, rankLoss:75, hpLoss:200,
+ weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
+ decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true,
+ });
+ BlackOperations["Operation Tyrell"] = new BlackOperation({
+ name:"Operation Tyrell",
+ desc:"A week ago Blade Industries reported a small break-in at one " +
+ "of their Aevum Augmentation storage facitilities. We figured out " +
+ "that The Dark Army was behind the heist, and didn't think any more " +
+ "of it. However, we've just discovered that several known MK-VI Synthoids " +
+ "were part of that break-in group.
" +
+ "We cannot have Synthoids upgrading their already-enhanced abilities " +
+ "with Augmentations. Your task is to hunt down the associated Dark Army " +
+ "members and eliminate them.",
+ baseDifficulty:25e3, reqdRank:50e3,
+ rankGain:1.5e3, rankLoss:100, hpLoss:500,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true,
+ });
+ BlackOperations["Operation Wallace"] = new BlackOperation({
+ name:"Operation Wallace",
+ desc:"Based on information gathered from Operation Tyrell, we've discovered " +
+ "that The Dark Army was well aware that there were Synthoids amongst " +
+ "their ranks. Even worse, we believe that The Dark Army is working " +
+ "together with other criminal organizations such as The Syndicate and " +
+ "that they are planning some sort of large-scale takeover of multiple major " +
+ "cities, most notably Aevum. We suspect that Synthoids have infiltrated " +
+ "the ranks of these criminal factions and are trying to stage another " +
+ "Synthoid uprising.
" +
+ "The best way to deal with this is to prevent it before it even happens. " +
+ "The goal of Operation Wallace is to destroy the Dark Army and " +
+ "Syndicate factions in Aevum immediately. Leave no survivors.",
+ baseDifficulty:30e3, reqdRank:75e3,
+ rankGain:2e3, rankLoss:150, hpLoss:1500,
+ weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true
+ });
+ BlackOperations["Operation Shoulder of Orion"] = new BlackOperation({
+ name:"Operation Shoulder of Orion",
+ desc:"China's Solaris Space Systems is secretly launching the first " +
+ "manned spacecraft in over a decade using Synthoids. We believe " +
+ "China is trying to establish the first off-world colonies.
" +
+ "The mission is to prevent this launch without instigating an " +
+ "international conflict. When you accept this mission you will be " +
+ "officially disavowed by the NSA and the national government until after you " +
+ "successfully return. In the event of failure, all of the operation's " +
+ "team members must not let themselves be captured alive.",
+ baseDifficulty:35e3, reqdRank:100e3,
+ rankGain:2.5e3, rankLoss:500, hpLoss:1500,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isStealth:true
+ });
+ BlackOperations["Operation Hyron"] = new BlackOperation({
+ name:"Operation Hyron",
+ desc:"Our intelligence tells us that Fulcrum Technologies is developing " +
+ "a quantum supercomputer using human brains as core " +
+ "processors. This supercomputer " +
+ "is rumored to be able to store vast amounts of data and " +
+ "perform computations unmatched by any other supercomputer on the " +
+ "planet. But more importantly, the use of organic human brains " +
+ "means that the supercomputer may be able to reason abstractly " +
+ "and become self-aware.
" +
+ "I do not need to remind you why sentient-level AIs pose a serious " +
+ "thread to all of mankind.
" +
+ "The research for this project is being conducted at one of Fulcrum " +
+ "Technologies secret facilities in Aevum, codenamed 'Alpha Ranch'. " +
+ "Infiltrate the compound, delete and destroy the work, and then find and kill the " +
+ "project lead.",
+ baseDifficulty:40e3, reqdRank:125e3,
+ rankGain:3e3, rankLoss:1e3, hpLoss:500,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true
+ });
+ BlackOperations["Operation Morpheus"] = new BlackOperation({
+ name:"Operation Morpheus",
+ desc:"DreamSense Technologies is an advertising company that uses " +
+ "special technology to transmit their ads into the peoples " +
+ "dreams and subconcious. They do this using broadcast transmitter " +
+ "towers. Based on information from our agents and informants in " +
+ "Chonqging, we have reason to believe that one of the broadcast " +
+ "towers there has been compromised by Synthoids and is being used " +
+ "to spread pro-Synthoid propaganda.
" +
+ "The mission is to destroy this broadcast tower. Speed and " +
+ "stealth are of the upmost important for this.",
+ baseDifficulty:45e3, reqdRank:150e3,
+ rankGain:4e3, rankLoss:1e3, hpLoss:100,
+ weights:{hack:0.05,str:0.15,def:0.15,dex:0.3,agi:0.3,cha:0, int:0.05},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isStealth:true
+ });
+ BlackOperations["Operation Ion Storm"] = new BlackOperation({
+ name:"Operation Ion Storm",
+ desc:"Our analysts have uncovered a gathering of MK-VI Synthoids " +
+ "that have taken up residence in the Sector-12 Slums. We " +
+ "don't know if they are rogue Synthoids from the Uprising, " +
+ "but we do know that they have been stockpiling " +
+ "weapons, money, and other resources. This makes them dangerous.
" +
+ "This is a full-scale assault operation to find and retire all of these " +
+ "Synthoids in the Sector-12 Slums.",
+ baseDifficulty:50e3, reqdRank:175e3,
+ rankGain:5e3, rankLoss:1e3, hpLoss:5000,
+ weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true
+ });
+ BlackOperations["Operation Annihilus"] = new BlackOperation({
+ name:"Operation Annihilus",
+ desc:"Our superiors have ordered us to eradicate everything and everyone " +
+ "in an underground facility located in Aevum. They tell us " +
+ "that the facility houses many dangerous Synthoids and " +
+ "belongs to a terrorist organization called " +
+ "'The Covenant'. We have no prior intelligence about this " +
+ "organization, so you are going in blind.",
+ baseDifficulty:55e3, reqdRank:200e3,
+ rankGain:7.5e3, rankLoss:1e3, hpLoss:10e3,
+ weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
+ decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
+ isKill:true
+ });
+ BlackOperations["Operation Ultron"] = new BlackOperation({
+ name:"Operation Ultron",
+ desc:"OmniTek Incorporated, the original designer and manufacturer of Synthoids, " +
+ "has notified us of a malfunction in their AI design. This malfunction, " +
+ "when triggered, causes MK-VI Synthoids to become radicalized and seek out " +
+ "the destruction of humanity. They say that this bug affects all MK-VI Synthoids, " +
+ "not just the rogue ones from the Uprising.
" +
+ "OmniTek has also told us they they believe someone has triggered this " +
+ "malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids " +
+ "are now amassing in Volhaven to form a terrorist group called Ultron.
" +
+ "Intelligence suggests Ultron is heavily armed and that their members are " +
+ "augmented. We believe Ultron is making moves to take control of " +
+ "and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).
" +
+ "Your task is to find and destroy Ultron.",
+ baseDifficulty:60e3, reqdRank:250e3,
+ rankGain:10e3, rankLoss:2e3, hpLoss:10e3,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ isKill:true
+ });
+ BlackOperations["Operation Centurion"] = new BlackOperation({
+ name:"Operation Centurion",
+ desc:"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)
" +
+ "Throughout all of humanity's history, we have relied on " +
+ "technology to survive, conquer, and progress. Its advancement became our primary goal. " +
+ "And at the peak of human civilization technology turned into " +
+ "power. Global, absolute power.
" +
+ "It seems that the universe is not without a sense of irony.
" +
+ "The bits are all around us. The daemons that hold the Node " +
+ "together can manifest themselves in many different ways.
" +
+ "D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",
+ baseDifficulty:75e3, reqdRank:350e3,
+ rankGain:20e3, rankLoss:20e3, hpLoss:20e3,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ });
+ BlackOperations["Operation Daedalus"] = new BlackOperation({
+ name:"Operation Daedalus",
+ desc:"Yesterday we obeyed kings and bent our neck to emperors. " +
+ "Today we kneel only to truth.",
+ baseDifficulty:80e3, reqdRank:400e3,
+ rankGain:40e3, rankLoss:10e3, hpLoss:100e3,
+ weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
+ });
+}
+
+
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
+
+/***/ }),
+/* 35 */
/*!***********************!*\
!*** ./src/Script.js ***!
\***********************/
@@ -13228,54 +15088,54 @@ exports.removeChildrenFromElement = removeChildrenFromElement;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isScriptFilename; });
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Fconf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Fconf */ 47);
-/* harmony import */ var _InteractiveTutorial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InteractiveTutorial */ 34);
-/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator */ 6);
-/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptFunctions */ 43);
-/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptWorker */ 26);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Fconf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Fconf */ 50);
+/* harmony import */ var _InteractiveTutorial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InteractiveTutorial */ 38);
+/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator */ 7);
+/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptFunctions */ 47);
+/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptWorker */ 29);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Server */ 11);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings */ 18);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Server */ 12);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings */ 20);
/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/postToTerminal */ 7);
+/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/postToTerminal */ 8);
/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ui_postToTerminal__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile */ 65);
+/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile */ 69);
/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn */ 49);
+/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn */ 52);
/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui/navigationTracking */ 12);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui/navigationTracking */ 14);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/helpers/compareArrays */ 93);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/helpers/compareArrays */ 99);
/* harmony import */ var _utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_compareArrays__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 89);
+/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 93);
/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/helpers/roundToTwo */ 83);
+/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/helpers/roundToTwo */ 88);
/* harmony import */ var _utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_roundToTwo__WEBPACK_IMPORTED_MODULE_20__);
-var ace = __webpack_require__(/*! brace */ 274);
-var beautify = __webpack_require__(/*! js-beautify */ 273).js_beautify;
-__webpack_require__(/*! brace/mode/javascript */ 272);
-__webpack_require__(/*! ../netscript */ 202);
-__webpack_require__(/*! brace/theme/chaos */ 271);
-__webpack_require__(/*! brace/theme/chrome */ 270);
-__webpack_require__(/*! brace/theme/monokai */ 269);
-__webpack_require__(/*! brace/theme/solarized_dark */ 268);
-__webpack_require__(/*! brace/theme/solarized_light */ 267);
-__webpack_require__(/*! brace/theme/terminal */ 266);
-__webpack_require__(/*! brace/theme/twilight */ 265);
-__webpack_require__(/*! brace/theme/xcode */ 264);
-__webpack_require__(/*! brace/keybinding/vim */ 263);
-__webpack_require__(/*! brace/keybinding/emacs */ 262);
-__webpack_require__(/*! brace/ext/language_tools */ 261);
+var ace = __webpack_require__(/*! brace */ 293);
+var beautify = __webpack_require__(/*! js-beautify */ 292).js_beautify;
+__webpack_require__(/*! brace/mode/javascript */ 291);
+__webpack_require__(/*! ../netscript */ 221);
+__webpack_require__(/*! brace/theme/chaos */ 290);
+__webpack_require__(/*! brace/theme/chrome */ 289);
+__webpack_require__(/*! brace/theme/monokai */ 288);
+__webpack_require__(/*! brace/theme/solarized_dark */ 287);
+__webpack_require__(/*! brace/theme/solarized_light */ 286);
+__webpack_require__(/*! brace/theme/terminal */ 285);
+__webpack_require__(/*! brace/theme/twilight */ 284);
+__webpack_require__(/*! brace/theme/xcode */ 283);
+__webpack_require__(/*! brace/keybinding/vim */ 282);
+__webpack_require__(/*! brace/keybinding/emacs */ 281);
+__webpack_require__(/*! brace/ext/language_tools */ 280);
// Importing this doesn't work for some reason.
-const walk = __webpack_require__(/*! acorn/dist/walk */ 149);
+const walk = __webpack_require__(/*! acorn/dist/walk */ 162);
@@ -14356,4275 +16216,10 @@ _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_16__["Reviver"].constructors.AllServ
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 32 */
-/*!****************************!*\
- !*** ./src/Bladeburner.js ***!
- \****************************/
-/*! exports provided: Bladeburner */
-/*! exports used: Bladeburner */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Bladeburner; });
-/* harmony import */ var _Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations */ 21);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants */ 1);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction/Faction */ 57);
-/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Faction_Faction__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Faction/Factions */ 14);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 46);
-/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Locations */ 5);
-/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _RedPill__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RedPill */ 59);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 25);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/helpers/createProgressBarText */ 85);
-/* harmony import */ var _utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_createProgressBarText__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 30);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 66);
-/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/uiHelpers/appendLineBreaks */ 52);
-/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__);
-/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/helpers/clearObject */ 80);
-/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/uiHelpers/createPopup */ 36);
-/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_20__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ui/navigationTracking */ 12);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 44);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__);
-/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 89);
-/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_25__);
-/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../utils/uiHelpers/removeElement */ 61);
-/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_26__);
-/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../utils/uiHelpers/removeElementById */ 20);
-/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_27__);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var CityNames = ["Aevum", "Chongqing", "Sector-12", "New Tokyo", "Ishima", "Volhaven"];
-
-var CyclesPerSecond = 5; //Game cycle is 200 ms
-
-var StaminaGainPerSecond = 0.0085;
-var BaseStaminaLoss = 0.285; //Base stamina loss per action. Increased based on difficulty
-var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get bonus stamina gain
-
-var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
-
-//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
-//experience gain. Its formula is:
-//difficulty ^ exponentialFactor + difficulty / linearFactor
-var DiffMultExponentialFactor = 0.28;
-var DiffMultLinearFactor = 650;
-
-var EffAgiLinearFactor = 40e3;
-var EffDexLinearFactor = 40e3;
-var EffAgiExponentialFactor = 0.032;
-var EffDexExponentialFactor = 0.03;
-
-var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
-
-var PopulationThreshold = 1e9; //Population at which success rates start being affected
-var ChaosThreshold = 50; //City chaos level after which it starts making tasks harder
-
-var BaseStatGain = 1; //Base stat gain per second
-var BaseIntGain = 0.001; //Base intelligence stat gain
-
-var ActionCountGrowthPeriod = 300; //Time (s) it takes for action count to grow by its specified value
-
-var RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
-var RankNeededForFaction = 25;
-
-var ContractSuccessesPerLevel = 3.5; //How many successes you need to level up a contract
-var OperationSuccessesPerLevel = 3; //How many successes you need to level up an op
-
-var RanksPerSkillPoint = 4; //How many ranks needed to get 1 Skill Point
-
-var ContractBaseMoneyGain = 50e3; //Base Money Gained per contract
-
-//DOM related variables
-var ActiveActionCssClass = "bladeburner-active-action";
-
-//Console related stuff
-var consoleHistoryIndex = 0;
-var consoleHelpText = {
- helpList:"Use 'help [command]' to get more information about a particular Bladeburner console command.
" +
- "automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks " +
- "clear/cls Clear the console " +
- "help [cmd] Display this help text, or help text for a specific command " +
- "log [en/dis] [type] Enable or disable logging for events and actions " +
- "skill [action] [name] Level or display info about your Bladeburner skills " +
- "start [type] [name] Start a Bladeburner action/task " +
- "stop Stops your current Bladeburner action/task ",
- automate:"automate [var] [val] [hi/low]
" +
- "A simple way to automate your Bladeburner actions. This console command can be used " +
- "to automatically start an action when your stamina rises above a certain threshold, and " +
- "automatically switch to another action when your stamina drops below another threshold.
" +
- "automate status - Check the current status of your automation and get a brief description of what it'll do " +
- "automate en - Enable the automation feature " +
- "automate dis - Disable the automation feature
" +
- "There are four properties that must be set for this automation to work properly. Here is how to set them:
" +
- "automate stamina 100 high " +
- "automate contract Tracking high " +
- "automate stamina 50 low " +
- 'automate general "Field Analysis" low
' +
- "Using the four console commands above will set the automation to perform Tracking contracts " +
- "if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below " +
- "50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must " +
- "exactly match whatever the name is in the UI.",
- clear:"clear
Clears the console",
- cls:"cls
Clears the console",
- help:"help [command]
" +
- "Running 'help' with no arguments displays the general help text, which lists all console commands " +
- "and a brief description of what they do. A command can be specified to get more specific help text " +
- "about that particular command. For example:
" +
- "help automate
" +
- "will display specific information about using the automate console command",
- log:"log [en/dis] [type]
" +
- "Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged " +
- "in the console. There are also random events that are logged in the console as well. The five categories of " +
- "things that get logged are:
" +
- "The logging for these categories can be enabled or disabled like so:
" +
- "log dis contracts - Disables logging that occurs when contracts are completed " +
- "log en contracts - Enables logging that occurs when contracts are completed " +
- "log dis events - Disables logging for Bladeburner random events
" +
- "Logging can be universally enabled/disabled using the 'all' keyword:
" +
- "log dis all " +
- "log en all",
- skill:"skill [action] [name]
" +
- "Level or display information about your skills.
" +
- "To display information about all of your skills and your multipliers, use:
" +
- "skill list
" +
- "To display information about a specific skill, specify the name of the skill afterwards. " +
- "Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If " +
- "the name of the skill has whitespace, enclose the name of the skill in double quotation marks:
" +
- "skill list Reaper " +
- 'skill list "Digital Observer"
' +
- "This console command can also be used to level up skills:
" +
- "Start an action. An action is specified by its type and its name. The " +
- "name is case-sensitive. It must appear exactly as it does in the UI. If " +
- "the name of the action has whitespace, enclose it in double quotation marks. " +
- "Valid action types include:
" +
- "Stop your current action and go idle",
-}
-
-//Keypresses for Console
-$(document).keydown(function(event) {
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner)) {
- //if (DomElems.consoleInput && !event.ctrlKey && !event.shiftKey && !event.altKey) {
- // DomElems.consoleInput.focus();
- //}
-
- if (!(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner instanceof Bladeburner)) {return;}
- let consoleHistory = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner.consoleHistory;
-
- //NOTE: Keycodes imported from Terminal.js
- if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11__["KEY"].ENTER) {
- event.preventDefault();
- var command = DomElems.consoleInput.value;
- if (command.length > 0) {
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner.postToConsole("> " + command);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner.resetConsoleInput();
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner.executeConsoleCommands(command);
- }
- }
-
- if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11__["KEY"].UPARROW) {
- if (DomElems.consoleInput == null) {return;}
- var i = consoleHistoryIndex;
- var len = consoleHistory.length;
-
- if (len === 0) {return;}
- if (i < 0 || i > len) {
- consoleHistoryIndex = len;
- }
-
- if (i !== 0) {
- --consoleHistoryIndex;
- }
-
- var prevCommand = consoleHistory[consoleHistoryIndex];
- DomElems.consoleInput.value = prevCommand;
- setTimeout(function(){DomElems.consoleInput.selectionStart = DomElems.consoleInput.selectionEnd = 10000; }, 0);
- }
-
- if (event.keyCode === _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_11__["KEY"].DOWNARROW) {
- if (DomElems.consoleInput == null) {return;}
- var i = consoleHistoryIndex;
- var len = consoleHistory.length;
-
- if (len == 0) {return;}
- if (i < 0 || i > len) {
- consoleHistoryIndex = len;
- }
-
- //Latest command, put nothing
- if (i == len || i == len-1) {
- consoleHistoryIndex = len;
- DomElems.consoleInput.value = "";
- } else {
- ++consoleHistoryIndex;
- var prevCommand = consoleHistory[consoleHistoryIndex];
- DomElems.consoleInput.value = prevCommand;
- }
- }
- }
-});
-
-function City(params={}) {
- this.name = params.name ? params.name : _Locations__WEBPACK_IMPORTED_MODULE_7__["Locations"].Sector12;
-
- //Synthoid population and estimate
- this.pop = params.pop ? params.pop : Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 100);
- this.commsEst = this.comms + Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(-5, 5);
- if (this.commsEst < 0) {this.commsEst = 0;}
- this.chaos = 0;
-}
-
-City.prototype.improvePopulationEstimateByCount = function(n) {
- if (isNaN(n)) {throw new Error("NaN passeed into City.improvePopulationEstimateByCount()");}
- if (this.popEst < this.pop) {
- this.popEst += n;
- if (this.popEst > this.pop) {this.popEst = this.pop;}
- } else if (this.popEst > this.pop) {
- this.popEst -= n;
- if (this.popEst < this.pop) {this.popEst = this.pop;}
- }
-}
-
-//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
-City.prototype.improvePopulationEstimateByPercentage = function(p, skillMult=1) {
- p = p*skillMult;
- if (isNaN(p)) {throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");}
- if (this.popEst < this.pop) {
- ++this.popEst; //In case estimate is 0
- this.popEst *= (1 + (p/100));
- if (this.popEst > this.pop) {this.popEst = this.pop;}
- } else if (this.popEst > this.pop) {
- this.popEst *= (1 - (p/100));
- if (this.popEst < this.pop) {this.popEst = this.pop;}
- }
-}
-
-City.prototype.improveCommunityEstimate = function(n=1) {
- if (isNaN(n)) {throw new Error("NaN passed into City.improveCommunityEstimate()");}
- if (this.commsEst < this.comms) {
- this.commsEst += n;
- if (this.commsEst > this.comms) {this.commsEst = this.comms;}
- } else if (this.commsEst > this.comms) {
- this.commsEst -= n;
- if (this.commsEst < this.comms) {this.commsEst = this.comms;}
- }
-}
-
-//@params options:
-// estChange(int): How much the estimate should change by
-// estOffset(int): Add offset to estimate (offset by percentage)
-City.prototype.changePopulationByCount = function(n, params={}) {
- if (isNaN(n)) {throw new Error("NaN passed into City.changePopulationByCount()");}
- this.pop += n;
- if (params.estChange && !isNaN(params.estChange)) {this.popEst += params.estChange;}
- if (params.estOffset) {
- this.popEst = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(this.popEst, params.estOffset);
- }
- this.popEst = Math.max(this.popEst, 0);
-}
-
-//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
-//@params options:
-// changeEstEqually(bool) - Change the population estimate by an equal amount
-// nonZero (bool) - Set to true to ensure that population always changes by at least 1
-City.prototype.changePopulationByPercentage = function(p, params={}) {
- if (isNaN(p)) {throw new Error("NaN passed into City.changePopulationByPercentage()");}
- if (p === 0) {return;}
- var change = Math.round(this.pop * (p/100));
-
- //Population always changes by at least 1
- if (params.nonZero && change === 0) {
- p > 0 ? change = 1 : change = -1;
- }
-
- this.pop += change;
- if (params.changeEstEqually) {
- this.popEst += change;
- if (this.popEst < 0) {this.popEst = 0;}
- }
- return change;
-}
-
-City.prototype.changeChaosByCount = function(n) {
- if (isNaN(n)) {throw new Error("NaN passed into City.changeChaosByCount()");}
- if (n === 0) {return;}
- this.chaos += n;
- if (this.chaos < 0) {this.chaos = 0;}
-}
-
-//@p is the percentage, not the multiplier (e.g. pass in p = 5 for 5%)
-City.prototype.changeChaosByPercentage = function(p) {
- if (isNaN(p)) {throw new Error("NaN passed into City.chaosChaosByPercentage()");}
- if (p === 0) {return;}
- var change = this.chaos * (p/100);
- this.chaos += change;
- if (this.chaos < 0) {this.chaos = 0;}
-}
-
-City.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("City", this);
-}
-City.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(City, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.City = City;
-
-function Skill(params={name:"foo", desc:"foo"}) {
- if (params.name) {
- this.name = params.name;
- } else {
- throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");
- }
- if (params.desc) {
- this.desc = params.desc;
- } else {
- throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");
- }
- this.baseCost = params.baseCost ? params.baseCost : 1; //Cost is in Skill Points
- this.costInc = params.costInc ? params.costInc : 1; //Additive cost increase per level
-
- if (params.maxLvl) {this.maxLvl = params.maxLvl;}
-
- //These benefits are additive. So total multiplier will be level (handled externally) times the
- //effects below
- if (params.successChanceAll) {this.successChanceAll = params.successChanceAll;}
- if (params.successChanceStealth) {this.successChanceStealth = params.successChanceStealth;}
- if (params.successChanceKill) {this.successChanceKill = params.successChanceKill;}
- if (params.successChanceContract) {this.successChanceContract = params.successChanceContract;}
- if (params.successChanceOperation) {this.successChanceOperation = params.successChanceOperation;}
-
- //This multiplier affects everything that increases synthoid population/community estimate
- //e.g. Field analysis, Investigation Op, Undercover Op
- if (params.successChanceEstimate) {this.successChanceEstimate = params.successChanceEstimate;}
-
- if (params.actionTime) {this.actionTime = params.actionTime;}
- if (params.effHack) {this.effHack = params.effHack;}
- if (params.effStr) {this.effStr = params.effStr;}
- if (params.effDef) {this.effDef = params.effDef;}
- if (params.effDex) {this.effDex = params.effDex;}
- if (params.effAgi) {this.effAgi = params.effAgi;}
- if (params.effCha) {this.effCha = params.effCha;}
-
- if (params.stamina) {this.stamina = params.stamina;}
-
- //Equipment
- if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;}
- if (params.gunAbility) {this.gunAbility = params.gunAbility;}
-}
-
-Skill.prototype.calculateCost = function(currentLevel) {
- return Math.floor((this.baseCost + (currentLevel * this.costInc)) * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerSkillCost);
-}
-var Skills = {};
-var SkillNames = {
- BladesIntuition: "Blade's Intuition",
- Reaper: "Reaper",
- Cloak: "Cloak",
- Marksman: "Marksman",
- WeaponProficiency: "Weapon Proficiency",
- Overclock: "Overclock",
- EvasiveSystem: "Evasive System",
- ShortCircuit: "Short-Circuit",
- DigitalObserver: "Digital Observer",
- Datamancer: "Datamancer",
- Tracer: "Tracer",
- CybersEdge: "Cyber's Edge"
-}
-
-//Base Class for Contracts, Operations, and BlackOps
-function Action(params={}) {
- this.name = params.name ? params.name : "";
- this.desc = params.desc ? params.desc : "";
-
- //Difficulty scales with level
- //Exact formula is not set in stone
- //Initial design: baseDifficulty * (difficultyFac ^ level)?
- //difficulty Fac is slightly greater than 1
- this.level = 1;
- this.maxLevel = 1;
- this.autoLevel = true;
- this.baseDifficulty = params.baseDifficulty ? Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(params.baseDifficulty, 10) : 100;
- this.difficultyFac = params.difficultyFac ? params.difficultyFac : 1.01;
-
- //Rank increase/decrease is affected by this exponent
- this.rewardFac = params.rewardFac ? params.rewardFac : 1.02;
-
- this.successes = 0;
- this.failures = 0;
-
- //All of these scale with level/difficulty
- this.rankGain = params.rankGain ? params.rankGain : 0;
- if (params.rankLoss) {this.rankLoss = params.rankLoss;}
- if (params.hpLoss) {
- this.hpLoss = params.hpLoss;
- this.hpLost = 0;
- }
-
- //Action Category. Current categories are stealth and kill
- this.isStealth = params.isStealth ? true : false;
- this.isKill = params.isKill ? true : false;
-
- //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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1e3, 25e3);
- this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["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};
- this.weights = params.weights ? params.weights : defaultWeights;
-
- //Check to make sure weights are summed properly
- var sum = 0;
- for (var weight in this.weights) {
- if (this.weights.hasOwnProperty(weight)) {
- sum += this.weights[weight];
- }
- }
- if (sum - 1 >= 10 * Number.EPSILON) {
- throw new Error("Invalid weights when constructing Action " + this.name +
- ". The weights should sum up to 1. They sum up to :" + 1);
- }
-
- //Diminishing returns of stats (stat ^ decay where 0 <= decay <= 1)
- var defaultDecays = {hack:0.9,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.9,int:0.9};
- this.decays = params.decays ? params.decays : defaultDecays;
- for (var decay in this.decays) {
- if (this.decays.hasOwnProperty(decay)) {
- if (this.decays[decay] > 1) {
- throw new Error("Invalid decays when constructing " +
- "Action " + this.name + ". " +
- "Decay value cannot be greater than 1");
- }
- }
- }
-}
-
-Action.prototype.getDifficulty = function() {
- var difficulty = this.baseDifficulty * Math.pow(this.difficultyFac, this.level-1);
- if (isNaN(difficulty)) {throw new Error("Calculated NaN in Action.getDifficulty()");}
- return difficulty;
-}
-
-//@inst - Bladeburner Object
-//@params - options:
-// est (bool): Get success chance estimate instead of real success chance
-Action.prototype.getSuccessChance = function(inst, params={}) {
- if (inst == null) {throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");}
- var difficulty = this.getDifficulty();
- var competence = 0;
- for (var stat in this.weights) {
- if (this.weights.hasOwnProperty(stat)) {
- var playerStatLvl = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queryStatFromString(stat);
- var key = "eff" + stat.charAt(0).toUpperCase() + stat.slice(1);
- var effMultiplier = inst.skillMultipliers[key];
- if (effMultiplier == null) {
- console.log("ERROR: Failed to find Bladeburner Skill multiplier for: " + stat);
- effMultiplier = 1;
- }
- competence += (this.weights[stat] * Math.pow(effMultiplier*playerStatLvl, this.decays[stat]));
- }
- }
- competence *= inst.calculateStaminaPenalty();
-
- //For Operations, factor in team members
- if (this instanceof Operation || this instanceof BlackOperation) {
- if (this.teamCount && this.teamCount > 0) {
- this.teamCount = Math.min(this.teamCount, inst.teamSize);
- var teamMultiplier = Math.pow(this.teamCount, 0.05);
- competence *= teamMultiplier;
- }
- }
-
- //Lower city population results in lower chances
- if (!(this instanceof BlackOperation)) {
- var city = inst.getCurrentCity();
- if (params.est) {
- competence *= (city.popEst / PopulationThreshold);
- } else {
- competence *= (city.pop / PopulationThreshold);
- }
-
- //Too high of a chaos results in lower chances
- if (city.chaos > ChaosThreshold) {
- var diff = 1 + (city.chaos - ChaosThreshold);
- var mult = Math.pow(diff, 0.1);
- difficulty *= mult;
- }
-
- //For Raid Operations, no communities = fail
- if (this instanceof Operation && this.name === "Raid") {
- if (city.comms <= 0) {return 0;}
- }
- }
-
- //Factor skill multipliers into success chance
- competence *= inst.skillMultipliers.successChanceAll;
- if (this instanceof Operation || this instanceof BlackOperation) {
- competence *= inst.skillMultipliers.successChanceOperation;
- }
- if (this instanceof Contract) {
- competence *= inst.skillMultipliers.successChanceContract;
- }
- if (this.isStealth) {
- competence *= inst.skillMultipliers.successChanceStealth;
- }
- if (this.isKill) {
- competence *= inst.skillMultipliers.successChanceKill;
- }
-
- //Augmentation multiplier
- competence *= _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner_success_chance_mult;
-
- if (isNaN(competence)) {throw new Error("Competence calculated as NaN in Action.getSuccessChance()");}
- return Math.min(1, competence / difficulty);
-}
-
-//Tests for success. Should be called when an action has completed
-// @inst - Bladeburner Object
-Action.prototype.attempt = function(inst) {
- return (Math.random() < this.getSuccessChance(inst));
-}
-
-Action.prototype.getActionTime = function(inst) {
- var difficulty = this.getDifficulty();
- var baseTime = difficulty / DifficultyToTimeFactor;
- var skillFac = inst.skillMultipliers.actionTime; //Always < 1
-
- var effAgility = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].agility * inst.skillMultipliers.effAgi;
- var effDexterity = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].dexterity * inst.skillMultipliers.effDex;
- var statFac = 0.5 * (Math.pow(effAgility, EffAgiExponentialFactor) +
- Math.pow(effDexterity, EffDexExponentialFactor) +
- (effAgility / EffAgiLinearFactor) +
- (effDexterity / EffDexLinearFactor)); //Always > 1
-
- baseTime = Math.max(1, baseTime * skillFac / statFac);
-
- if (this instanceof Contract) {
- return Math.ceil(baseTime);
- } else if (this instanceof Operation) {
- return Math.ceil(baseTime);
- } else if (this instanceof BlackOperation) {
- return Math.ceil(baseTime * 1.5);
- } else {
- throw new Error("Unrecognized Action Type in Action.getActionTime(this). Must be either Contract, Operation, or BlackOperation");
- }
-}
-
-Action.prototype.getSuccessesNeededForNextLevel = function(baseSuccessesPerLevel) {
- return Math.ceil((0.5) * (this.maxLevel) * (2 * baseSuccessesPerLevel + (this.maxLevel-1)));
-}
-
-Action.prototype.setMaxLevel = function(baseSuccessesPerLevel) {
- if (this.successes >= this.getSuccessesNeededForNextLevel(baseSuccessesPerLevel)) {
- ++this.maxLevel;
- }
-}
-
-Action.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("Action", this);
-}
-Action.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(Action, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.Action = Action;
-var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
-
-//Action Identifier
-var ActionTypes = Object.freeze({
- "Idle": 1,
- "Contract": 2,
- "Operation": 3,
- "BlackOp": 4,
- "BlackOperation": 4,
- "Training": 5,
- "Recruitment": 6,
- "FieldAnalysis": 7,
- "Field Analysis": 7
-});
-function ActionIdentifier(params={}) {
- if (params.name) {this.name = params.name;}
- if (params.type) {this.type = params.type;}
-}
-ActionIdentifier.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("ActionIdentifier", this);
-}
-ActionIdentifier.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(ActionIdentifier, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.ActionIdentifier = ActionIdentifier;
-
-//Contracts
-function Contract(params={}) {
- Action.call(this, params);
-}
-Contract.prototype = Object.create(Action.prototype);
-Contract.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("Contract", this);
-}
-Contract.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(Contract, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.Contract = Contract;
-
-//Operations
-function Operation(params={}) {
- Action.call(this, params);
- this.reqdRank = params.reqdRank ? params.reqdRank : 100;
- this.teamCount = params.teamCount ? params.teamCount : 0; //# of team members to use
-}
-Operation.prototype = Object.create(Action.prototype);
-Operation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("Operation", this);
-}
-Operation.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(Operation, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.Operation = Operation;
-
-//Black Operations
-function BlackOperation(params={}) {
- Operation.call(this, params);
-
- //Black ops are one time missions
- this.count = 1;
- this.countGrowth = 0;
-}
-BlackOperation.prototype = Object.create(Action.prototype);
-BlackOperation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("BlackOperation", this);
-}
-BlackOperation.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(BlackOperation, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.BlackOperation = BlackOperation;
-var BlackOperations = {};
-
-function Bladeburner(params={}) {
- this.numHosp = 0; //Number of hospitalizations
- this.moneyLost = 0; //Money lost due to hospitalizations
- this.rank = 0;
- this.maxRank = 0; //Used to determine skill points
-
- this.skillPoints = 0;
- this.totalSkillPoints = 0;
-
- this.teamSize = 0; //Number of team members
- this.teamLost = 0; //Number of team members lost
-
- this.storedCycles = 0;
-
- this.randomEventCounter = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(240, 600); //4-10 minutes
-
- //These times are in seconds
- this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
- this.actionTimeCurrent = 0;
-
- //ActionIdentifier Object
- var idleActionType = ActionTypes["Idle"];
- this.action = new ActionIdentifier({type:idleActionType});
-
- this.cities = {};
- for (var i = 0; i < CityNames.length; ++i) {
- this.cities[CityNames[i]] = new City({name:CityNames[i]});
- }
- this.city = _Locations__WEBPACK_IMPORTED_MODULE_7__["Locations"].Sector12;
-
- //Map of SkillNames -> level
- this.skills = {};
- this.skillMultipliers = {};
- this.updateSkillMultipliers(); //Calls resetSkillMultipliers()
-
- //Max Stamina is based on stats and Bladeburner-specific bonuses
- this.staminaBonus = 0; //Gained from training
- this.maxStamina = 0;
- this.calculateMaxStamina();
- this.stamina = this.maxStamina;
-
- //Contracts and Operations objects. These objects have unique
- //properties because they are randomized in each instance and have stats like
- //successes/failures, so they need to be saved/loaded by the game.
- this.contracts = {};
- this.operations = {};
-
- //Object that contains name of all Black Operations that have been completed
- this.blackops = {};
-
- //Flags for whether these actions should be logged to console
- this.logging = {
- general:true,
- contracts:true,
- ops:true,
- blackops:true,
- events:true,
- }
-
- //Simple automation values
- this.automateEnabled = false;
- this.automateActionHigh = 0;
- this.automateThreshHigh = 0; //Stamina Threshold
- this.automateActionLow = 0;
- this.automateThreshLow = 0; //Stamina Threshold
-
- //Console command history
- this.consoleHistory = [];
- this.consoleLogs = [];
-
- //Initialization
- initBladeburner();
- this.initializeDomElementRefs();
- if (params.new) {this.create();}
-}
-
-Bladeburner.prototype.prestige = function() {
- this.resetAction();
- var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["Bladeburners"];
- if (this.rank >= RankNeededForFaction) {
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_6__[/* joinFaction */ "c"])(bladeburnerFac);
- }
-}
-
-Bladeburner.prototype.create = function() {
- this.contracts["Tracking"] = new Contract({
- name:"Tracking",
- desc:"Identify and locate Synthoids. This contract involves reconnaissance " +
- "and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.
" +
- "Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for " +
- "whatever city you are currently in.",
- baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
- rankGain:0.3, hpLoss:0.5,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(25, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 75)/10,
- 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
- });
- this.contracts["Bounty Hunter"] = new Contract({
- name:"Bounty Hunter",
- desc:"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.
" +
- "Successfully completing a Bounty Hunter contract will lower the population in your " +
- "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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 75)/10,
- 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
- });
- this.contracts["Retirement"] = new Contract({
- name:"Retirement",
- desc:"Hunt down and retire (kill) rogue Synthoids.
" +
- "Successfully copmleting a Retirement contract will lower the population in your current " +
- "city, and will also increase its chaos level.",
- baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
- rankGain:0.6, hpLoss:1,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 500), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5,75)/10,
- 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
- });
-
- this.operations["Investigation"] = new Operation({
- name:"Investigation",
- desc:"As a field agent, investigate and identify Synthoid " +
- "populations, movements, and operations.
Successful " +
- "Investigation ops will increase the accuracy of your " +
- "synthoid data.
" +
- "You will NOT lose HP from failed Investigation ops.",
- baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
- rankGain:2.2, rankLoss:0.2,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(10, 40)/10,
- 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
- });
- this.operations["Undercover Operation"] = new Operation({
- name:"Undercover Operation",
- desc:"Conduct undercover operations to identify hidden " +
- "and underground Synthoid communities and organizations.
" +
- "Successful Undercover ops will increase the accuracy of your synthoid " +
- "data.",
- baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
- rankGain:4.4, rankLoss:0.4, hpLoss:2,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(10, 40)/10,
- 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
- });
- this.operations["Sting Operation"] = new Operation({
- name:"Sting Operation",
- desc:"Conduct a sting operation to bait and capture particularly " +
- "notorious Synthoid criminals.",
- baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
- rankGain:5.5, rankLoss:0.5, hpLoss:2.5,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 300), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(3, 40)/10,
- 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
- });
- this.operations["Raid"] = new Operation({
- name:"Raid",
- desc:"Lead an assault on a known Synthoid community. Note that " +
- "there must be an existing Synthoid community in your current city " +
- "in order for this Operation to be successful",
- baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
- rankGain:55,rankLoss:2.5,hpLoss:50,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 200), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(2, 40)/10,
- 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
- });
- this.operations["Stealth Retirement Operation"] = new Operation({
- name:"Stealth Retirement Operation",
- desc:"Lead a covert operation to retire Synthoids. The " +
- "objective is to complete the task without " +
- "drawing any attention. Stealth and discretion are key.",
- baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
- rankGain:22, rankLoss:2, hpLoss:10,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 250), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 20)/10,
- 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
- });
- this.operations["Assassination"] = new Operation({
- name:"Assassination",
- desc:"Assassinate Synthoids that have been identified as " +
- "important, high-profile social and political leaders " +
- "in the Synthoid communities.",
- baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
- rankGain:44, rankLoss:4, hpLoss:5,
- count:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 200), countGrowth:Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 20)/10,
- 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
- });
-}
-
-Bladeburner.prototype.storeCycles = function(numCycles=1) {
- this.storedCycles += numCycles;
-}
-
-Bladeburner.prototype.process = function() {
- //Extreme condition...if Operation Daedalus is complete trigger the BitNode
- if (_RedPill__WEBPACK_IMPORTED_MODULE_9__[/* redPillFlag */ "b"] === false && this.blackops.hasOwnProperty("Operation Daedalus")) {
- return Object(_RedPill__WEBPACK_IMPORTED_MODULE_9__[/* hackWorldDaemon */ "a"])(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bitNodeN);
- }
-
- //If the Player starts doing some other actions, set action to idle and alert
- if (_Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][_Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].BladesSimulacrum].owned === false && _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].isWorking) {
- if (this.action.type !== ActionTypes["Idle"]) {
- let msg = "Your Bladeburner action was cancelled because you started doing something else.";
- if (this.automateEnabled) {
- msg += `
Your automation was disabled as well. You will have to re-enable it through the Bladeburner console`
- this.automateEnabled = false;
- }
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])(msg);
- }
- this.resetAction();
- }
-
- // If the Player has no Stamina, set action to idle
- if (this.stamina <= 0) {
- this.log("Your Bladeburner action was cancelled because your stamina hit 0");
- this.resetAction();
- }
-
- //A 'tick' for this mechanic is one second (= 5 game cycles)
- if (this.storedCycles >= CyclesPerSecond) {
- var seconds = Math.floor(this.storedCycles / CyclesPerSecond);
- seconds = Math.min(seconds, 5); //Max of 5 'ticks'
- this.storedCycles -= seconds * CyclesPerSecond;
-
- //Stamina
- this.calculateMaxStamina();
- this.stamina += (this.calculateStaminaGainPerSecond() * seconds);
- this.stamina = Math.min(this.maxStamina, this.stamina);
-
- //Count increase for contracts/operations
- for (var contractName in this.contracts) {
- if (this.contracts.hasOwnProperty(contractName)) {
- var contract = this.contracts[contractName];
- contract.count += (seconds * contract.countGrowth/ActionCountGrowthPeriod);
- }
- }
- for (var operationName in this.operations) {
- if (this.operations.hasOwnProperty(operationName)) {
- var op = this.operations[operationName];
- op.count += (seconds * op.countGrowth/ActionCountGrowthPeriod);
- }
- }
-
- //Chaos goes down very slowly
- for (var i = 0; i < CityNames.length; ++i) {
- var city = this.cities[CityNames[i]];
- if (!(city instanceof City)) {throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");}
- city.chaos -= (0.0001 * seconds);
- city.chaos = Math.max(0, city.chaos);
- }
-
- //Random Events
- this.randomEventCounter -= seconds;
- if (this.randomEventCounter <= 0) {
- this.randomEvent();
- this.randomEventCounter = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(240, 600);
- }
-
- this.processAction(seconds);
-
- //Automation
- if (this.automateEnabled) {
- // Note: Do NOT set this.action = this.automateActionHigh/Low since it creates a reference
- if (this.stamina <= this.automateThreshLow) {
- if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {
- this.action = new ActionIdentifier({type: this.automateActionLow.type, name: this.automateActionLow.name});
- this.startAction(this.action);
- }
- } else if (this.stamina >= this.automateThreshHigh) {
- if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {
- this.action = new ActionIdentifier({type: this.automateActionHigh.type, name: this.automateActionHigh.name});
- this.startAction(this.action);
- }
- }
- }
-
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner)) {
- this.updateContent();
- }
- }
-}
-
-Bladeburner.prototype.calculateMaxStamina = function() {
- var effAgility = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].agility * this.skillMultipliers.effAgi;
- var maxStamina = (Math.pow(effAgility, 0.8) + this.staminaBonus);
- maxStamina *= this.skillMultipliers.stamina;
- maxStamina *= _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].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__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].agility * this.skillMultipliers.effAgi;
- var maxStaminaBonus = this.maxStamina / MaxStaminaToGainFactor;
- var gain = (StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17);
- return gain * (this.skillMultipliers.stamina * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner_stamina_gain_mult);
-}
-
-Bladeburner.prototype.calculateStaminaPenalty = function() {
- return Math.min(1, this.stamina / (0.5 * this.maxStamina));
-}
-
-Bladeburner.prototype.changeRank = function(change) {
- if (isNaN(change)) {throw new Error("NaN passed into Bladeburner.changeRank()");}
- this.rank += change;
- if (this.rank < 0) {this.rank = 0;}
- this.maxRank = Math.max(this.rank, this.maxRank);
-
- var bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_Faction__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__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].faction_rep_mult * favorBonus);
- }
- }
-
- //Gain skill points. You get 1 every 4 ranks
- var rankNeededForSp = (this.totalSkillPoints+1) * RanksPerSkillPoint;
- if (this.maxRank >= rankNeededForSp) {
- //Calculate how many skill points to gain
- var gainedSkillPoints = Math.floor((this.maxRank - rankNeededForSp) / RanksPerSkillPoint + 1);
- this.skillPoints += gainedSkillPoints;
- this.totalSkillPoints += gainedSkillPoints;
- }
-}
-
-Bladeburner.prototype.getCurrentCity = function() {
- var city = this.cities[this.city];
- if (!(city instanceof City)) {
- throw new Error("Bladeburner.getCurrentCity() did not properly return a City object");
- }
- return city;
-}
-
-Bladeburner.prototype.resetSkillMultipliers = function() {
- this.skillMultipliers = {
- successChanceAll:1,
- successChanceStealth:1,
- successChanceKill:1,
- successChanceContract:1,
- successChanceOperation:1,
- successChanceEstimate:1,
- actionTime:1,
- effHack:1,
- effStr:1,
- effDef:1,
- effDex:1,
- effAgi:1,
- effCha:1,
- effInt:1,
- stamina:1,
- weaponAbility:1,
- gunAbility:1,
- };
-}
-
-Bladeburner.prototype.updateSkillMultipliers = function() {
- this.resetSkillMultipliers();
- for (var skillName in this.skills) {
- if (this.skills.hasOwnProperty(skillName)) {
- var skill = Skills[skillName];
- if (skill == null) {
- throw new Error("Could not find Skill Object for: " + skillName);
- }
- var level = this.skills[skillName];
- if (level == null || level <= 0) {continue;} //Not upgraded
-
- var multiplierNames = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multiplierNames.length; ++i) {
- var multiplierName = multiplierNames[i];
- if (skill[multiplierName] != null && !isNaN(skill[multiplierName])) {
- var value = skill[multiplierName] * level;
- var multiplierValue = 1 + (value / 100);
- if (multiplierName === "actionTime") {
- multiplierValue = 1 - (value / 100);
- }
- this.skillMultipliers[multiplierName] *= multiplierValue;
- }
- }
- }
- }
-}
-
-Bladeburner.prototype.upgradeSkill = function(skill) {
- //This does NOT handle deduction of skill points
- var skillName = skill.name;
- if (this.skills[skillName]) {
- ++this.skills[skillName];
- } else {
- this.skills[skillName] = 1;
- }
- if (isNaN(this.skills[skillName]) || this.skills[skillName] < 0) {
- throw new Error("Level of Skill " + skillName + " is invalid: " + this.skills[skillName]);
- }
- this.updateSkillMultipliers();
-}
-
-Bladeburner.prototype.getActionObject = function(actionId) {
- //Given an ActionIdentifier object, returns the corresponding
- //GeneralAction, Contract, Operation, or BlackOperation object
- switch (actionId.type) {
- case ActionTypes["Contract"]:
- return this.contracts[actionId.name];
- case ActionTypes["Operation"]:
- return this.operations[actionId.name];
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- return BlackOperations[actionId.name];
- case ActionTypes["Training"]:
- return GeneralActions["Training"];
- case ActionTypes["Field Analysis"]:
- return GeneralActions["Field Analysis"];
- case ActionTypes["Recruitment"]:
- return GeneralActions["Recruitment"];
- default:
- return null;
- }
-}
-
-//Sets the player to the "IDLE" action
-Bladeburner.prototype.resetAction = function() {
- this.action = new ActionIdentifier({type:ActionTypes.Idle});
-}
-
-Bladeburner.prototype.startAction = function(actionId) {
- if (actionId == null) {return;}
- this.action = actionId;
- this.actionTimeCurrent = 0;
- switch (actionId.type) {
- case ActionTypes["Idle"]:
- this.actionTimeToComplete = 0;
- break;
- case ActionTypes["Contract"]:
- try {
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error("Failed to get Contract Object for: " + actionId.name);
- }
- if (action.count < 1) {return this.resetAction();}
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
- break;
- case ActionTypes["Operation"]:
- try {
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error ("Failed to get Operation Object for: " + actionId.name);
- }
- if (action.count < 1) {return this.resetAction();}
- if (actionId.name === "Raid" && this.getCurrentCity().commsEst === 0) {return this.resetAction();}
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
- break;
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- try {
- // Safety measure - don't repeat BlackOps that are already done
- if (this.blackops[actionId.name] != null) {
- this.resetAction();
- this.log("Error: Tried to start a Black Operation that had already been completed");
- break;
- }
-
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error("Failed to get BlackOperation object for: " + actionId.name);
- }
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
- break;
- case ActionTypes["Training"]:
- this.actionTimeToComplete = 30;
- break;
- case ActionTypes["Recruitment"]:
- this.actionTimeToComplete = this.getRecruitmentTime();
- break;
- case ActionTypes["FieldAnalysis"]:
- case ActionTypes["Field Analysis"]:
- this.actionTimeToComplete = 30;
- break;
- default:
- throw new Error("Invalid Action Type in Bladeburner.startAction(): " + actionId.type);
- break;
- }
-}
-
-Bladeburner.prototype.processAction = function(seconds) {
- if (this.action.type === ActionTypes["Idle"]) {return;}
- if (this.actionTimeToComplete <= 0) {
- console.log("action.type: " + this.action.type);
- throw new Error("Invalid actionTimeToComplete value: " + this.actionTimeToComplete);
- }
- if (!(this.action instanceof ActionIdentifier)) {
- throw new Error("Bladeburner.action is not an ActionIdentifier Object");
- }
-
- this.actionTimeCurrent += seconds;
- if (this.actionTimeCurrent >= this.actionTimeToComplete) {
- return this.completeAction();
- }
-}
-
-Bladeburner.prototype.completeAction = function() {
- switch (this.action.type) {
- case ActionTypes["Contract"]:
- case ActionTypes["Operation"]:
- try {
- var isOperation = (this.action.type === ActionTypes["Operation"]);
- var action = this.getActionObject(this.action);
- if (action == null) {
- throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
- }
- var difficulty = action.getDifficulty();
- var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
- var rewardMultiplier = Math.pow(action.rewardFac, action.level-1);
-
- //Stamina loss is based on difficulty
- this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
- if (this.stamina < 0) {this.stamina = 0;}
-
- //Process Contract/Operation success/failure
- if (action.attempt(this)) {
- this.gainActionStats(action, true);
- ++action.successes;
- --action.count;
-
- //Earn money for contracts
- var moneyGain = 0;
- if (!isOperation) {
- moneyGain = ContractBaseMoneyGain * rewardMultiplier;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainMoney(moneyGain);
- }
-
- if (isOperation) {
- action.setMaxLevel(OperationSuccessesPerLevel);
- } else {
- action.setMaxLevel(ContractSuccessesPerLevel);
- }
- if (action.rankGain) {
- var gain = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(action.rankGain * rewardMultiplier * _BitNodeMultipliers__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__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(gain, 3) + " rank");
- } else if (!isOperation && this.logging.contracts) {
- this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(gain, 3) + " rank and " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_10__["numeralWrapper"].format(moneyGain, "$0.000a"));
- }
- }
- isOperation ? this.completeOperation(true) : this.completeContract(true);
- } else {
- this.gainActionStats(action, false);
- ++action.failures;
- var loss = 0, damage = 0;
- if (action.rankLoss) {
- loss = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(action.rankLoss * rewardMultiplier, 10);
- this.changeRank(-1 * loss);
- }
- if (action.hpLoss) {
- damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(damage, 10));
- this.hpLost += damage;
- if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].takeDamage(damage)) {
- ++this.numHosp;
- this.moneyLost += (_Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].HospitalCostPerHp * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].max_hp);
- }
- }
- var logLossText = "";
- if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(loss, 3) + " rank.";}
- if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(damage, 0) + " damage.";}
- if (isOperation && this.logging.ops) {
- this.log(action.name + " failed! " + logLossText);
- } else if (!isOperation && this.logging.contracts) {
- this.log(action.name + " contract failed! " + logLossText);
- }
- isOperation ? this.completeOperation(false) : this.completeContract(false);
- }
- if (action.autoLevel) {action.level = action.maxLevel;} //Autolevel
- this.startAction(this.action); //Repeat action
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
- break;
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- try {
- var action = this.getActionObject(this.action);
- if (action == null || !(action instanceof BlackOperation)) {
- throw new Error("Failed to get BlackOperation Object for: " + this.action.name);
- }
- var difficulty = action.getDifficulty();
- var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
-
- //Stamina loss is based on difficulty
- this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
- if (this.stamina < 0) {this.stamina = 0;}
-
- //Team loss variables
- var teamCount = action.teamCount, teamLossMax;
-
- if (action.attempt(this)) {
- this.gainActionStats(action, true);
- action.count = 0;
- this.blackops[action.name] = true;
- var rankGain = 0;
- if (action.rankGain) {
- rankGain = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(action.rankGain * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerRank, 10);
- this.changeRank(rankGain);
- }
- teamLossMax = Math.ceil(teamCount/2);
-
- //Operation Daedalus
- if (action.name === "Operation Daedalus") {
- this.resetAction();
- return Object(_RedPill__WEBPACK_IMPORTED_MODULE_9__[/* hackWorldDaemon */ "a"])(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bitNodeN);
- }
-
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner)) {
- this.createActionAndSkillsContent();
- }
-
- if (this.logging.blackops) {
- this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(rankGain, 1) + " rank");
- }
- } else {
- this.gainActionStats(action, false);
- var rankLoss = 0, damage = 0;
- if (action.rankLoss) {
- rankLoss = Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(action.rankLoss, 10);
- this.changeRank(-1 * rankLoss);
- }
- if (action.hpLoss) {
- damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_16__["addOffset"])(damage, 10));
- if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].takeDamage(damage)) {
- ++this.numHosp;
- this.moneyLost += (_Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].HospitalCostPerHp * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].max_hp);
- }
- }
- teamLossMax = Math.floor(teamCount);
-
- if (this.logging.blackops) {
- this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(rankLoss, 1) + " rank and took " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(damage, 0) + " damage");
- }
- }
-
- this.resetAction(); //Stop regardless of success or fail
-
- //Calculate team lossses
- if (teamCount >= 1) {
- var losses = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, teamLossMax);
- this.teamSize -= losses;
- this.teamLost += losses;
- if (this.logging.blackops) {
- this.log("You lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(losses, 0) + " team members during " + action.name);
- }
- }
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
- break;
- case ActionTypes["Training"]:
- this.stamina -= (0.5 * BaseStaminaLoss);
- var strExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].strength_exp_mult,
- defExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].defense_exp_mult,
- dexExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].dexterity_exp_mult,
- agiExpGain = 30 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].agility_exp_mult,
- staminaGain = 0.04 * this.skillMultipliers.stamina;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainStrengthExp(strExpGain);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainDefenseExp(defExpGain);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainDexterityExp(dexExpGain);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainAgilityExp(agiExpGain);
- this.staminaBonus += (staminaGain);
- if (this.logging.general) {
- this.log("Training completed. Gained: " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(strExpGain, 1) + " str exp, " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(defExpGain, 1) + " def exp, " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(dexExpGain, 1) + " dex exp, " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(agiExpGain, 1) + " agi exp, " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["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__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].hacking_skill, 0.3) +
- 0.04 * Math.pow(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].intelligence, 0.9) +
- 0.02 * Math.pow(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].charisma, 0.3);
- eff *= _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bladeburner_analysis_mult;
- if (isNaN(eff) || eff < 0) {
- throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");
- }
- var hackingExpGain = 20 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].hacking_exp_mult,
- charismaExpGain = 20 * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].charisma_exp_mult;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainHackingExp(hackingExpGain);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainIntelligenceExp(BaseIntGain);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainCharismaExp(charismaExpGain);
- this.changeRank(0.1 * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].BladeburnerRank);
- this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate);
- if (this.logging.general) {
- this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(charismaExpGain, 1) + " charisma exp");
- }
- this.startAction(this.action); //Repeat action
- break;
- case ActionTypes["Recruitment"]:
- var successChance = this.getRecruitmentSuccessChance();
- console.log("Bladeburner recruitment success chance: " + successChance);
- if (Math.random() < successChance) {
- var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainCharismaExp(expGain);
- ++this.teamSize;
- if (this.logging.general) {
- this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(expGain, 1) + " charisma exp");
- }
- } else {
- var expGain = BaseStatGain * this.actionTimeToComplete;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainCharismaExp(expGain);
- if (this.logging.general) {
- this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(expGain, 1) + " charisma exp");
- }
- }
- this.startAction(this.action); //Repeat action
- break;
- default:
- break;
- }
-}
-
-Bladeburner.prototype.completeContract = function(success) {
- if (this.action.type !== ActionTypes.Contract) {
- throw new Error("completeContract() called even though current action is not a Contract");
- }
- var city = this.getCurrentCity();
- if (success) {
- switch (this.action.name) {
- case "Tracking":
- //Increase estimate accuracy by a relatively small amount
- city.improvePopulationEstimateByCount(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(100, 1e3));
- break;
- case "Bounty Hunter":
- city.changePopulationByCount(-1, {estChange:-1});
- city.changeChaosByCount(0.02);
- break;
- case "Retirement":
- city.changePopulationByCount(-1, {estChange:-1});
- city.changeChaosByCount(0.04);
- break;
- default:
- throw new Error("Invalid Action name in completeContract: " + this.action.name);
- }
- }
-}
-
-Bladeburner.prototype.completeOperation = function(success) {
- if (this.action.type !== ActionTypes.Operation) {
- throw new Error("completeOperation() called even though current action is not an Operation");
- }
- var action = this.getActionObject(this.action);
- if (action == null) {
- throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
- }
-
- //Calculate team losses
- var teamCount = action.teamCount, max;
- if (teamCount >= 1) {
- if (success) {
- max = Math.ceil(teamCount/2);
- } else {
- max = Math.floor(teamCount)
- }
- var losses = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(0, max);
- this.teamSize -= losses;
- this.teamLost += losses;
- if (this.logging.ops && losses > 0) {
- this.log("Lost " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(losses, 0) + " team members during this " + action.name);
- }
- }
-
- var city = this.getCurrentCity();
- switch (action.name) {
- case "Investigation":
- if (success) {
- city.improvePopulationEstimateByPercentage(0.4 * this.skillMultipliers.successChanceEstimate);
- if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
- city.improveCommunityEstimate(1);
- }
- } else {
- this.triggerPotentialMigration(this.city, 0.1);
- }
- break;
- case "Undercover Operation":
- if (success) {
- city.improvePopulationEstimateByPercentage(0.8 * this.skillMultipliers.successChanceEstimate);
- if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
- city.improveCommunityEstimate(1);
- }
- } else {
- this.triggerPotentialMigration(this.city, 0.15);
- }
- break;
- case "Sting Operation":
- if (success) {
- city.changePopulationByPercentage(-0.1, {changeEstEqually:true, nonZero:true});
- }
- city.changeChaosByCount(0.1);
- break;
- case "Raid":
- if (success) {
- city.changePopulationByPercentage(-1, {changeEstEqually:true, nonZero:true});
- --city.comms;
- --city.commsEst;
- } else {
- var change = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(-3, -1);
- city.changePopulationByPercentage(change, {nonZero:true});
- }
- city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(1, 5));
- break;
- case "Stealth Retirement Operation":
- if (success) {
- city.changePopulationByPercentage(-0.5, {changeEstEqually:true,nonZero:true});
- }
- city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(-3, -1));
- break;
- case "Assassination":
- if (success) {
- city.changePopulationByCount(-1, {estChange:-1});
- }
- city.changeChaosByPercentage(Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(-5, 5));
- break;
- default:
- throw new Error("Invalid Action name in completeOperation: " + this.action.name);
- }
-}
-
-Bladeburner.prototype.getRecruitmentTime = function() {
- var effCharisma = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].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__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].charisma, 0.45) / (this.teamSize + 1);
-}
-
-//Process stat gains from Contracts, Operations, and Black Operations
-//@action(Action obj) - Derived action class
-//@success(bool) - Whether action was successful
-Bladeburner.prototype.gainActionStats = function(action, success) {
- var difficulty = action.getDifficulty();
-
- //Gain multiplier based on difficulty. If this changes then the
- //same variable calculated in completeAction() needs to change too
- var difficultyMult = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
-
- var time = this.actionTimeToComplete;
- var successMult = success ? 1 : 0.5;
-
- var unweightedGain = time * BaseStatGain * successMult * difficultyMult;
- var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult;
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainHackingExp(unweightedGain * action.weights.hack * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].hacking_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainStrengthExp(unweightedGain * action.weights.str * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].strength_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainDefenseExp(unweightedGain * action.weights.def * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].defense_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainDexterityExp(unweightedGain * action.weights.dex * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].dexterity_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainAgilityExp(unweightedGain * action.weights.agi * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].agility_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].gainCharismaExp(unweightedGain * action.weights.cha * _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].charisma_exp_mult);
- _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(0, 5)];
- while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(0, 5)];
- }
- var destCity = this.cities[destCityName];
-
- if (!(sourceCity instanceof City) || !(destCity instanceof City)) {
- throw new Error("sourceCity/destCity was not a City object in Bladeburner.randomEvent()");
- }
-
- if (chance <= 0.05) {
- //New Synthoid Community, 5%
- ++sourceCity.comms;
- var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that a new Synthoid community was formed in a city");
- }
- } else if (chance <= 0.1) {
- //Synthoid Community Migration, 5%
- if (sourceCity.comms <= 0) {
- //If no comms in source city, then instead trigger a new Synthoid community event
- ++sourceCity.comms;
- var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that a new Synthoid community was formed in a city");
- }
- } else {
- --sourceCity.comms;
- ++destCity.comms;
-
- //Change pop
- var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- destCity.pop += count;
-
- if (this.logging.events) {
- this.log("Intelligence indicates that a Synthoid community migrated from " + sourceCityName + " to some other city");
- }
- }
- } else if (chance <= 0.3) {
- //New Synthoids (non community), 20%
- var percentage = Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(8, 24) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
- }
- } else if (chance <= 0.5) {
- //Synthoid migration (non community) 20%
- this.triggerMigration(sourceCityName);
- if (this.logging.events) {
- this.log("Intelligence indicates that a large number of Synthoids migrated from " + sourceCityName + " to some other city");
- }
- } else if (chance <= 0.7) {
- //Synthoid Riots (+chaos), 20%
- sourceCity.chaos += 1;
- sourceCity.chaos *= (1 + Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(5, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- if (this.logging.events) {
- this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
- }
- }
- //20% chance of nothing happening
-}
-
-Bladeburner.prototype.triggerPotentialMigration = function(sourceCityName, chance) {
- if (chance == null || isNaN(chance)) {
- console.log("ERROR: Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()");
- }
- if (chance > 1) {chance /= 100;}
- if (Math.random() < chance) {this.triggerMigration(sourceCityName);}
-}
-
-Bladeburner.prototype.triggerMigration = function(sourceCityName) {
- var destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(0, 5)];
- while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["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_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(3, 15) / 100;
-
- if (rand < 0.05 && sourceCity.comms > 0) { //5% chance for community migration
- percentage *= Object(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_24__["getRandomInt"])(2, 4); //Migration increases population change
- --sourceCity.comms;
- ++destCity.comms;
- }
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- destCity.pop += count;
-}
-
-var DomElems = {};
-
-Bladeburner.prototype.initializeDomElementRefs = function() {
- DomElems = {
- bladeburnerDiv: null,
-
- //Main Divs
- overviewConsoleParentDiv: null,
-
- overviewDiv: null, //Overview of stats that stays fixed on left
- actionAndSkillsDiv: null, //Panel for different sections (contracts, ops, skills)
- currentTab: null, //Contracts, Operations, Black Ops, Skills
-
- consoleDiv: null,
- consoleTable: null,
- consoleInputRow: null, //tr
- consoleInputCell: null, //td
- consoleInputHeader: null, //"> "
- consoleInput: null, //Actual input element
-
- //Overview Content
- overviewRank: null,
- overviewStamina: null,
- overviewStaminaHelpTip: null,
- overviewGen1: null, //Stamina Penalty, Team, Hospitalized stats, current city
- overviewEstPop: null,
- overviewEstPopHelpTip: null,
- overviewEstComms: null,
- overviewChaos: null,
- overviewSkillPoints: null,
- overviewBonusTime: null,
- overviewAugSuccessMult: null,
- overviewAugMaxStaminaMult: null,
- overviewAugStaminaGainMult: null,
- overviewAugAnalysisMult: null,
-
- //Actions and Skills Content
- actionsAndSkillsDesc: null,
- actionsAndSkillsList: null, //ul element of all UI elements in this panel
- generalActions: {},
- contracts: {},
- operations: {},
- blackops: {},
- skills: {},
- skillPointsDisplay: null,
- };
-}
-
-Bladeburner.prototype.createContent = function() {
- DomElems.bladeburnerDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- id:"bladeburner-container", position:"fixed", class:"generic-menupage-container",
- });
-
- //Parent Div for Overview and Console
- DomElems.overviewConsoleParentDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- height:"60%", display:"block", position:"relative",
- });
-
- //Overview and Action/Skill pane
- DomElems.overviewDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- width:"30%", display:"inline-block", border:"1px solid white",
- });
-
- DomElems.actionAndSkillsDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- height:"60%", width:"70%", display:"block",
- border:"1px solid white", margin:"6px", padding:"6px",
- });
-
- DomElems.currentTab = "general";
-
- this.createOverviewContent();
- this.createActionAndSkillsContent();
-
- //Console
- DomElems.consoleDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-console-div",
- clickListener:()=>{
- if (DomElems.consoleInput instanceof Element) {
- DomElems.consoleInput.focus();
- }
- return false;
- }
- });
- DomElems.consoleTable = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("table", {class:"bladeburner-console-table"});
- DomElems.consoleInputRow = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"});
- DomElems.consoleInputCell = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("td", {class:"bladeburner-console-input-cell"});
- DomElems.consoleInputHeader = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("pre", {innerText:"> "});
- DomElems.consoleInput = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("input", {
- type:"text", class:"bladeburner-console-input", tabIndex:1,
- onfocus:()=>{DomElems.consoleInput.value = DomElems.consoleInput.value}
- });
-
- DomElems.consoleInputCell.appendChild(DomElems.consoleInputHeader);
- DomElems.consoleInputCell.appendChild(DomElems.consoleInput);
- DomElems.consoleInputRow.appendChild(DomElems.consoleInputCell);
- DomElems.consoleTable.appendChild(DomElems.consoleInputRow);
- DomElems.consoleDiv.appendChild(DomElems.consoleTable);
-
- DomElems.overviewConsoleParentDiv.appendChild(DomElems.overviewDiv);
- DomElems.overviewConsoleParentDiv.appendChild(DomElems.consoleDiv);
- DomElems.bladeburnerDiv.appendChild(DomElems.overviewConsoleParentDiv);
- DomElems.bladeburnerDiv.appendChild(DomElems.actionAndSkillsDiv);
-
- document.getElementById("entire-game-container").appendChild(DomElems.bladeburnerDiv);
-
- if (this.consoleLogs.length === 0) {
- this.postToConsole("Bladeburner Console BETA");
- this.postToConsole("Type 'help' to see console commands");
- } else {
- for (let i = 0; i < this.consoleLogs.length; ++i) {
- this.postToConsole(this.consoleLogs[i], false);
- }
- }
-
- DomElems.consoleInput.focus();
-}
-
-Bladeburner.prototype.clearContent = function() {
- if (DomElems.bladeburnerDiv instanceof Element) {
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__["removeChildrenFromElement"])(DomElems.bladeburnerDiv);
- Object(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_26__["removeElement"])(DomElems.bladeburnerDiv);
- }
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems);
- this.initializeDomElementRefs();
-}
-
-Bladeburner.prototype.createOverviewContent = function() {
- if (DomElems.overviewDiv == null) {
- throw new Error("Bladeburner.createOverviewContent() called with DomElems.overviewDiv = null");
- }
-
- DomElems.overviewRank = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- innerText:"Rank: ",
- display:"inline-block",
- tooltip:"Your rank within the Bladeburner division",
- });
-
- DomElems.overviewStamina = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- display:"inline-block",
- });
-
- DomElems.overviewStaminaHelpTip = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"help-tip",
- innerText:"?",
- clickListener: ()=> {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["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.
" +
- "Once your " +
- "stamina falls below 50% of its max value, it begins to negatively " +
- "affect the success rate of your contracts/operations. This penalty " +
- "is shown in the overview panel. If the penalty is 15%, then this means " +
- "your success rate would be multipled by 85% (100 - 15).
" +
- "Your max stamina and stamina gain rate can also be increased by " +
- "training, or through skills and Augmentation upgrades.");
- },
- });
-
- DomElems.overviewGen1 = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- display:"block",
- });
-
- DomElems.overviewEstPop = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- innerText:"?", class:"help-tip",
- clickListener:()=>{
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["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.
" +
- "Therefore, it is important that this Synthoid population estimate " +
- "is accurate so that you have a better idea of your " +
- "success rate for contracts/operations. Certain " +
- "actions will increase the accuracy of your population " +
- "estimate.
" +
- "The Synthoid populations of cities can change due to your " +
- "actions or random events. If random events occur, they will " +
- "be logged in the Bladeburner Console.");
- }
- });
-
- DomElems.overviewEstComms = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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.overviewBonusTime = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- innerText: "Bonus time: ",
- display: "inline-block",
- tooltip: "You gain bonus time while offline or when the game is inactive (e.g. when the tab is throttled by browser). " +
- "Bonus time makes the Bladeburner mechanic progress faster, up to 5x the normal speed."
- });
- DomElems.overviewSkillPoints = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {display:"block"});
-
-
- DomElems.overviewAugSuccessMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {display:"block"});
- DomElems.overviewAugMaxStaminaMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {display:"block"});
- DomElems.overviewAugStaminaGainMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {display:"block"});
- DomElems.overviewAugAnalysisMult = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {display:"block"});
-
-
- DomElems.overviewDiv.appendChild(DomElems.overviewRank);
- Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["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_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewEstComms);
- Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewChaos);
- Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["appendLineBreaks"])(DomElems.overviewDiv, 2);
- DomElems.overviewDiv.appendChild(DomElems.overviewBonusTime);
- DomElems.overviewDiv.appendChild(DomElems.overviewSkillPoints);
- Object(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["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_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_17__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", { //Cancel Button
- innerText:"Cancel", class:"a-link-button",
- clickListener:()=>{
- Object(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_27__["removeElementById"])(popupId); return false;
- }
- }))
- popupArguments.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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 " +
- "your location in the game otherwise",
- }));
- for (var i = 0; i < CityNames.length; ++i) {
- (function(inst, i) {
- popupArguments.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_27__["removeElementById"])(popupId);
- inst.updateOverviewContent();
- return false;
- }
- }));
- })(this, i);
- }
- Object(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_20__["createPopup"])(popupId, popupArguments);
- }
- }));
-
- //Faction button
- const bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_Faction__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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["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__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionContent();
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_6__[/* displayFactionContent */ "a"])(bladeburnersFactionName);
- } else {
- if (this.rank >= RankNeededForFaction) {
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_6__[/* joinFaction */ "c"])(bladeburnerFac);
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction");
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__["removeChildrenFromElement"])(DomElems.overviewDiv);
- this.createOverviewContent();
- } else {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!")
- }
- }
- return false;
- }
- }));
- }
-
- DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("br"));
- DomElems.overviewDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("br"));
-
- this.updateOverviewContent();
-}
-
-Bladeburner.prototype.createActionAndSkillsContent = function() {
- if (DomElems.currentTab == null) {DomElems.currentTab = "general";}
-
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv);
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems.generalActions);
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems.contracts);
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems.operations);
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems.blackops);
- Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_18__["clearObject"])(DomElems.skills);
-
- //Navigation buttons
- var currTab = DomElems.currentTab.toLowerCase();
- var buttons = ["General", "Contracts", "Operations", "BlackOps", "Skills"];
- for (var i = 0; i < buttons.length; ++i) {
- (function(buttons, i, inst, currTab) {
-
- DomElems.actionAndSkillsDiv.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
- innerText:buttons[i],
- class:currTab === buttons[i].toLowerCase() ? "bladeburner-nav-button-inactive" : "bladeburner-nav-button",
- clickListener:()=>{
- DomElems.currentTab = buttons[i].toLowerCase();
- inst.createActionAndSkillsContent();
- return false;
- }
- }));
- }) (buttons, i, this, currTab);
- }
-
- //General info/description for each action
- DomElems.actionsAndSkillsDesc = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- display:"block", margin:"4px", padding:"4px"
- });
-
- //List for actions/skills
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList);
- DomElems.actionsAndSkillsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("ul");
-
- switch(currTab) {
- case "general":
- this.createGeneralActionsContent();
- break;
- case "contracts":
- this.createContractsContent();
- break;
- case "operations":
- this.createOperationsContent();
- break;
- case "blackops":
- this.createBlackOpsContent();
- break;
- case "skills":
- this.createSkillsContent();
- break;
- default:
- throw new Error("Invalid value for DomElems.currentTab in Bladeburner.createActionAndSkillsContent");
- }
- this.updateContent();
-
- DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsDesc);
- DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsList);
-}
-
-Bladeburner.prototype.createGeneralActionsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createGeneralActionsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerText =
- "These are generic actions that will assist you in your Bladeburner " +
- "duties. They will not affect your Bladeburner rank in any way."
-
- for (var actionName in GeneralActions) {
- if (GeneralActions.hasOwnProperty(actionName)) {
- DomElems.generalActions[actionName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-action", name:actionName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.generalActions[actionName]);
- }
- }
-}
-
-Bladeburner.prototype.createContractsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createContractsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Complete contracts in order to increase your Bladeburner rank and earn money. " +
- "Failing a contract will cause you to lose HP, which can lead to hospitalization.
" +
- "You can unlock higher-level contracts by successfully completing them. " +
- "Higher-level contracts are more difficult, but grant more rank, experience, and money.";
-
- for (var contractName in this.contracts) {
- if (this.contracts.hasOwnProperty(contractName)) {
- DomElems.contracts[contractName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-action", name:contractName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.contracts[contractName]);
- }
- }
-}
-
-Bladeburner.prototype.createOperationsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createOperationsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Carry out operations for the Bladeburner division. " +
- "Failing an operation will reduce your Bladeburner rank. It will also " +
- "cause you to lose HP, which can lead to hospitalization. In general, " +
- "operations are harder and more punishing than contracts, " +
- "but are also more rewarding.
" +
- "Operations can affect the chaos level and Synthoid population of your " +
- "current city. The exact effects vary between different Operations.
" +
- "For operations, you can use a team. You must first recruit team members. " +
- "Having a larger team will improves your chances of success.
" +
- "You can unlock higher-level operations by successfully completing them. " +
- "Higher-level operations are more difficult, but grant more rank and experience.";
-
- for (var operationName in this.operations) {
- if (this.operations.hasOwnProperty(operationName)) {
- DomElems.operations[operationName] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-action", name:operationName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.operations[operationName]);
- }
- }
-}
-
-Bladeburner.prototype.createBlackOpsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createBlackOpsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Black Operations (Black Ops) are special, one-time covert operations. " +
- "Each Black Op must be unlocked successively by completing " +
- "the one before it.
" +
- "Your ultimate goal to climb through the ranks of Bladeburners is to complete " +
- "all of the Black Ops.
" +
- "Like normal operations, you may use a team for Black Ops. Failing " +
- "a black op will incur heavy HP and rank losses.";
-
- //Put Black Operations in sequence of required rank
- var blackops = [];
- for (var blackopName in BlackOperations) {
- if (BlackOperations.hasOwnProperty(blackopName)) {
- blackops.push(BlackOperations[blackopName]);
- }
- }
- blackops.sort(function(a, b) {
- return (a.reqdRank - b.reqdRank);
- });
-
- for (var i = 0; i < blackops.length; ++i) {
- DomElems.blackops[blackops[i].name] = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-action", name:blackops[i].name
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.blackops[blackops[i].name]);
- if (this.blackops[[blackops[i].name]] == null) {break;} //Can't be found in completed blackops
- }
-}
-
-Bladeburner.prototype.createSkillsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createSkillsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- //Display Current multipliers
- DomElems.actionsAndSkillsDesc.innerHTML =
- "You will gain one skill point every " + RanksPerSkillPoint + " ranks.
" +
- "Note that when upgrading a skill, the benefit for that skill is additive. " +
- "However, the effects of different skills with each other is multiplicative.
"
- var multKeys = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multKeys.length; ++i) {
- var mult = this.skillMultipliers[multKeys[i]];
- if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(mult, 3);
- switch(multKeys[i]) {
- case "successChanceAll":
- DomElems.actionsAndSkillsDesc.innerHTML += "Total Success Chance: x" + mult + " ";
- break;
- case "successChanceStealth":
- DomElems.actionsAndSkillsDesc.innerHTML += "Stealth Success Chance: x" + mult + " ";
- break;
- case "successChanceKill":
- DomElems.actionsAndSkillsDesc.innerHTML += "Retirement Success Chance: x" + mult + " ";
- break;
- case "successChanceContract":
- DomElems.actionsAndSkillsDesc.innerHTML += "Contract Success Chance: x" + mult + " ";
- break;
- case "successChanceOperation":
- DomElems.actionsAndSkillsDesc.innerHTML += "Operation Success Chance: x" + mult + " ";
- break;
- case "successChanceEstimate":
- DomElems.actionsAndSkillsDesc.innerHTML += "Synthoid Data Estimate: x" + mult + " ";
- break;
- case "actionTime":
- DomElems.actionsAndSkillsDesc.innerHTML += "Action Time: x" + mult + " ";
- break;
- case "effHack":
- DomElems.actionsAndSkillsDesc.innerHTML += "Hacking Skill: x" + mult + " ";
- break;
- case "effStr":
- DomElems.actionsAndSkillsDesc.innerHTML += "Strength: x" + mult + " ";
- break;
- case "effDef":
- DomElems.actionsAndSkillsDesc.innerHTML += "Defense: x" + mult + " ";
- break;
- case "effDex":
- DomElems.actionsAndSkillsDesc.innerHTML += "Dexterity: x" + mult + " ";
- break;
- case "effAgi":
- DomElems.actionsAndSkillsDesc.innerHTML += "Agility: x" + mult + " ";
- break;
- case "effCha":
- DomElems.actionsAndSkillsDesc.innerHTML += "Charisma: x" + mult + " ";
- break;
- case "effInt":
- DomElems.actionsAndSkillsDesc.innerHTML += "Intelligence: x" + mult + " ";
- break;
- case "stamina":
- DomElems.actionsAndSkillsDesc.innerHTML += "Stamina: x" + mult + " ";
- break;
- case "weaponAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML +=
- break;
- case "gunAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML
- break;
- default:
- console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
- break;
- }
- }
- }
-
- //Skill Points
- DomElems.skillPointsDisplay = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
- innerHTML:" Skill Points: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["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_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
- class:"bladeburner-action", name:skillName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.skills[skillName]);
- }
- }
-}
-
-Bladeburner.prototype.updateContent = function() {
- this.updateOverviewContent();
- this.updateActionAndSkillsContent();
-}
-
-Bladeburner.prototype.updateOverviewContent = function() {
- if (!_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner)) {return;}
- DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(this.rank, 2);
- DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(this.maxStamina, 3);
- DomElems.overviewGen1.innerHTML =
- "Stamina Penalty: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%
');
-
- if (DomElems.consoleTable.childNodes.length > MaxConsoleEntries) {
- DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
- }
-
- this.updateConsoleScroll();
-}
-
-Bladeburner.prototype.updateConsoleScroll = function() {
- DomElems.consoleDiv.scrollTop = DomElems.consoleDiv.scrollHeight;
-}
-
-Bladeburner.prototype.resetConsoleInput = function() {
- DomElems.consoleInput.value = "";
-}
-
-Bladeburner.prototype.clearConsole = function() {
- while (DomElems.consoleTable.childNodes.length > 1) {
- DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
- }
-
- this.consoleLogs.length = 0;
-}
-
-Bladeburner.prototype.log = function(input) {
- //Adds a timestamp and then just calls postToConsole
- this.postToConsole(`[${Object(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_25__["getTimestamp"])()}] ${input}`);
-}
-
-//Handles a potential series of commands (comm1; comm2; comm3;)
-Bladeburner.prototype.executeConsoleCommands = function(commands) {
- try {
- //Console History
- if (this.consoleHistory[this.consoleHistory.length-1] != commands) {
- this.consoleHistory.push(commands);
- if (this.consoleHistory.length > 50) {
- this.consoleHistory.splice(0, 1);
- }
- }
- consoleHistoryIndex = this.consoleHistory.length;
-
- var arrayOfCommands = commands.split(";");
- for (var i = 0; i < arrayOfCommands.length; ++i) {
- this.executeConsoleCommand(arrayOfCommands[i]);
- }
- } catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_22__[/* exceptionAlert */ "a"])(e);
- }
-}
-
-//A single command
-Bladeburner.prototype.executeConsoleCommand = function(command) {
- command = command.trim();
- command = command.replace(/\s\s+/g, ' '); //Replace all whitespace w/ a single space
-
- var args = this.parseCommandArguments(command);
- if (args.length <= 0) {return;} //Log an error?
-
- switch(args[0].toLowerCase()) {
- case "automate":
- this.executeAutomateConsoleCommand(args);
- break;
- case "clear":
- case "cls":
- this.clearConsole();
- break;
- case "help":
- this.executeHelpConsoleCommand(args);
- break;
- case "log":
- this.executeLogConsoleCommand(args);
- break;
- case "skill":
- this.executeSkillConsoleCommand(args);
- break;
- case "start":
- this.executeStartConsoleCommand(args);
- break;
- case "stop":
- this.resetAction();
- break;
- default:
- this.postToConsole("Invalid console command");
- break;
- }
-}
-
-Bladeburner.prototype.parseCommandArguments = function(command) {
- //Returns an array with command and its arguments in each index.
- //e.g. skill "blade's intuition" foo returns [skill, blade's intuition, foo]
- //The input to this fn will be trimmed and will have all whitespace replaced w/ a single space
- var args = [];
- var start = 0, i = 0;
- while (i < command.length) {
- var c = command.charAt(i);
- if (c === '"') {
- var endQuote = command.indexOf('"', i+1);
- if (endQuote !== -1 && (endQuote === command.length-1 || command.charAt(endQuote+1) === " ")) {
- args.push(command.substr(i+1, (endQuote - i - 1)));
- if (endQuote === command.length-1) {
- start = i = endQuote+1;
- } else {
- start = i = endQuote+2; //Skip the space
- }
- continue;
- }
- } else if (c === " ") {
- args.push(command.substr(start, i-start));
- start = i+1;
- }
- ++i;
- }
- if (start !== i) {args.push(command.substr(start, i-start));}
- console.log("Bladeburner.parseCommandArguments returned: " + args);
- return args;
-}
-
-Bladeburner.prototype.executeAutomateConsoleCommand = function(args) {
- if (args.length !== 2 && args.length !== 4) {
- this.postToConsole("Invalid use of 'automate' command: automate [var] [val] [hi/low]. Use 'help automate' for more info");
- return;
- }
-
- //Enable/Disable
- if (args.length === 2) {
- var flag = args[1];
- if (flag.toLowerCase() === "status") {
- this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled"));
- if (this.automateEnabled) {
- this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(this.automateThreshLow, 0) +
- ", you will automatically switch to " + this.automateActionLow.name +
- ". When your stamina recovers to " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " +
- "switch to " + this.automateActionHigh.name + ".");
- }
-
- } else if (flag.toLowerCase().includes("en")) {
- if (!(this.automateActionLow instanceof ActionIdentifier) ||
- !(this.automateActionHigh instanceof ActionIdentifier)) {
- return this.log("Failed to enable automation. Actions were not set");
- }
- this.automateEnabled = true;
- this.log("Bladeburner automation enabled");
- } else if (flag.toLowerCase().includes("d")) {
- this.automateEnabled = false;
- this.log("Bladeburner automation disabled");
- } else {
- this.log("Invalid argument for 'automate' console command: " + args[1]);
- }
- return;
- }
-
- //Set variables
- if (args.length === 4) {
- var variable = args[1], val = args[2];
-
- var highLow = false; //True for high, false for low
- if (args[3].toLowerCase().includes("hi")) {highLow = true;}
-
- switch (variable) {
- case "general":
- case "gen":
- if (GeneralActions[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes[val], name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid action name specified: " + val);
- }
- break;
- case "contract":
- case "contracts":
- if (this.contracts[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes.Contract, name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid contract name specified: " + val);
- }
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- if (this.operations[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes.Operation, name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid Operation name specified: " + val);
- }
- break;
- case "stamina":
- if (isNaN(val)) {
- this.postToConsole("Invalid value specified for stamina threshold (must be numeric): " + val);
- } else {
- if (highLow) {
- this.automateThreshHigh = Number(val);
- } else {
- this.automateThreshLow = Number(val);
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") stamina threshold set to " + val);
- }
- break;
- default:
- break;
- }
-
- return;
- }
-}
-
-Bladeburner.prototype.executeHelpConsoleCommand = function(args) {
- if (args.length === 1) {
- this.postToConsole(consoleHelpText.helpList);
- } else {
- for (var i = 1; i < args.length; ++i) {
- var commandText = consoleHelpText[args[i]];
- if (commandText != null) {
- this.postToConsole(commandText);
- this.postToConsole(" ");
- }
- }
- }
-}
-
-Bladeburner.prototype.executeLogConsoleCommand = function(args) {
- if (args.length < 3) {
- this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]");
- this.postToConsole("Use 'help log' for more details and examples");
- return;
- }
-
- var flag = true;
- if (args[1].toLowerCase().includes("d")) {flag = false;} //d for disable
-
- switch (args[2].toLowerCase()) {
- case "general":
- case "gen":
- this.logging.general = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for general actions");
- break;
- case "contract":
- case "contracts":
- this.logging.contracts = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for Contracts");
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- this.logging.ops = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for Operations");
- break;
- case "blackops":
- case "blackop":
- case "black operations":
- case "black operation":
- this.logging.blackops = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for BlackOps");
- break;
- case "event":
- case "events":
- this.logging.events = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for events");
- break;
- case "all":
- this.logging.general = flag;
- this.logging.contracts = flag;
- this.logging.ops = flag;
- this.logging.blackops = flag;
- this.logging.events = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for everything");
- break;
- default:
- this.postToConsole("Invalid action/event type specified: " + args[2]);
- this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]");
- break;
- }
-}
-
-Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
- switch (args.length) {
- case 1:
- //Display Skill Help Command
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- break;
- case 2:
- if (args[1].toLowerCase() === "list") {
- //List all skills and their level
- this.postToConsole("Skills: ");
- var skillNames = Object.keys(Skills);
- for(var i = 0; i < skillNames.length; ++i) {
- 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__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(level, 0));
- }
- this.postToConsole(" ");
- this.postToConsole("Effects: ");
- var multKeys = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multKeys.length; ++i) {
- var mult = this.skillMultipliers[multKeys[i]];
- if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(mult, 3);
- switch(multKeys[i]) {
- case "successChanceAll":
- this.postToConsole("Total Success Chance: x" + mult);
- break;
- case "successChanceStealth":
- this.postToConsole("Stealth Success Chance: x" + mult);
- break;
- case "successChanceKill":
- this.postToConsole("Retirement Success Chance: x" + mult);
- break;
- case "successChanceContract":
- this.postToConsole("Contract Success Chance: x" + mult);
- break;
- case "successChanceOperation":
- this.postToConsole("Operation Success Chance: x" + mult);
- break;
- case "successChanceEstimate":
- this.postToConsole("Synthoid Data Estimate: x" + mult);
- break;
- case "actionTime":
- this.postToConsole("Action Time: x" + mult);
- break;
- case "effHack":
- this.postToConsole("Hacking Skill: x" + mult);
- break;
- case "effStr":
- this.postToConsole("Strength: x" + mult);
- break;
- case "effDef":
- this.postToConsole("Defense: x" + mult);
- break;
- case "effDex":
- this.postToConsole("Dexterity: x" + mult);
- break;
- case "effAgi":
- this.postToConsole("Agility: x" + mult);
- break;
- case "effCha":
- this.postToConsole("Charisma: x" + mult);
- break;
- case "effInt":
- this.postToConsole("Intelligence: x" + mult);
- break;
- case "stamina":
- this.postToConsole("Stamina: x" + mult);
- break;
- case "weaponAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML +=
- break;
- case "gunAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML
- break;
- default:
- console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
- break;
- }
- }
- }
- } else {
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- }
- break;
- case 3:
- var skillName = args[2];
- var skill = Skills[skillName];
- if (skill == null || !(skill instanceof Skill)) {
- 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__WEBPACK_IMPORTED_MODULE_23__["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.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__WEBPACK_IMPORTED_MODULE_23__["formatNumber"])(pointCost, 0));
- }
-
- } else {
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- }
- break;
- default:
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- break;
- }
-}
-
-Bladeburner.prototype.executeStartConsoleCommand = function(args) {
- if (args.length !== 3) {
- this.postToConsole("Invalid usage of 'start' console command: start [type] [name]");
- this.postToConsole("Use 'help start' for more info");
- return;
- }
- var name = args[2];
- switch (args[1].toLowerCase()) {
- case "general":
- case "gen":
- if (GeneralActions[name] != null) {
- this.action.type = ActionTypes[name];
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid action name specified: " + args[2]);
- }
- break;
- case "contract":
- case "contracts":
- if (this.contracts[name] != null) {
- this.action.type = ActionTypes.Contract;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid contract name specified: " + args[2]);
- }
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- if (this.operations[name] != null) {
- this.action.type = ActionTypes.Operation;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid Operation name specified: " + args[2]);
- }
- break;
- case "blackops":
- case "blackop":
- case "black operations":
- case "black operation":
- if (BlackOperations[name] != null) {
- this.action.type = ActionTypes.BlackOperation;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid BlackOp name specified: " + args[2]);
- }
- break;
- default:
- this.postToConsole("Invalid action/event type specified: " + args[1]);
- this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]");
- break;
- }
-}
-
-Bladeburner.prototype.getActionIdFromTypeAndName = function(type="", name="") {
- if (type === "" || name === "") {return null;}
- var action = new ActionIdentifier();
- var convertedType = type.toLowerCase().trim();
- var convertedName = name.toLowerCase().trim();
- switch (convertedType) {
- case "contract":
- case "contracts":
- case "contr":
- action.type = ActionTypes["Contract"];
- if (this.contracts.hasOwnProperty(name)) {
- action.name = name;
- return action;
- } else {
- return null;
- }
- break;
- case "operation":
- case "operations":
- case "op":
- case "ops":
- action.type = ActionTypes["Operation"];
- if (this.operations.hasOwnProperty(name)) {
- action.name = name;
- return action;
- } else {
- return null;
- }
- break;
- case "blackoperation":
- case "black operation":
- case "black operations":
- case "black op":
- case "black ops":
- case "blackop":
- case "blackops":
- action.type = ActionTypes["BlackOp"];
- if (BlackOperations.hasOwnProperty(name)) {
- action.name = name;
- return action;
- } else {
- return null;
- }
- break;
- case "general":
- case "general action":
- case "gen":
- break;
- default:
- return null;
- }
-
- if (convertedType.startsWith("gen")) {
- switch (convertedName) {
- case "training":
- action.type = ActionTypes["Training"];
- action.name = "Training";
- break;
- case "recruitment":
- case "recruit":
- action.type = ActionTypes["Recruitment"];
- action.name = "Recruitment";
- break;
- case "field analysis":
- case "fieldanalysis":
- action.type = ActionTypes["Field Analysis"];
- action.name = "Field Analysis";
- break;
- default:
- return null;
- }
- return action;
- }
-}
-
-Bladeburner.prototype.getTypeAndNameFromActionId = function(actionId) {
- var res = {};
- let types = Object.keys(ActionTypes);
- for (let i = 0; i < types.length; ++i) {
- if (actionId.type === ActionTypes[types[i]]) {
- res.type = types[i];
- break;
- }
- }
- if (res.type == null) {res.type = "Idle";}
-
- res.name = actionId.name != null ? actionId.name : "Idle";
- return res;
-}
-
-Bladeburner.prototype.getContractNamesNetscriptFn = function() {
- return Object.keys(this.contracts);
-}
-
-Bladeburner.prototype.getOperationNamesNetscriptFn = function() {
- return Object.keys(this.operations);
-}
-
-Bladeburner.prototype.getBlackOpNamesNetscriptFn = function() {
- return Object.keys(BlackOperations);
-}
-
-Bladeburner.prototype.getGeneralActionNamesNetscriptFn = function() {
- return Object.keys(GeneralActions);
-}
-
-Bladeburner.prototype.getSkillNamesNetscriptFn = function() {
- return Object.keys(Skills);
-}
-
-Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript) {
- var errorLogText = "ERROR: bladeburner.startAction() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return false;
- }
-
- // Special logic for Black Ops
- if (actionId.type === ActionTypes["BlackOp"]) {
- // Can't start a BlackOp if you don't have the required rank
- let action = this.getActionObject(actionId);
- if (action.reqdRank > this.rank) {
- workerScript.log(`Failed to start Black Op ${actionId.name} due to insufficient rank`);
- return false;
- }
-
- // Can't start a BlackOp if its already been done
- if (this.blackops[actionId.name] != null) {
- workerScript.log(`Failed to start Black Op ${actionId.name} because its already been completed`);
- return false;
- }
-
- // Can't start a BlackOp if you haven't done the one before it
- var blackops = [];
- for (const nm in BlackOperations) {
- if (BlackOperations.hasOwnProperty(nm)) {
- blackops.push(nm);
- }
- }
- blackops.sort(function(a, b) {
- return (BlackOperations[a].reqdRank - BlackOperations[b].reqdRank); // Sort black ops in intended order
- });
-
- let i = blackops.indexOf(actionId.name);
- if (i === -1) {
- workerScript.log("ERROR: Invalid Black Operation name passed into bladeburner.startAction(). Note that this name is case-sensitive & whitespace-sensitive");
- return false;
- }
-
- if (i > 0 && this.blackops[blackops[i-1]] == null) {
- workerScript.log(`ERROR: Cannot attempt Black Operation ${actionId.name} because you have not done the preceding one`);
- return false;
- }
- }
-
- try {
- this.startAction(actionId);
- if (workerScript.shouldLog("startAction")) {
- workerScript.scriptRef.log("Starting bladeburner action with type " + type + " and name " + name);
- }
- return true;
- } catch(e) {
- this.resetAction();
- workerScript.scriptRef.log("ERROR: bladeburner.startAction() failed to start action of type " + type + " due to invalid name: " + name +
- "Note that this name is case-sensitive and whitespace-sensitive");
- return false;
- }
-}
-
-Bladeburner.prototype.getActionTimeNetscriptFn = function(type, name, workerScript) {
- var errorLogText = "ERROR: bladeburner.getActionTime() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var actionObj = this.getActionObject(actionId);
- if (actionObj == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- switch (actionId.type) {
- case ActionTypes["Contract"]:
- case ActionTypes["Operation"]:
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- return actionObj.getActionTime(this);
- case ActionTypes["Training"]:
- case ActionTypes["Field Analysis"]:
- case ActionTypes["FieldAnalysis"]:
- return 30;
- case ActionTypes["Recruitment"]:
- return this.getRecruitmentTime();
- default:
- workerScript.log(errorLogText);
- return -1;
- }
-}
-
-Bladeburner.prototype.getActionEstimatedSuccessChanceNetscriptFn = function(type, name, workerScript) {
- var errorLogText = "ERROR: bladeburner.getActionEstimatedSuccessChance() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var actionObj = this.getActionObject(actionId);
- if (actionObj == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- switch (actionId.type) {
- case ActionTypes["Contract"]:
- case ActionTypes["Operation"]:
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- return actionObj.getSuccessChance(this, {est:true});
- case ActionTypes["Training"]:
- case ActionTypes["Field Analysis"]:
- case ActionTypes["FieldAnalysis"]:
- return 1;
- case ActionTypes["Recruitment"]:
- return this.getRecruitmentSuccessChance();
- default:
- workerScript.log(errorLogText);
- return -1;
- }
-}
-
-Bladeburner.prototype.getActionCountRemainingNetscriptFn = function(type, name, workerScript) {
- var errorLogText = "ERROR: bladeburner.getActionCountRemaining() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var actionObj = this.getActionObject(actionId);
- if (actionObj == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- switch (actionId.type) {
- case ActionTypes["Contract"]:
- case ActionTypes["Operation"]:
- return Math.floor( actionObj.count );
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- if (this.blackops[name] != null) {
- return 0;
- } else {
- return 1;
- }
- case ActionTypes["Training"]:
- case ActionTypes["Field Analysis"]:
- case ActionTypes["FieldAnalysis"]:
- return Infinity;
- default:
- workerScript.log(errorLogText);
- return -1;
- }
-}
-
-Bladeburner.prototype.getSkillLevelNetscriptFn = function(skillName, workerScript) {
- var errorLogText = "ERROR: bladeburner.getSkillLevel() failed due to an invalid skill specified: " +
- skillName + ". Note that the name of the skill is case-sensitive";
-
- if (skillName === "") {
- return -1;
- }
-
- if (!Skills.hasOwnProperty(skillName)) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- if (this.skills[skillName] == null) {
- return 0;
- } else {
- return this.skills[skillName];
- }
-}
-
-Bladeburner.prototype.getSkillUpgradeCostNetscriptFn = function(skillName, workerScript) {
- var errorLogText = "ERROR: bladeburner.getSkillUpgradeCostNetscriptFn() failed due to an invalid skill specified: " +
- skillName + ". Note that the name of the skill is case-sensitive";
-
- if (skillName === "") {
- return -1;
- }
-
- if (!Skills.hasOwnProperty(skillName)) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var skill = Skills[skillName];
- if (this.skills[skillName] == null) {
- return skill.calculateCost(0);
- } else {
- return skill.calculateCost(this.skills[skillName]);
- }
-}
-
-Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript) {
- var errorLogText = "ERROR: bladeburner.upgradeSkill() failed due to an invalid skill specified: " +
- skillName + ". Note that the name of the skill is case-sensitive";
- if (!Skills.hasOwnProperty(skillName)) {
- workerScript.log(errorLogText);
- return false;
- }
-
- var skill = Skills[skillName];
- var currentLevel = 0;
- if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
- currentLevel = this.skills[skillName];
- }
- var cost = skill.calculateCost(currentLevel);
-
- if(skill.maxLvl && currentLevel >= skill.maxLvl) {
- if (workerScript.shouldLog("upgradeSkill")) {
- workerScript.log(`bladeburner.upgradeSkill() failed because ${skillName} is already maxed`);
- }
- return false;
- }
-
- if (this.skillPoints < cost) {
- if (workerScript.shouldLog("upgradeSkill")) {
- workerScript.log("bladeburner.upgradeSkill() failed because you do not have enough " +
- "skill points to upgrade " + skillName + " (You have " +
- this.skillPoints + ", you need " + cost + ")");
- }
- return false;
- }
-
- this.skillPoints -= cost;
- this.upgradeSkill(skill);
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner) && DomElems.currentTab.toLowerCase() === "skills") {
- this.createActionAndSkillsContent();
- }
- if (workerScript.shouldLog("upgradeSkill")) {
- workerScript.log(skillName + " successfully upgraded to level " + this.skills[skillName]);
- }
- return true;
-}
-
-Bladeburner.prototype.getTeamSizeNetscriptFn = function(type, name, workerScript) {
- if (type === "" && name === "") {
- return this.teamSize;
- }
-
- var errorLogText = "ERROR: bladeburner.getTeamSize() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
-
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var actionObj = this.getActionObject(actionId);
- if (actionObj == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- if (actionId.type === ActionTypes["Operation"] ||
- actionId.type === ActionTypes["BlackOp"] ||
- actionId.type === ActionTypes["BlackOperation"]) {
- return actionObj.teamCount;
- } else {
- return 0;
- }
-}
-
-Bladeburner.prototype.setTeamSizeNetscriptFn = function(type, name, size, workerScript) {
- var errorLogText = "ERROR: bladeburner.setTeamSize() failed due to an invalid action specified. " +
- "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
- "name of the operation is case-sensitive.";
- var actionId = this.getActionIdFromTypeAndName(type, name);
- if (actionId == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- if (actionId.type !== ActionTypes["Operation"] &&
- actionId.type !== ActionTypes["BlackOp"] &&
- actionId.type !== ActionTypes["BlackOperation"]) {
- workerScript.log("ERROR: bladeburner.setTeamSize() failed. This function " +
- "only works for Operations and BlackOps");
- return -1;
- }
-
- var actionObj = this.getActionObject(actionId);
- if (actionObj == null) {
- workerScript.log(errorLogText);
- return -1;
- }
-
- var sanitizedSize = Math.round(size);
- if (isNaN(sanitizedSize)) {
- workerScript.log("ERROR: bladeburner.setTeamSize() failed due to an invalid 'size' argument: " + size);
- return -1;
- }
- if (this.teamSize < sanitizedSize) {sanitizedSize = this.teamSize;}
- actionObj.teamCount = sanitizedSize;
- if (workerScript.shouldLog("setTeamSize")) {
- workerScript.log("Team size for " + name + " set to " + sanitizedSize);
- }
- return sanitizedSize;
-}
-
-Bladeburner.prototype.getCityEstimatedPopulationNetscriptFn = function(cityName, workerScript) {
- if (!this.cities.hasOwnProperty(cityName)) {
- workerScript.log("ERROR: bladeburner.getCityEstimatedPopulation() failed because the specified " +
- "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
- return -1;
- }
- return this.cities[cityName].popEst;
-}
-
-Bladeburner.prototype.getCityEstimatedCommunitiesNetscriptFn = function(cityName, workerScript) {
- if (!this.cities.hasOwnProperty(cityName)) {
- workerScript.log("ERROR: bladeburner.getCityEstimatedCommunities() failed because the specified " +
- "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
- return -1;
- }
- return this.cities[cityName].commsEst;
-}
-
-Bladeburner.prototype.getCityChaosNetscriptFn = function(cityName, workerScript) {
- if (!this.cities.hasOwnProperty(cityName)) {
- workerScript.log("ERROR: bladeburner.getCityChaos() failed because the specified " +
- "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
- return -1;
- }
- return this.cities[cityName].chaos;
-}
-
-Bladeburner.prototype.switchCityNetscriptFn = function(cityName, workerScript) {
- if (!this.cities.hasOwnProperty(cityName)) {
- workerScript.log("ERROR: bladeburner.switchCity() failed because the specified " +
- "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
- return false;
- }
- this.city = cityName;
- return true;
-}
-
-Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) {
- var bladeburnerFac = _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["Bladeburners"];
- if (bladeburnerFac.isMember) {
- return true;
- } else if (this.rank >= RankNeededForFaction) {
- Object(_Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_6__[/* joinFaction */ "c"])(bladeburnerFac);
- if (workerScript.shouldLog("joinBladeburnerFaction")) {
- workerScript.log("Joined Bladeburners Faction");
- }
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_21__["Page"].Bladeburner)) {
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_14__["removeChildrenFromElement"])(DomElems.overviewDiv);
- this.createOverviewContent();
- }
- return true;
- } else {
- if (workerScript.shouldLog("joinBladeburnerFaction")) {
- workerScript.log("Failed to join Bladeburners Faction because " +
- "you do not have the required " + RankNeededForFaction + " rank");
- }
- return false;
- }
-}
-
-Bladeburner.prototype.toJSON = function() {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_toJSON"])("Bladeburner", this);
-}
-Bladeburner.fromJSON = function(value) {
- return Object(_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Generic_fromJSON"])(Bladeburner, value.data);
-}
-_utils_JSONReviver__WEBPACK_IMPORTED_MODULE_15__["Reviver"].constructors.Bladeburner = Bladeburner;
-
-//This initialized Bladeburner-related data that is NOT saved/loaded
-// eg: Skill Objects, BLack Operations
-//Any data that is saved/loaded should go in Bladeburner object
-// eg: contracts, operations
-function initBladeburner() {
- //Skills
- Skills[SkillNames.BladesIntuition] = new Skill({
- name:SkillNames.BladesIntuition,
- desc:"Each level of this skill increases your success chance " +
- "for all Contracts, Operations, and BlackOps by 3%",
- baseCost:5, costInc:2,
- successChanceAll:3
- });
- Skills[SkillNames.Reaper] = new Skill({
- name:SkillNames.Reaper,
- desc:"Each level of this skill increases your " +
- "effective combat stats for Bladeburner actions by 3%",
- baseCost:3, costInc:2,
- effStr:3, effDef:3, effDex:3, effAgi:3
- });
- Skills[SkillNames.Cloak] = new Skill({
- name:SkillNames.Cloak,
- desc:"Each level of this skill increases your " +
- "success chance in stealth-related Contracts, Operations, and BlackOps by 5.5%",
- baseCost:3, costInc:1,
- successChanceStealth:5.5
- });
-
- //TODO Marksman
- //TODO Weapon Proficiency
-
- Skills[SkillNames.Overclock] = new Skill({
- name:SkillNames.Overclock,
- desc:"Each level of this skill decreases the time it takes " +
- "to attempt a Contract, Operation, and BlackOp by 1% (Max Level: 95)",
- baseCost:5, costInc:1.1, maxLvl:95,
- actionTime:1
- });
- Skills[SkillNames.EvasiveSystem] = new Skill({
- name:SkillNames.EvasiveSystem,
- desc:"Each level of this skill increases your effective " +
- "dexterity and agility for Bladeburner actions by 5%",
- baseCost:2, costInc: 1,
- effDex:5, effAgi:5
- });
- Skills[SkillNames.ShortCircuit] = new Skill({
- name:SkillNames.ShortCircuit,
- desc:"Each level of this skill increases your success chance " +
- "in Contracts, Operations, and BlackOps that involve retirement by 5.5%",
- baseCost:3, costInc:2,
- successChanceKill:5.5
- });
- Skills[SkillNames.DigitalObserver] = new Skill({
- name:SkillNames.DigitalObserver,
- desc:"Each level of this skill increases your success chance in " +
- "all Operations and BlackOps by 4%",
- baseCost:5, costInc:2,
- successChanceOperation:4
- });
- Skills[SkillNames.Datamancer] = new Skill({
- name:SkillNames.Datamancer,
- desc:"Each level of this skill increases your effectiveness in " +
- "synthoid population analysis and investigation by 5%. " +
- "This affects all actions that can potentially increase " +
- "the accuracy of your synthoid population/community estimates.",
- baseCost:3,costInc:1,
- successChanceEstimate:5
- });
- Skills[SkillNames.Tracer] = new Skill({
- name:SkillNames.Tracer,
- desc:"Each level of this skill increases your success chance in " +
- "all Contracts by 4%",
- baseCost:3, costInc:2,
- successChanceContract:4
- });
- Skills[SkillNames.CybersEdge] = new Skill({
- name:SkillNames.CybersEdge,
- desc:"Each level of this skill increases your max " +
- "stamina by 2%",
- baseCost:1, costInc:3,
- stamina:2
- });
-
- //General Actions
- var actionName = "Training";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Improve your abilities at the Bladeburner unit's specialized training " +
- "center. Doing this gives experience for all combat stats and also " +
- "increases your max stamina."
- });
-
- var actionName = "Field Analysis";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Mine and analyze Synthoid-related data. This improve the " +
- "Bladeburner's unit intelligence on Synthoid locations and " +
- "activities. Completing this action will improve the accuracy " +
- "of your Synthoid population estimated in the current city.
" +
- "Does NOT require stamina."
- });
-
- var actionName = "Recruitment";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Attempt to recruit members for your Bladeburner team. These members " +
- "can help you conduct operations.
" +
- "Does NOT require stamina."
- });
-
- //Black Operations
- BlackOperations["Operation Typhoon"] = new BlackOperation({
- name:"Operation Typhoon",
- desc:"Obadiah Zenyatta is the leader of a RedWater PMC. It has long " +
- "been known among the intelligence community that Zenyatta, along " +
- "with the rest of the PMC, is a Synthoid.
" +
- "The goal of Operation Typhoon is to find and eliminate " +
- "Zenyatta and RedWater by any means necessary. After the task " +
- "is completed, the actions must be covered up from the general public.",
- baseDifficulty:2000, reqdRank:2.5e3,
- rankGain:50, rankLoss:10, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true
- });
- BlackOperations["Operation Zero"] = new BlackOperation({
- name:"Operation Zero",
- desc:"AeroCorp is one of the world's largest defense contractors. " +
- "It's leader, Steve Watataki, is thought to be a supporter of " +
- "Synthoid rights. He must be removed.
" +
- "The goal of Operation Zero is to covertly infiltrate AeroCorp and " +
- "uncover any incriminating evidence or " +
- "information against Watataki that will cause him to be removed " +
- "from his position at AeroCorp. Incriminating evidence can be " +
- "fabricated as a last resort. Be warned that AeroCorp has some of " +
- "the most advanced security measures in the world.",
- baseDifficulty:2500, reqdRank:5e3,
- rankGain:60, rankLoss:15, hpLoss:50,
- weights:{hack:0.2,str:0.15,def:0.15,dex:0.2,agi:0.2,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.75},
- isStealth:true
- });
- BlackOperations["Operation X"] = new BlackOperation({
- name:"Operation X",
- desc:"We have recently discovered an underground publication " +
- "group called Samizdat. Even though most of their publications " +
- "are nonsensical conspiracy theories, the average human is " +
- "gullible enough to believe them. Many of their works discuss " +
- "Synthoids and pose a threat to society. The publications are spreading " +
- "rapidly in China and other Eastern countries.
" +
- "Samizdat has done a good job of keeping hidden and anonymous. " +
- "However, we've just received intelligence that their base of " +
- "operations is in Ishima's underground sewer systems. Your task is to " +
- "investigate the sewer systems, and eliminate Samizdat. They must " +
- "never publish anything again.",
- baseDifficulty:3000, reqdRank:7.5e3,
- rankGain:75, rankLoss:15, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true
- });
- BlackOperations["Operation Titan"] = new BlackOperation({
- name:"Operation Titan",
- desc:"Several months ago Titan Laboratories' Bioengineering department " +
- "was infiltrated by Synthoids. As far as we know, Titan Laboratories' " +
- "management has no knowledge about this. We don't know what the " +
- "Synthoids are up to, but the research that they could " +
- "be conducting using Titan Laboraties' vast resources is potentially " +
- "very dangerous.
" +
- "Your goal is to enter and destroy the Bioengineering department's " +
- "facility in Aevum. The task is not just to retire the Synthoids there, but " +
- "also to destroy any information or research at the facility that " +
- "is relevant to the Synthoids and their goals.",
- baseDifficulty:4000, reqdRank:10e3,
- rankGain:100, rankLoss:20, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true
- });
- BlackOperations["Operation Ares"] = new BlackOperation({
- name:"Operation Ares",
- desc:"One of our undercover agents, Agent Carter, has informed us of a " +
- "massive weapons deal going down in Dubai between rogue Russian " +
- "militants and a radical Synthoid community. These weapons are next-gen " +
- "plasma and energy weapons. It is critical for the safety of humanity " +
- "that this deal does not happen.
" +
- "Your task is to intercept the deal. Leave no survivors.",
- baseDifficulty:5000, reqdRank:12.5e3,
- rankGain:125, rankLoss:20, hpLoss:200,
- weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Archangel"] = new BlackOperation({
- name:"Operation Archangel",
- desc:"Our analysts have discovered that the popular Red Rabbit brothel in " +
- "Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence " +
- "suggests that the profit from this brothel is used to fund a large " +
- "black market arms trafficking operation.
" +
- "The goal of this operation is to take out the leaders that are running " +
- "the Red Rabbit brothel. Try to limit the number of other casualties, " +
- "but do what you must to complete the mission.",
- baseDifficulty:7500, reqdRank:15e3,
- rankGain:200, rankLoss:20, hpLoss:25,
- weights:{hack:0,str:0.2,def:0.2,dex:0.3,agi:0.3,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Juggernaut"] = new BlackOperation({
- name:"Operation Juggernaut",
- desc:"The CIA has just encountered a new security threat. A new " +
- "criminal group, lead by a shadowy operative who calls himself " +
- "Juggernaut, has been smuggling drugs and weapons (including " +
- "suspected bioweapons) into Sector-12. We also have reason " +
- "to believe the tried to break into one of Universal Energy's " +
- "facilities in order to cause a city-wide blackout. The CIA " +
- "suspects that Juggernaut is a heavily-augmented Synthoid, and " +
- "have thus enlisted our help.
" +
- "Your mission is to eradicate Juggernaut and his followers.",
- baseDifficulty:10e3, reqdRank:20e3,
- rankGain:300, rankLoss:40, hpLoss:300,
- weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Red Dragon"] = new BlackOperation({
- name:"Operation Red Dragon",
- desc:"The Tetrads criminal organization is suspected of " +
- "reverse-engineering the MK-VI Synthoid design. We believe " +
- "they altered and possibly improved the design and began " +
- "manufacturing their own Synthoid models in order to bolster " +
- "their criminal activities.
" +
- "Your task is to infiltrate and destroy the Tetrads' base of operations " +
- "in Los Angeles. Intelligence tells us that their base houses " +
- "one of their Synthoid manufacturing units.",
- baseDifficulty:12.5e3, reqdRank:25e3,
- rankGain:500, rankLoss:50, hpLoss:500,
- weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation K"] = new BlackOperation({
- name:"Operation K",
- desc:"CODE RED SITUATION. Our intelligence tells us that VitaLife " +
- "has discovered a new android cloning technology. This technology " +
- "is supposedly capable of cloning Synthoid, not only physically " +
- "but also their advanced AI modules. We do not believe that " +
- "VitaLife is trying to use this technology illegally or " +
- "maliciously, but if any Synthoids were able to infiltrate the " +
- "corporation and take advantage of this technology then the " +
- "results would be catastrophic.
" +
- "We do not have the power or jurisdiction to shutdown this down " +
- "through legal or political means, so we must resort to a covert " +
- "operation. Your goal is to destroy this technology and eliminate" +
- "anyone who was involved in its creation.",
- baseDifficulty:15e3, reqdRank:30e3,
- rankGain:750, rankLoss:60, hpLoss:1000,
- weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Deckard"] = new BlackOperation({
- name:"Operation Deckard",
- desc:"Despite your success in eliminating VitaLife's new android-replicating " +
- "technology in Operation K, we've discovered that a small group of " +
- "MK-VI Synthoids were able to make off with the schematics and design " +
- "of the technology before the Operation. It is almost a certainty that " +
- "these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising." +
- "The goal of Operation Deckard is to hunt down these Synthoids and retire " +
- "them. I don't need to tell you how critical this mission is.",
- baseDifficulty:20e3, reqdRank:40e3,
- rankGain:1e3, rankLoss:75, hpLoss:200,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Tyrell"] = new BlackOperation({
- name:"Operation Tyrell",
- desc:"A week ago Blade Industries reported a small break-in at one " +
- "of their Aevum Augmentation storage facitilities. We figured out " +
- "that The Dark Army was behind the heist, and didn't think any more " +
- "of it. However, we've just discovered that several known MK-VI Synthoids " +
- "were part of that break-in group.
" +
- "We cannot have Synthoids upgrading their already-enhanced abilities " +
- "with Augmentations. Your task is to hunt down the associated Dark Army " +
- "members and eliminate them.",
- baseDifficulty:25e3, reqdRank:50e3,
- rankGain:1.5e3, rankLoss:100, hpLoss:500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true,
- });
- BlackOperations["Operation Wallace"] = new BlackOperation({
- name:"Operation Wallace",
- desc:"Based on information gathered from Operation Tyrell, we've discovered " +
- "that The Dark Army was well aware that there were Synthoids amongst " +
- "their ranks. Even worse, we believe that The Dark Army is working " +
- "together with other criminal organizations such as The Syndicate and " +
- "that they are planning some sort of large-scale takeover of multiple major " +
- "cities, most notably Aevum. We suspect that Synthoids have infiltrated " +
- "the ranks of these criminal factions and are trying to stage another " +
- "Synthoid uprising.
" +
- "The best way to deal with this is to prevent it before it even happens. " +
- "The goal of Operation Wallace is to destroy the Dark Army and " +
- "Syndicate factions in Aevum immediately. Leave no survivors.",
- baseDifficulty:30e3, reqdRank:75e3,
- rankGain:2e3, rankLoss:150, hpLoss:1500,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Shoulder of Orion"] = new BlackOperation({
- name:"Operation Shoulder of Orion",
- desc:"China's Solaris Space Systems is secretly launching the first " +
- "manned spacecraft in over a decade using Synthoids. We believe " +
- "China is trying to establish the first off-world colonies.
" +
- "The mission is to prevent this launch without instigating an " +
- "international conflict. When you accept this mission you will be " +
- "officially disavowed by the NSA and the national government until after you " +
- "successfully return. In the event of failure, all of the operation's " +
- "team members must not let themselves be captured alive.",
- baseDifficulty:35e3, reqdRank:100e3,
- rankGain:2.5e3, rankLoss:500, hpLoss:1500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isStealth:true
- });
- BlackOperations["Operation Hyron"] = new BlackOperation({
- name:"Operation Hyron",
- desc:"Our intelligence tells us that Fulcrum Technologies is developing " +
- "a quantum supercomputer using human brains as core " +
- "processors. This supercomputer " +
- "is rumored to be able to store vast amounts of data and " +
- "perform computations unmatched by any other supercomputer on the " +
- "planet. But more importantly, the use of organic human brains " +
- "means that the supercomputer may be able to reason abstractly " +
- "and become self-aware.
" +
- "I do not need to remind you why sentient-level AIs pose a serious " +
- "thread to all of mankind.
" +
- "The research for this project is being conducted at one of Fulcrum " +
- "Technologies secret facilities in Aevum, codenamed 'Alpha Ranch'. " +
- "Infiltrate the compound, delete and destroy the work, and then find and kill the " +
- "project lead.",
- baseDifficulty:40e3, reqdRank:125e3,
- rankGain:3e3, rankLoss:1e3, hpLoss:500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true
- });
- BlackOperations["Operation Morpheus"] = new BlackOperation({
- name:"Operation Morpheus",
- desc:"DreamSense Technologies is an advertising company that uses " +
- "special technology to transmit their ads into the peoples " +
- "dreams and subconcious. They do this using broadcast transmitter " +
- "towers. Based on information from our agents and informants in " +
- "Chonqging, we have reason to believe that one of the broadcast " +
- "towers there has been compromised by Synthoids and is being used " +
- "to spread pro-Synthoid propaganda.
" +
- "The mission is to destroy this broadcast tower. Speed and " +
- "stealth are of the upmost important for this.",
- baseDifficulty:45e3, reqdRank:150e3,
- rankGain:4e3, rankLoss:1e3, hpLoss:100,
- weights:{hack:0.05,str:0.15,def:0.15,dex:0.3,agi:0.3,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isStealth:true
- });
- BlackOperations["Operation Ion Storm"] = new BlackOperation({
- name:"Operation Ion Storm",
- desc:"Our analysts have uncovered a gathering of MK-VI Synthoids " +
- "that have taken up residence in the Sector-12 Slums. We " +
- "don't know if they are rogue Synthoids from the Uprising, " +
- "but we do know that they have been stockpiling " +
- "weapons, money, and other resources. This makes them dangerous.
" +
- "This is a full-scale assault operation to find and retire all of these " +
- "Synthoids in the Sector-12 Slums.",
- baseDifficulty:50e3, reqdRank:175e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:5000,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Annihilus"] = new BlackOperation({
- name:"Operation Annihilus",
- desc:"Our superiors have ordered us to eradicate everything and everyone " +
- "in an underground facility located in Aevum. They tell us " +
- "that the facility houses many dangerous Synthoids and " +
- "belongs to a terrorist organization called " +
- "'The Covenant'. We have no prior intelligence about this " +
- "organization, so you are going in blind.",
- baseDifficulty:55e3, reqdRank:200e3,
- rankGain:7.5e3, rankLoss:1e3, hpLoss:10e3,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Ultron"] = new BlackOperation({
- name:"Operation Ultron",
- desc:"OmniTek Incorporated, the original designer and manufacturer of Synthoids, " +
- "has notified us of a malfunction in their AI design. This malfunction, " +
- "when triggered, causes MK-VI Synthoids to become radicalized and seek out " +
- "the destruction of humanity. They say that this bug affects all MK-VI Synthoids, " +
- "not just the rogue ones from the Uprising.
" +
- "OmniTek has also told us they they believe someone has triggered this " +
- "malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids " +
- "are now amassing in Volhaven to form a terrorist group called Ultron.
" +
- "Intelligence suggests Ultron is heavily armed and that their members are " +
- "augmented. We believe Ultron is making moves to take control of " +
- "and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).
" +
- "Your task is to find and destroy Ultron.",
- baseDifficulty:60e3, reqdRank:250e3,
- rankGain:10e3, rankLoss:2e3, hpLoss:10e3,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,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.75},
- isKill:true
- });
- BlackOperations["Operation Centurion"] = new BlackOperation({
- name:"Operation Centurion",
- desc:"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)
" +
- "Throughout all of humanity's history, we have relied on " +
- "technology to survive, conquer, and progress. Its advancement became our primary goal. " +
- "And at the peak of human civilization technology turned into " +
- "power. Global, absolute power.
" +
- "It seems that the universe is not without a sense of irony.
" +
- "This is a bug, please report to game developer with this " +
- "message as well as details about how to reproduce the bug.
" +
- "If you want to be safe, I suggest refreshing the game WITHOUT saving so that your " +
- "safe doesn't get corrupted");
-}
-
-
-
-
-/***/ }),
-/* 45 */
+/* 48 */
/*!**********************!*\
!*** ./src/Alias.js ***!
\**********************/
@@ -24936,7 +22413,7 @@ function exceptionAlert(e) {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return substituteAliases; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return loadAliases; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return loadGlobalAliases; });
-/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ui/postToTerminal */ 7);
+/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ui/postToTerminal */ 8);
/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ui_postToTerminal__WEBPACK_IMPORTED_MODULE_0__);
@@ -25054,7 +22531,7 @@ function substituteAliases(origCommand) {
/***/ }),
-/* 46 */
+/* 49 */
/*!***************************************!*\
!*** ./src/Faction/FactionHelpers.js ***!
\***************************************/
@@ -25069,40 +22546,47 @@ function substituteAliases(origCommand) {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return displayFactionContent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return processPassiveFactionRepGain; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return purchaseAugmentation; });
-/* harmony import */ var _Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Augmentations */ 21);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Constants */ 1);
-/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../engine */ 9);
-/* harmony import */ var _Faction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction */ 57);
-/* harmony import */ var _Faction__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Faction__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _Factions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Factions */ 14);
-/* harmony import */ var _Factions__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Factions__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _FactionInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FactionInfo */ 115);
-/* harmony import */ var _FactionInfo__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_FactionInfo__WEBPACK_IMPORTED_MODULE_6__);
-/* harmony import */ var _Location__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Location */ 92);
-/* harmony import */ var _Missions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Missions */ 56);
-/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Player */ 0);
-/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SettingEnums */ 73);
-/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_SettingEnums__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Settings */ 18);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../ui/navigationTracking */ 12);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../ui/numeralFormat */ 4);
-/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../utils/DialogBox */ 8);
-/* harmony import */ var _utils_FactionInvitationBox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/FactionInvitationBox */ 136);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 30);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/uiHelpers/createElement */ 2);
-/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/StringHelperFunctions */ 3);
-/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/YesNoBox */ 19);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__);
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Augmentation/Augmentations */ 13);
+/* harmony import */ var _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Augmentation/PlayerOwnedAugmentation */ 98);
+/* harmony import */ var _Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Augmentation/data/AugmentationNames */ 6);
+/* harmony import */ var _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Constants */ 1);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../engine */ 11);
+/* harmony import */ var _Faction__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Faction */ 58);
+/* harmony import */ var _Faction__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Faction__WEBPACK_IMPORTED_MODULE_6__);
+/* harmony import */ var _Factions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Factions */ 16);
+/* harmony import */ var _Factions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Factions__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _FactionInfo__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./FactionInfo */ 123);
+/* harmony import */ var _FactionInfo__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_FactionInfo__WEBPACK_IMPORTED_MODULE_8__);
+/* harmony import */ var _Location__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Location */ 97);
+/* harmony import */ var _Missions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Missions */ 60);
+/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Player */ 0);
+/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../SettingEnums */ 77);
+/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_SettingEnums__WEBPACK_IMPORTED_MODULE_12__);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Settings */ 20);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_13__);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../ui/navigationTracking */ 14);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_14__);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../ui/numeralFormat */ 4);
+/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15__);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/DialogBox */ 9);
+/* harmony import */ var _utils_FactionInvitationBox__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/FactionInvitationBox */ 149);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 32);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/uiHelpers/createElement */ 2);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../utils/StringHelperFunctions */ 3);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../utils/YesNoBox */ 21);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__);
+
+
@@ -25127,50 +22611,50 @@ function substituteAliases(origCommand) {
function inviteToFaction(faction) {
- if (_Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].SuppressFactionInvites) {
+ if (_Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].SuppressFactionInvites) {
faction.alreadyInvited = true;
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].factionInvitations.push(faction.name);
- if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_12__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_12__["Page"].Factions)) {
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionsContent();
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].factionInvitations.push(faction.name);
+ if (_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_14__["routing"].isOn(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_14__["Page"].Factions)) {
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadFactionsContent();
}
} else {
- Object(_utils_FactionInvitationBox__WEBPACK_IMPORTED_MODULE_15__[/* factionInvitationBoxCreate */ "a"])(faction);
+ Object(_utils_FactionInvitationBox__WEBPACK_IMPORTED_MODULE_17__[/* factionInvitationBoxCreate */ "a"])(faction);
}
}
function joinFaction(faction) {
faction.isMember = true;
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].factions.push(faction.name);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].factions.push(faction.name);
const factionInfo = faction.getInfo();
//Determine what factions you are banned from now that you have joined this faction
for(const i in factionInfo.enemies) {
const enemy = factionInfo.enemies[i];
- if (_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][enemy] instanceof _Faction__WEBPACK_IMPORTED_MODULE_4__["Faction"]) {
- _Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][enemy].isBanned = true;
+ if (_Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"][enemy] instanceof _Faction__WEBPACK_IMPORTED_MODULE_6__["Faction"]) {
+ _Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"][enemy].isBanned = true;
}
}
}
//Displays the HTML content for a specific faction
function displayFactionContent(factionName) {
- var faction = _Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][factionName];
+ var faction = _Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"][factionName];
if (faction == null) {
throw new Error("Invalid factionName passed into displayFactionContent: " + factionName);
}
var factionInfo = faction.getInfo();
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__["removeChildrenFromElement"])(_engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__["removeChildrenFromElement"])(_engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionContent);
var elements = [];
//Header and faction info
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("h1", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("h1", {
innerText:factionName
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("pre", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("pre", {
innerHTML:"" + factionInfo.infoText + ""
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"---------------",
}));
@@ -25178,27 +22662,27 @@ function displayFactionContent(factionName) {
var favorGain = faction.getFavorGain();
if (favorGain.length != 2) {favorGain = 0;}
favorGain = favorGain[0];
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
- innerText: "Reputation: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(faction.playerReputation, 4),
- tooltip:"You will earn " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(favorGain, 0) +
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
+ innerText: "Reputation: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(faction.playerReputation, 4),
+ tooltip:"You will earn " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(favorGain, 0) +
" faction favor upon resetting after installing an Augmentation"
}))
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"---------------",
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
- innerText:"Faction Favor: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(faction.favor, 0),
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
+ innerText:"Faction Favor: " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(faction.favor, 0),
tooltip:"Faction favor increases the rate at which " +
"you earn reputation for this faction by 1% per favor. Faction favor " +
"is gained whenever you reset after installing an Augmentation. The amount of " +
"favor you gain depends on how much reputation you have with the faction"
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"---------------",
}));
//Faction Work Description Text
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("pre", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("pre", {
id:"faction-work-description-text",
innerText:"Perform work/carry out assignments for your faction to help further its cause! By doing so " +
"you will earn reputation for your faction. You will also gain reputation passively over time, " +
@@ -25206,25 +22690,25 @@ function displayFactionContent(factionName) {
"through this faction, which are powerful upgrades that enhance your abilities. Note that you cannot " +
"use your terminal or create scripts when you are performing a task!"
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("br"));
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("br"));
//Hacking Mission Option
- var hackMissionDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var hackMissionDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-hack-mission-div", class:"faction-work-div",
});
- var hackMissionDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var hackMissionDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
hackMissionDiv.appendChild(hackMissionDivWrapper);
- hackMissionDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ hackMissionDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Hacking Mission",
clickListener:()=>{
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadMissionContent();
- var mission = new _Missions__WEBPACK_IMPORTED_MODULE_8__[/* HackingMission */ "a"](faction.playerReputation, faction);
- Object(_Missions__WEBPACK_IMPORTED_MODULE_8__[/* setInMission */ "d"])(true, mission); //Sets inMission flag to true
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadMissionContent();
+ var mission = new _Missions__WEBPACK_IMPORTED_MODULE_10__[/* HackingMission */ "a"](faction.playerReputation, faction);
+ Object(_Missions__WEBPACK_IMPORTED_MODULE_10__[/* setInMission */ "d"])(true, mission); //Sets inMission flag to true
mission.init();
return false;
}
}));
- hackMissionDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ hackMissionDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"Attempt a hacking mission for your faction. " +
"A mission is a mini game that, if won, earns you " +
"significant reputation with this faction. (Recommended hacking level: 200+)"
@@ -25232,19 +22716,19 @@ function displayFactionContent(factionName) {
elements.push(hackMissionDiv);
//Hacking Contracts Option
- var hackDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var hackDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-hack-div", class:"faction-work-div",
});
- var hackDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var hackDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
hackDiv.appendChild(hackDivWrapper);
- hackDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ hackDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Hacking Contracts",
clickListener:()=>{
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].startFactionHackWork(faction);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].startFactionHackWork(faction);
return false;
}
}));
- hackDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ hackDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"Complete hacking contracts for your faction. " +
"Your effectiveness, which determines how much " +
"reputation you gain for this faction, is based on your hacking skill. " +
@@ -25253,19 +22737,19 @@ function displayFactionContent(factionName) {
elements.push(hackDiv);
//Field Work Option
- var fieldWorkDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var fieldWorkDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-fieldwork-div", class:"faction-work-div"
});
- var fieldWorkDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var fieldWorkDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
fieldWorkDiv.appendChild(fieldWorkDivWrapper);
- fieldWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ fieldWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Field Work",
clickListener:()=>{
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].startFactionFieldWork(faction);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].startFactionFieldWork(faction);
return false;
}
}));
- fieldWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ fieldWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"Carry out field missions for your faction. " +
"Your effectiveness, which determines how much " +
"reputation you gain for this faction, is based on all of your stats. " +
@@ -25274,19 +22758,19 @@ function displayFactionContent(factionName) {
elements.push(fieldWorkDiv);
//Security Work Option
- var securityWorkDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var securityWorkDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-securitywork-div", class:"faction-work-div"
});
- var securityWorkDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var securityWorkDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
securityWorkDiv.appendChild(securityWorkDivWrapper);
- securityWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ securityWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Security Work",
clickListener:()=>{
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].startFactionSecurityWork(faction);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].startFactionSecurityWork(faction);
return false;
}
}));
- securityWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ securityWorkDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"Serve in a security detail for your faction. " +
"Your effectiveness, which determines how much " +
"reputation you gain for this faction, is based on your combat stats. " +
@@ -25295,15 +22779,15 @@ function displayFactionContent(factionName) {
elements.push(securityWorkDiv);
//Donate for reputation
- var donateDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var donateDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-donate-div", class:"faction-work-div"
});
- var donateDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var donateDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
donateDiv.appendChild(donateDivWrapper);
- var donateRepGain = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ var donateRepGain = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"This donation will result in 0.000 reputation gain"
});
- var donateAmountInput = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("input", {
+ var donateAmountInput = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("input", {
placeholder:"Donation amount",
inputListener:()=>{
let amt = 0;
@@ -25313,26 +22797,26 @@ function displayFactionContent(factionName) {
if (isNaN(amt)) {
donateRepGain.innerText = "Invalid donate amount entered!";
} else {
- var repGain = amt / _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].DonateMoneyToRepDivisor * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].faction_rep_mult;
+ var repGain = amt / _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].DonateMoneyToRepDivisor * _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].faction_rep_mult;
donateRepGain.innerText = "This donation will result in " +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(repGain, 3) + " reputation gain";
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(repGain, 3) + " reputation gain";
}
},
});
- donateDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ donateDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Donate Money",
clickListener:()=>{
var amt = parseFloat(donateAmountInput.value);
if (isNaN(amt) || amt < 0) {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("Invalid amount entered!");
- } else if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].money.lt(amt)) {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("You cannot afford to donate this much money!");
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Invalid amount entered!");
+ } else if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].money.lt(amt)) {
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You cannot afford to donate this much money!");
} else {
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].loseMoney(amt);
- var repGain = amt / _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].DonateMoneyToRepDivisor * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].faction_rep_mult;
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].loseMoney(amt);
+ var repGain = amt / _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].DonateMoneyToRepDivisor * _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].faction_rep_mult;
faction.playerReputation += repGain;
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("You just donated " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13__["numeralWrapper"].format(amt, "$0.000a") + " to " +
- faction.name + " to gain " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(repGain, 3) + " reputation");
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You just donated " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15__["numeralWrapper"].format(amt, "$0.000a") + " to " +
+ faction.name + " to gain " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(repGain, 3) + " reputation");
displayFactionContent(factionName);
}
}
@@ -25342,16 +22826,16 @@ function displayFactionContent(factionName) {
elements.push(donateDiv);
//Purchase Augmentations
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("pre", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("pre", {
innerHTML: " As your reputation with this faction rises, you will " +
"unlock Augmentations, which you can purchase to enhance " +
"your abilities.
"
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Purchase Augmentations",
clickListener:()=>{
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].hideAllContent();
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent.style.display = "block";
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].hideAllContent();
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionAugmentationsContent.style.display = "block";
displayFactionAugmentations(factionName);
@@ -25360,7 +22844,7 @@ function displayFactionContent(factionName) {
}));
//Gang (BitNode-2)
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].bitNodeN == 2 && (factionName == "Slum Snakes" || factionName == "Tetrads" ||
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].bitNodeN == 2 && (factionName == "Slum Snakes" || factionName == "Tetrads" ||
factionName == "The Syndicate" || factionName == "The Dark Army" || factionName == "Speakers for the Dead" ||
factionName == "NiteSec" || factionName == "The Black Hand")) {
//Set everything else to invisible
@@ -25371,32 +22855,32 @@ function displayFactionContent(factionName) {
donateDiv.style.display = "none";
//Create the 'Manage Gang' button
- var gangDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {
+ var gangDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {
id:"faction-gang-div", class:"faction-work-div", display:"inline"
});
- var gangDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {class:"faction-work-div-wrapper"});
+ var gangDivWrapper = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {class:"faction-work-div-wrapper"});
gangDiv.appendChild(gangDivWrapper);
- gangDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ gangDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
class:"a-link-button", innerText:"Manage Gang",
clickListener: () => {
- if (!_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].inGang()) {
+ if (!_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].inGang()) {
// Determine whether this is a hacking gang
let hacking = false;
if (factionName === "NiteSec" || factionName === "The Black Hand") { hacking = true; }
// Configure Yes/No buttons for the pop-up
- var yesBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxGetNoButton"])();
+ var yesBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxGetNoButton"])();
yesBtn.innerHTML = "Create Gang";
noBtn.innerHTML = "Cancel";
yesBtn.addEventListener("click", () => {
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].startGang(factionName, hacking);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].startGang(factionName, hacking);
document.getElementById("world-menu-header").click();
document.getElementById("world-menu-header").click();
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadGangContent();
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxClose"])();
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadGangContent();
+ Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxClose"])();
});
noBtn.addEventListener("click", () => {
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxClose"])();
+ Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxClose"])();
});
// Pop-up text
@@ -25410,31 +22894,31 @@ function displayFactionContent(factionName) {
"Compared to hacking gangs, progression with combat gangs can be more difficult as territory management " +
"is more important. However, well-managed combat gangs can progress faster than hacking ones.
";
}
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxCreate"])(`Would you like to create a new Gang with ${factionName}?
` +
+ Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxCreate"])(`Would you like to create a new Gang with ${factionName}?
` +
"Note that this will prevent you from creating a Gang with any other Faction until " +
"this BitNode is destroyed.
" +
gangTypeText +
"Other than hacking vs combat, there are NO differences between the Factions you can " +
"create a Gang with, and each of these Factions have all Augmentations available.");
} else {
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadGangContent();
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadGangContent();
}
}
}));
- gangDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ gangDivWrapper.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
innerText:"Create and manage a gang for this Faction. " +
"Gangs will earn you money and faction reputation."
}));
//Manage Gang button goes before Faction work stuff
elements.splice(7, 1, gangDiv);
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].inGang() && _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].gang.facName != factionName) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].inGang() && _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].gang.facName != factionName) {
//If the player has a gang but its not for this faction
gangDiv.style.display = "none";
}
//Display all elements
for (var i = 0; i < elements.length; ++i) {
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent.appendChild(elements[i]);
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionContent.appendChild(elements[i]);
}
return;
}
@@ -25443,7 +22927,7 @@ function displayFactionContent(factionName) {
throw new Error("Not a member of this faction, cannot display faction information");
}
- donateDiv.style.display = faction.favor >= Math.floor(_Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].BaseFavorToDonate * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].RepToDonateToFaction) ? "inline" : "none";
+ donateDiv.style.display = faction.favor >= Math.floor(_Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].BaseFavorToDonate * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].RepToDonateToFaction) ? "inline" : "none";
hackMissionDiv.style.display = factionInfo.offerHackingMission ? "inline": "none";
hackDiv.style.display = factionInfo.offerHackingWork ? "inline" : "none";
@@ -25452,92 +22936,92 @@ function displayFactionContent(factionName) {
//Display all elements
for (var i = 0; i < elements.length; ++i) {
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent.appendChild(elements[i]);
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionContent.appendChild(elements[i]);
}
}
function displayFactionAugmentations(factionName) {
- var faction = _Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][factionName];
+ var faction = _Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"][factionName];
if (faction == null) {
throw new Error("Could not find faction " + factionName + " in displayFactionAugmentations");
}
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__["removeChildrenFromElement"])(_engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__["removeChildrenFromElement"])(_engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionAugmentationsContent);
var elements = [];
//Back button
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
innerText:"Back", class:"a-link-button",
clickListener:()=>{
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionContent();
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadFactionContent();
displayFactionContent(factionName);
return false;
}
}));
//Header text
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("h1", {innerText:"Faction Augmentations"}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("h1", {innerText:"Faction Augmentations"}));
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
id:"faction-augmentations-page-desc",
innerHTML:"Lists all Augmentations that are available to purchase from " + factionName + "
" +
"Augmentations are powerful upgrades that will enhance your abilities."
}));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("br"));
- elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("br"));
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("br"));
+ elements.push(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("br"));
//Augmentations List
- var augmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("ul");
+ var augmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("ul");
//Sort buttons
- const sortByCostBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ const sortByCostBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
innerText:"Sort by Cost", class:"a-link-button",
clickListener:()=>{
- _Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["PurchaseAugmentationsOrderSetting"].Cost;
+ _Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_12__["PurchaseAugmentationsOrderSetting"].Cost;
var augs = faction.augmentations.slice();
augs.sort((augName1, augName2)=>{
- var aug1 = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][augName1], aug2 = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][augName2];
+ var aug1 = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName1], aug2 = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName2];
if (aug1 == null || aug2 == null) {
throw new Error("Invalid Augmentation Names");
}
return aug1.baseCost - aug2.baseCost;
});
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__["removeChildrenFromElement"])(augmentationsList);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__["removeChildrenFromElement"])(augmentationsList);
createFactionAugmentationDisplayElements(augmentationsList, augs, faction);
}
});
- const sortByRepBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ const sortByRepBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
innerText:"Sort by Reputation", class:"a-link-button",
clickListener:()=>{
- _Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["PurchaseAugmentationsOrderSetting"].Reputation;
+ _Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_12__["PurchaseAugmentationsOrderSetting"].Reputation;
var augs = faction.augmentations.slice();
augs.sort((augName1, augName2)=>{
- var aug1 = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][augName1], aug2 = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][augName2];
+ var aug1 = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName1], aug2 = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName2];
if (aug1 == null || aug2 == null) {
throw new Error("Invalid Augmentation Names");
}
return aug1.baseRepRequirement - aug2.baseRepRequirement;
});
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__["removeChildrenFromElement"])(augmentationsList);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__["removeChildrenFromElement"])(augmentationsList);
createFactionAugmentationDisplayElements(augmentationsList, augs, faction);
}
});
- const defaultSortBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ const defaultSortBtn = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
innerText:"Sort by Default Order", class:"a-link-button",
clickListener:()=>{
- _Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["PurchaseAugmentationsOrderSetting"].Default;
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_16__["removeChildrenFromElement"])(augmentationsList);
+ _Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].PurchaseAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_12__["PurchaseAugmentationsOrderSetting"].Default;
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_18__["removeChildrenFromElement"])(augmentationsList);
createFactionAugmentationDisplayElements(augmentationsList, faction.augmentations, faction);
}
});
elements.push(sortByCostBtn);
elements.push(sortByRepBtn);
elements.push(defaultSortBtn);
- switch(_Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].PurchaseAugmentationsOrder) {
- case _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["PurchaseAugmentationsOrderSetting"].Cost:
+ switch(_Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].PurchaseAugmentationsOrder) {
+ case _SettingEnums__WEBPACK_IMPORTED_MODULE_12__["PurchaseAugmentationsOrderSetting"].Cost:
sortByCostBtn.click();
break;
- case _SettingEnums__WEBPACK_IMPORTED_MODULE_10__["PurchaseAugmentationsOrderSetting"].Reputation:
+ case _SettingEnums__WEBPACK_IMPORTED_MODULE_12__["PurchaseAugmentationsOrderSetting"].Reputation:
sortByRepBtn.click();
break;
default:
@@ -25548,7 +23032,7 @@ function displayFactionAugmentations(factionName) {
elements.push(augmentationsList);
for (var i = 0; i < elements.length; ++i) {
- _engine__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent.appendChild(elements[i]);
+ _engine__WEBPACK_IMPORTED_MODULE_5__["Engine"].Display.factionAugmentationsContent.appendChild(elements[i]);
}
}
@@ -25563,31 +23047,31 @@ function createFactionAugmentationDisplayElements(augmentationsList, augs, facti
for (var i = 0; i < augs.length; ++i) {
(function () {
- var aug = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][augs[i]];
+ var aug = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augs[i]];
if (aug == null) {
throw new Error("Invalid Augmentation when trying to create Augmentation display Elements");
}
var owned = false;
- for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations.length; ++j) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations[j].name == aug.name) {
+ for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations.length; ++j) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations[j].name == aug.name) {
owned = true;
break;
}
}
- for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].augmentations.length; ++j) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].augmentations[j].name == aug.name) {
+ for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].augmentations.length; ++j) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].augmentations[j].name == aug.name) {
owned = true;
break;
}
}
- var item = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("li");
- var span = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("span", {display:"inline-block"});
- var aDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("div", {tooltip:aug.info});
- var aElem = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("a", {
+ var item = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("li");
+ var span = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("span", {display:"inline-block"});
+ var aDiv = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("div", {tooltip:aug.info});
+ var aElem = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("a", {
innerText:aug.name, display:"inline",
clickListener:()=>{
- if (!_Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].SuppressBuyAugmentationConfirmation) {
+ if (!_Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].SuppressBuyAugmentationConfirmation) {
purchaseAugmentationBoxCreate(aug, faction);
} else {
purchaseAugmentation(aug, faction);
@@ -25595,10 +23079,10 @@ function createFactionAugmentationDisplayElements(augmentationsList, augs, facti
return false;
}
});
- if (aug.name == _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor) {
+ if (aug.name == _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
aElem.innerText += " - Level " + (getNextNeurofluxLevel());
}
- var pElem = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
+ var pElem = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_19__["createElement"])("p", {
display:"inline",
})
var req = aug.baseRepRequirement * factionInfo.augmentationRepRequirementMult;
@@ -25607,15 +23091,15 @@ function createFactionAugmentationDisplayElements(augmentationsList, augs, facti
aElem.setAttribute("class", "a-link-button-inactive");
pElem.innerHTML = "LOCKED (Requires " + aug.prereqs.join(",") + " as prerequisite(s))";
pElem.style.color = "red";
- } else if (aug.name != _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor && (aug.owned || owned)) {
+ } else if (aug.name != _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor && (aug.owned || owned)) {
aElem.setAttribute("class", "a-link-button-inactive");
pElem.innerHTML = "ALREADY OWNED";
} else if (faction.playerReputation >= req) {
aElem.setAttribute("class", "a-link-button");
- pElem.innerHTML = "UNLOCKED - " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13__["numeralWrapper"].format(aug.baseCost * factionInfo.augmentationPriceMult, "$0.000a");
+ pElem.innerHTML = "UNLOCKED - " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15__["numeralWrapper"].format(aug.baseCost * factionInfo.augmentationPriceMult, "$0.000a");
} else {
aElem.setAttribute("class", "a-link-button-inactive");
- pElem.innerHTML = "LOCKED (Requires " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(req, 1) + " faction reputation) - " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_13__["numeralWrapper"].format(aug.baseCost * factionInfo.augmentationPriceMult, "$0.000a");
+ pElem.innerHTML = "LOCKED (Requires " + Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(req, 1) + " faction reputation) - " + _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_15__["numeralWrapper"].format(aug.baseCost * factionInfo.augmentationPriceMult, "$0.000a");
pElem.style.color = "red";
}
aDiv.appendChild(aElem);
@@ -25629,20 +23113,20 @@ function createFactionAugmentationDisplayElements(augmentationsList, augs, facti
function purchaseAugmentationBoxCreate(aug, fac) {
const factionInfo = fac.getInfo();
- var yesBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxGetNoButton"])();
+ var yesBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxGetNoButton"])();
yesBtn.innerHTML = "Purchase";
noBtn.innerHTML = "Cancel";
yesBtn.addEventListener("click", function() {
purchaseAugmentation(aug, fac);
});
noBtn.addEventListener("click", function() {
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxClose"])();
+ Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxClose"])();
});
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxCreate"])("
" +
" Would you like to purchase the " + aug.name + " Augmentation for $" +
- Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__["formatNumber"])(aug.baseCost * factionInfo.augmentationPriceMult, 2) + "?");
+ Object(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(aug.baseCost * factionInfo.augmentationPriceMult, 2) + "?");
}
//Returns a boolean indicating whether the player has the prerequisites for the
@@ -25651,7 +23135,7 @@ function hasAugmentationPrereqs(aug) {
var hasPrereqs = true;
if (aug.prereqs && aug.prereqs.length > 0) {
for (var i = 0; i < aug.prereqs.length; ++i) {
- var prereqAug = _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][aug.prereqs[i]];
+ var prereqAug = _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][aug.prereqs[i]];
if (prereqAug == null) {
console.log("ERROR: Invalid prereq Augmentation: " + aug.prereqs[i]);
continue;
@@ -25660,8 +23144,8 @@ function hasAugmentationPrereqs(aug) {
hasPrereqs = false;
//Check if the aug is purchased
- for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations.length; ++j) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations[j].name === prereqAug.name) {
+ for (var j = 0; j < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations.length; ++j) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations[j].name === prereqAug.name) {
hasPrereqs = true;
break;
}
@@ -25678,55 +23162,55 @@ function purchaseAugmentation(aug, fac, sing=false) {
if (!hasPrereqs) {
var txt = "You must first purchase or install " + aug.prereqs.join(",") + " before you can " +
"purchase this one.";
- if (sing) {return txt;} else {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])(txt);}
- } else if (aug.baseCost !== 0 && _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].money.lt(aug.baseCost * factionInfo.augmentationPriceMult)) {
+ if (sing) {return txt;} else {Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);}
+ } else if (aug.baseCost !== 0 && _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].money.lt(aug.baseCost * factionInfo.augmentationPriceMult)) {
let txt = "You don't have enough money to purchase " + aug.name;
if (sing) {return txt;}
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])(txt);
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);
} else if (fac.playerReputation < aug.baseRepRequirement) {
let txt = "You don't have enough faction reputation to purchase " + aug.name;
if (sing) {return txt;}
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])(txt);
- } else if (aug.baseCost === 0 || _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].money.gte(aug.baseCost * factionInfo.augmentationPriceMult)) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].firstAugPurchased === false) {
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].firstAugPurchased = true;
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);
+ } else if (aug.baseCost === 0 || _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].money.gte(aug.baseCost * factionInfo.augmentationPriceMult)) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].firstAugPurchased === false) {
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].firstAugPurchased = true;
document.getElementById("augmentations-tab").style.display = "list-item";
document.getElementById("character-menu-header").click();
document.getElementById("character-menu-header").click();
}
- var queuedAugmentation = new _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* PlayerOwnedAugmentation */ "d"](aug.name);
- if (aug.name == _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor) {
+ var queuedAugmentation = new _Augmentation_PlayerOwnedAugmentation__WEBPACK_IMPORTED_MODULE_1__["PlayerOwnedAugmentation"](aug.name);
+ if (aug.name == _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
queuedAugmentation.level = getNextNeurofluxLevel();
}
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations.push(queuedAugmentation);
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations.push(queuedAugmentation);
- _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].loseMoney((aug.baseCost * factionInfo.augmentationPriceMult));
+ _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].loseMoney((aug.baseCost * factionInfo.augmentationPriceMult));
//If you just purchased Neuroflux Governor, recalculate the cost
- if (aug.name == _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor) {
+ if (aug.name == _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
var nextLevel = getNextNeurofluxLevel();
--nextLevel;
- var mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].NeuroFluxGovernorLevelMult, nextLevel);
- aug.baseRepRequirement = 500 * mult * _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].AugmentationRepMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].AugmentationRepCost;
- aug.baseCost = 750e3 * mult * _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].AugmentationCostMultiplier * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].AugmentationMoneyCost;
+ var mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].NeuroFluxGovernorLevelMult, nextLevel);
+ aug.baseRepRequirement = 500 * mult * _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].AugmentationRepCost;
+ aug.baseCost = 750e3 * mult * _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].AugmentationMoneyCost;
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations.length-1; ++i) {
- aug.baseCost *= _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].MultipleAugMultiplier;
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations.length-1; ++i) {
+ aug.baseCost *= _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].MultipleAugMultiplier;
}
}
- for (var name in _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"]) {
- if (_Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"].hasOwnProperty(name)) {
- _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* Augmentations */ "c"][name].baseCost *= _Constants__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].MultipleAugMultiplier;
+ for (var name in _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"]) {
+ if (_Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"].hasOwnProperty(name)) {
+ _Augmentation_Augmentations__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][name].baseCost *= _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].MultipleAugMultiplier;
}
}
if (sing) {
return "You purchased " + aug.name;
} else {
- if(!_Settings__WEBPACK_IMPORTED_MODULE_11__["Settings"].SuppressBuyAugmentationConfirmation){
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("You purchased " + aug.name + ". It's enhancements will not take " +
+ if(!_Settings__WEBPACK_IMPORTED_MODULE_13__["Settings"].SuppressBuyAugmentationConfirmation){
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You purchased " + aug.name + ". It's enhancements will not take " +
"effect until they are installed. To install your augmentations, go to the " +
"'Augmentations' tab on the left-hand navigation menu. Purchasing additional " +
"augmentations will now be more expensive.");
@@ -25735,25 +23219,25 @@ function purchaseAugmentation(aug, fac, sing=false) {
displayFactionAugmentations(fac.name);
} else {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_14__["dialogBoxCreate"])("Hmm, something went wrong when trying to purchase an Augmentation. " +
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Hmm, something went wrong when trying to purchase an Augmentation. " +
"Please report this to the game developer with an explanation of how to " +
"reproduce this.");
}
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_20__["yesNoBoxClose"])();
+ Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_22__["yesNoBoxClose"])();
}
function getNextNeurofluxLevel() {
// Get current Neuroflux level based on Player's augmentations
let currLevel = 0;
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].augmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].augmentations[i].name === _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor) {
- currLevel = _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].augmentations[i].level;
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].augmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].augmentations[i].name === _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ currLevel = _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].augmentations[i].level;
}
}
// Account for purchased but uninstalled Augmentations
- for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations.length; ++i) {
- if (_Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].queuedAugmentations[i].name == _Augmentations__WEBPACK_IMPORTED_MODULE_0__[/* AugmentationNames */ "b"].NeuroFluxGovernor) {
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].queuedAugmentations[i].name == _Augmentation_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
++currLevel;
}
}
@@ -25761,15 +23245,15 @@ function getNextNeurofluxLevel() {
}
function processPassiveFactionRepGain(numCycles) {
- var numTimesGain = (numCycles / 600) * _Player__WEBPACK_IMPORTED_MODULE_9__[/* Player */ "a"].faction_rep_mult;
- for (var name in _Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]) {
- if (_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"].hasOwnProperty(name)) {
- var faction = _Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][name];
+ var numTimesGain = (numCycles / 600) * _Player__WEBPACK_IMPORTED_MODULE_11__[/* Player */ "a"].faction_rep_mult;
+ for (var name in _Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"]) {
+ if (_Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"].hasOwnProperty(name)) {
+ var faction = _Factions__WEBPACK_IMPORTED_MODULE_7__["Factions"][name];
//TODO Get hard value of 1 rep per "rep gain cycle"" for now..
//maybe later make this based on
//a player's 'status' like how powerful they are and how much money they have
- if (faction.isMember) {faction.playerReputation += (numTimesGain * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionPassiveRepGain);}
+ if (faction.isMember) {faction.playerReputation += (numTimesGain * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].FactionPassiveRepGain);}
}
}
}
@@ -25778,7 +23262,7 @@ function processPassiveFactionRepGain(numCycles) {
/***/ }),
-/* 47 */
+/* 50 */
/*!**********************!*\
!*** ./src/Fconf.js ***!
\**********************/
@@ -25791,9 +23275,9 @@ function processPassiveFactionRepGain(numCycles) {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return createFconf; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return parseFconfSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return loadFconf; });
-/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/acorn */ 49);
+/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/acorn */ 52);
/* harmony import */ var _utils_acorn__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
@@ -26054,7 +23538,7 @@ function setMainMenuStyle() {
/***/ }),
-/* 48 */
+/* 51 */
/*!************************!*\
!*** ./src/Hacking.js ***!
\************************/
@@ -26069,10 +23553,10 @@ function setMainMenuStyle() {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return calculateHackingTime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return calculateGrowTime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return calculateWeakenTime; });
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Server */ 11);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Server */ 12);
@@ -26106,7 +23590,7 @@ function calculateHackingExpGain(server) {
var expGain = baseExpGain;
expGain += (server.baseDifficulty * _Player__WEBPACK_IMPORTED_MODULE_1__[/* Player */ "a"].hacking_exp_mult * diffFactor);
- return expGain * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].HackExpGain;
+ return expGain * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].HackExpGain;
}
/**
@@ -26123,7 +23607,7 @@ function calculatePercentMoneyHacked(server) {
if (percentMoneyHacked < 0) { return 0; }
if (percentMoneyHacked > 1) { return 1; }
- return percentMoneyHacked * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ScriptHackMoney;
+ return percentMoneyHacked * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ScriptHackMoney;
}
/**
@@ -26168,7 +23652,7 @@ function calculateWeakenTime(server, hack, int) {
/***/ }),
-/* 49 */
+/* 52 */
/*!************************!*\
!*** ./utils/acorn.js ***!
\************************/
@@ -29808,7 +27292,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
})));
/***/ }),
-/* 50 */
+/* 53 */
/*!*********************!*\
!*** ./src/Gang.js ***!
\*********************/
@@ -29821,40 +27305,41 @@ Object.defineProperty(exports, '__esModule', { value: true });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return resetGangs; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return loadAllGangs; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Gang; });
-/* harmony import */ var _data_gangmembertasks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./data/gangmembertasks */ 135);
+/* harmony import */ var _data_gangmembertasks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./data/gangmembertasks */ 148);
/* harmony import */ var _data_gangmembertasks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_data_gangmembertasks__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _data_gangmemberupgrades__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/gangmemberupgrades */ 134);
+/* harmony import */ var _data_gangmemberupgrades__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/gangmemberupgrades */ 147);
/* harmony import */ var _data_gangmemberupgrades__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_data_gangmemberupgrades__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Faction/Faction */ 57);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Faction/Faction */ 58);
/* harmony import */ var _Faction_Faction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Faction_Faction__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction/Factions */ 14);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction/Factions */ 16);
/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 46);
+/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 49);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_6__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 25);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 27);
/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/uiHelpers/createAccordionElement */ 79);
+/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/uiHelpers/createAccordionElement */ 84);
/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/uiHelpers/createPopup */ 36);
+/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/uiHelpers/createPopup */ 40);
/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui/navigationTracking */ 12);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui/navigationTracking */ 14);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_14__);
-/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 44);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/helpers/exceptionAlert */ 45);
+/* harmony import */ var _utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 17);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 30);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 32);
/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_17__);
-/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/uiHelpers/removeElement */ 61);
+/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/uiHelpers/removeElement */ 63);
/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/uiHelpers/removeElementById */ 20);
+/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/uiHelpers/removeElementById */ 23);
/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_19__);
/*
Also add police clashes
@@ -30048,7 +27533,7 @@ Gang.prototype.process = function(numCycles=1, player) {
this.processTerritoryAndPowerGains(cycles);
this.storedCycles -= cycles;
} catch(e) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__[/* exceptionAlert */ "a"])(`Exception caught when processing Gang: ${e}`);
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__["exceptionAlert"])(`Exception caught when processing Gang: ${e}`);
}
}
@@ -30337,7 +27822,7 @@ Gang.prototype.ascendMember = function(memberObj, workerScript) {
return res;
} catch(e) {
if (workerScript == null) {
- Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__[/* exceptionAlert */ "a"])(e);
+ Object(_utils_helpers_exceptionAlert__WEBPACK_IMPORTED_MODULE_15__["exceptionAlert"])(e);
} else {
throw e; // Re-throw, will be caught in the Netscript Function
}
@@ -31781,10 +29266,10 @@ Gang.prototype.clearUI = function() {
UIElems.gangMemberPanels = {};
}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 51 */
+/* 54 */
/*!*************************!*\
!*** ./src/Terminal.js ***!
\*************************/
@@ -31795,60 +29280,60 @@ Gang.prototype.clearUI = function() {
"use strict";
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return postNetburnerText; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Terminal; });
-/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 45);
-/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodingContracts */ 42);
+/* harmony import */ var _Alias__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias */ 48);
+/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodingContracts */ 46);
/* harmony import */ var _CodingContracts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_CodingContracts__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Programs/Programs */ 24);
+/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Programs/Programs */ 26);
/* harmony import */ var _Programs_Programs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Programs_Programs__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _DarkWeb_DarkWeb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DarkWeb/DarkWeb */ 119);
-/* harmony import */ var _DarkWeb_DarkWebItems__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DarkWeb/DarkWebItems */ 71);
+/* harmony import */ var _DarkWeb_DarkWeb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DarkWeb/DarkWeb */ 128);
+/* harmony import */ var _DarkWeb_DarkWebItems__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DarkWeb/DarkWebItems */ 75);
/* harmony import */ var _DarkWeb_DarkWebItems__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_DarkWeb_DarkWebItems__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Fconf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Fconf */ 47);
-/* harmony import */ var _Hacking__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Hacking */ 48);
-/* harmony import */ var _HelpText__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./HelpText */ 103);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Fconf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Fconf */ 50);
+/* harmony import */ var _Hacking__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Hacking */ 51);
+/* harmony import */ var _HelpText__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./HelpText */ 110);
/* harmony import */ var _HelpText__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_HelpText__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _InteractiveTutorial__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./InteractiveTutorial */ 34);
-/* harmony import */ var _Literature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Literature */ 84);
-/* harmony import */ var _Message__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Message */ 41);
-/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./NetscriptWorker */ 26);
+/* harmony import */ var _InteractiveTutorial__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./InteractiveTutorial */ 38);
+/* harmony import */ var _Literature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Literature */ 89);
+/* harmony import */ var _Message__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Message */ 44);
+/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./NetscriptWorker */ 29);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _RedPill__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./RedPill */ 59);
-/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Script */ 31);
-/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Server */ 11);
-/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Settings */ 18);
+/* harmony import */ var _RedPill__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./RedPill */ 64);
+/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Script */ 35);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Server */ 12);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Settings */ 20);
/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_18__);
-/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./SpecialServerIps */ 33);
-/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./TextFile */ 65);
+/* harmony import */ var _SpecialServerIps__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./SpecialServerIps */ 36);
+/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./TextFile */ 69);
/* harmony import */ var _TextFile__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_TextFile__WEBPACK_IMPORTED_MODULE_20__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_21__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ui/navigationTracking */ 12);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ui/navigationTracking */ 14);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ui/numeralFormat */ 4);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 25);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../utils/helpers/keyCodes */ 27);
/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_24__);
-/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 66);
+/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 70);
/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_25__);
-/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../utils/helpers/isString */ 40);
+/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../utils/helpers/isString */ 43);
/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_26__);
-/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../utils/helpers/arrayToString */ 55);
+/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../utils/helpers/arrayToString */ 59);
/* harmony import */ var _utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_arrayToString__WEBPACK_IMPORTED_MODULE_27__);
-/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 89);
+/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/helpers/getTimestamp */ 93);
/* harmony import */ var _utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getTimestamp__WEBPACK_IMPORTED_MODULE_28__);
-/* harmony import */ var _utils_LogBox__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/LogBox */ 81);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils/YesNoBox */ 19);
+/* harmony import */ var _utils_LogBox__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/LogBox */ 86);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils/YesNoBox */ 21);
/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_30__);
-/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./ui/postToTerminal */ 7);
+/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./ui/postToTerminal */ 8);
/* harmony import */ var _ui_postToTerminal__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_ui_postToTerminal__WEBPACK_IMPORTED_MODULE_31__);
-/* harmony import */ var autosize__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! autosize */ 153);
+/* harmony import */ var autosize__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! autosize */ 166);
/* harmony import */ var autosize__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(autosize__WEBPACK_IMPORTED_MODULE_32__);
-/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! jszip */ 152);
+/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! jszip */ 165);
/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_33__);
-/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! file-saver */ 151);
+/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! file-saver */ 164);
/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_34__);
@@ -34007,10 +31492,10 @@ let Terminal = {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 52 */
+/* 55 */
/*!*********************************************!*\
!*** ./utils/uiHelpers/appendLineBreaks.ts ***!
\*********************************************/
@@ -34036,7 +31521,7 @@ exports.appendLineBreaks = appendLineBreaks;
/***/ }),
-/* 53 */
+/* 56 */
/*!*************************************!*\
!*** ./src/NetscriptBladeburner.js ***!
\*************************************/
@@ -34049,8 +31534,8 @@ exports.appendLineBreaks = appendLineBreaks;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return unknownBladeburnerExceptionMessage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return checkBladeburnerAccess; });
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Bladeburner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Bladeburner */ 32);
-/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NetscriptEvaluator */ 6);
+/* harmony import */ var _Bladeburner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Bladeburner */ 34);
+/* harmony import */ var _NetscriptEvaluator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NetscriptEvaluator */ 7);
@@ -34080,7 +31565,7 @@ function checkBladeburnerAccess(workerScript, functionName) {
/***/ }),
-/* 54 */
+/* 57 */
/*!*******************************************!*\
!*** ./utils/uiHelpers/getElementById.ts ***!
\*******************************************/
@@ -34108,7 +31593,131 @@ exports.getElementById = getElementById;
/***/ }),
-/* 55 */
+/* 58 */
+/*!********************************!*\
+ !*** ./src/Faction/Faction.ts ***!
+ \********************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+const Constants_1 = __webpack_require__(/*! ../Constants */ 1);
+const FactionInfo_1 = __webpack_require__(/*! ./FactionInfo */ 123);
+const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+class Faction {
+ constructor(name = "") {
+ /**
+ * Flag signalling whether the player has already received an invitation
+ * to this faction
+ */
+ this.alreadyInvited = false;
+ /**
+ * Holds names of all augmentations that this Faction offers
+ */
+ this.augmentations = [];
+ /**
+ * Amount of favor the player has with this faction.
+ */
+ this.favor = 0;
+ /**
+ * Flag signalling whether player has been banned from this faction
+ */
+ this.isBanned = false;
+ /**
+ * Flag signalling whether player is a member of this faction
+ */
+ this.isMember = false;
+ /**
+ * Name of faction
+ */
+ this.name = "";
+ /**
+ * Amount of reputation player has with this faction
+ */
+ this.playerReputation = 0;
+ /**
+ * Reputation from the last "prestige" that was not converted to favor.
+ * This reputation rolls over and is used for the next favor calculation
+ */
+ this.rolloverRep = 0;
+ this.name = name;
+ }
+ /**
+ * Initiatizes a Faction object from a JSON save state.
+ */
+ static fromJSON(value) {
+ return JSONReviver_1.Generic_fromJSON(Faction, value.data);
+ }
+ getInfo() {
+ const info = FactionInfo_1.FactionInfos[this.name];
+ if (info == null) {
+ throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);
+ }
+ return info;
+ }
+ gainFavor() {
+ if (this.favor == null) {
+ this.favor = 0;
+ }
+ if (this.rolloverRep == null) {
+ this.rolloverRep = 0;
+ }
+ const res = this.getFavorGain();
+ if (res.length !== 2) {
+ console.error("Invalid result from getFavorGain() function");
+ return;
+ }
+ this.favor += res[0];
+ this.rolloverRep = res[1];
+ }
+ //Returns an array with [How much favor would be gained, how much rep would be left over]
+ getFavorGain() {
+ if (this.favor == null) {
+ this.favor = 0;
+ }
+ if (this.rolloverRep == null) {
+ this.rolloverRep = 0;
+ }
+ var favorGain = 0, rep = this.playerReputation + this.rolloverRep;
+ let reqdRep = Constants_1.CONSTANTS.FactionReputationToFavorBase *
+ Math.pow(Constants_1.CONSTANTS.FactionReputationToFavorMult, this.favor);
+ while (rep > 0) {
+ if (rep >= reqdRep) {
+ ++favorGain;
+ rep -= reqdRep;
+ }
+ else {
+ break;
+ }
+ reqdRep *= Constants_1.CONSTANTS.FactionReputationToFavorMult;
+ }
+ return [favorGain, rep];
+ }
+ //Adds all Augmentations to this faction.
+ addAllAugmentations(augs) {
+ this.augmentations.length = 0;
+ for (const name in augs) {
+ if (augs.hasOwnProperty(name)) {
+ this.augmentations.push(name);
+ }
+ }
+ }
+ /**
+ * Serialize the current object to a JSON save state.
+ */
+ toJSON() {
+ return JSONReviver_1.Generic_toJSON("Faction", this);
+ }
+}
+exports.Faction = Faction;
+JSONReviver_1.Reviver.constructors.Faction = Faction;
+
+
+/***/ }),
+/* 59 */
/*!****************************************!*\
!*** ./utils/helpers/arrayToString.ts ***!
\****************************************/
@@ -34129,7 +31738,7 @@ exports.arrayToString = arrayToString;
/***/ }),
-/* 56 */
+/* 60 */
/*!*************************!*\
!*** ./src/Missions.js ***!
\*************************/
@@ -34144,21 +31753,21 @@ exports.arrayToString = arrayToString;
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return currMission; });
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 9);
-/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 46);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 11);
+/* harmony import */ var _Faction_FactionHelpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction/FactionHelpers */ 49);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 16);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 22);
/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 66);
+/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/helpers/addOffset */ 70);
/* harmony import */ var _utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_addOffset__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 15);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/helpers/getRandomInt */ 17);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/isString */ 40);
+/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/helpers/isString */ 43);
/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! jsplumb */ 258);
+/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! jsplumb */ 277);
/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(jsplumb__WEBPACK_IMPORTED_MODULE_10__);
@@ -35698,134 +33307,2368 @@ HackingMission.prototype.finishMission = function(win) {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 57 */
-/*!********************************!*\
- !*** ./src/Faction/Faction.ts ***!
- \********************************/
-/*! no static exports found */
-/*! all exports used */
-/***/ (function(module, exports, __webpack_require__) {
+/* 61 */
+/*!*************************************************!*\
+ !*** ./src/Augmentation/AugmentationHelpers.js ***!
+ \*************************************************/
+/*! exports provided: installAugmentations, initAugmentations, applyAugmentation, augmentationExists, displayAugmentationsContent */
+/*! exports used: applyAugmentation, augmentationExists, displayAugmentationsContent, initAugmentations, installAugmentations */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return installAugmentations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return initAugmentations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return applyAugmentation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return augmentationExists; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return displayAugmentationsContent; });
+/* harmony import */ var _Augmentation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentation */ 18);
+/* harmony import */ var _Augmentation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Augmentation__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var _Augmentations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Augmentations */ 13);
+/* harmony import */ var _Augmentations__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Augmentations__WEBPACK_IMPORTED_MODULE_1__);
+/* harmony import */ var _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data/AugmentationNames */ 6);
+/* harmony import */ var _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Constants */ 1);
+/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_4__);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Faction/Factions */ 16);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../NetscriptFunctions */ 47);
+/* harmony import */ var _NetscriptWorker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../NetscriptWorker */ 29);
+/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Player */ 0);
+/* harmony import */ var _Prestige__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Prestige */ 92);
+/* harmony import */ var _SaveObject__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SaveObject */ 78);
+/* harmony import */ var _Script__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Script */ 35);
+/* harmony import */ var _Server__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Server */ 12);
+/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../SettingEnums */ 77);
+/* harmony import */ var _SettingEnums__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_SettingEnums__WEBPACK_IMPORTED_MODULE_13__);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Settings */ 20);
+/* harmony import */ var _Settings__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_Settings__WEBPACK_IMPORTED_MODULE_14__);
+/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../SourceFile */ 80);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/uiHelpers/createAccordionElement */ 84);
+/* harmony import */ var _utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17__);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/StringHelperFunctions */ 3);
+/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_19__);
+/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/helpers/clearObject */ 85);
+/* harmony import */ var _utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_20__);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../utils/uiHelpers/createElement */ 2);
+/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__);
+/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../utils/helpers/isString */ 43);
+/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_22__);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 32);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23__);
-Object.defineProperty(exports, "__esModule", { value: true });
-const Constants_1 = __webpack_require__(/*! ../Constants */ 1);
-const FactionInfo_1 = __webpack_require__(/*! ./FactionInfo */ 115);
-const JSONReviver_1 = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
-class Faction {
- constructor(name = "") {
- /**
- * Flag signalling whether the player has already received an invitation
- * to this faction
- */
- this.alreadyInvited = false;
- /**
- * Holds names of all augmentations that this Faction offers
- */
- this.augmentations = [];
- /**
- * Amount of favor the player has with this faction.
- */
- this.favor = 0;
- /**
- * Flag signalling whether player has been banned from this faction
- */
- this.isBanned = false;
- /**
- * Flag signalling whether player is a member of this faction
- */
- this.isMember = false;
- /**
- * Name of faction
- */
- this.name = "";
- /**
- * Amount of reputation player has with this faction
- */
- this.playerReputation = 0;
- /**
- * Reputation from the last "prestige" that was not converted to favor.
- * This reputation rolls over and is used for the next favor calculation
- */
- this.rolloverRep = 0;
- this.name = name;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function AddToAugmentations(aug) {
+ var name = aug.name;
+ _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name] = aug;
+}
+
+function initAugmentations() {
+ for (var name in _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]) {
+ if (_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"].hasOwnProperty(name)) {
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"][name].augmentations = [];
+ }
}
- /**
- * Initiatizes a Faction object from a JSON save state.
- */
- static fromJSON(value) {
- return JSONReviver_1.Generic_fromJSON(Faction, value.data);
+
+ //Reset Augmentations
+ Object(_utils_helpers_clearObject__WEBPACK_IMPORTED_MODULE_20__["clearObject"])(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+
+ //Combat stat augmentations
+ var HemoRecirculator = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HemoRecirculator, moneyCost: 9e6, repCost:4e3,
+ info:"A heart implant that greatly increases the body's ability to effectively use and pump " +
+ "blood.
" +
+ "This augmentation increases all of the player's combat stats by 8%.",
+ strength_mult: 1.08,
+ defense_mult: 1.08,
+ agility_mult: 1.08,
+ dexterity_mult: 1.08,
+ });
+ HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HemoRecirculator)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HemoRecirculator];
}
- getInfo() {
- const info = FactionInfo_1.FactionInfos[this.name];
- if (info == null) {
- throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);
- }
- return info;
+ AddToAugmentations(HemoRecirculator);
+
+ var Targeting1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting1, moneyCost:3e6, repCost:2e3,
+ info:"This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
+ "balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
+ "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
+ "This augmentation increases the player's dexterity by 10%.",
+ dexterity_mult: 1.1,
+ });
+ Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting1];
}
- gainFavor() {
- if (this.favor == null) {
- this.favor = 0;
- }
- if (this.rolloverRep == null) {
- this.rolloverRep = 0;
- }
- const res = this.getFavorGain();
- if (res.length !== 2) {
- console.error("Invalid result from getFavorGain() function");
- return;
- }
- this.favor += res[0];
- this.rolloverRep = res[1];
+ AddToAugmentations(Targeting1);
+
+ var Targeting2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting2, moneyCost:8.5e6, repCost:3.5e3,
+ info:"This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
+ "and enhances the user's balance and hand-eye coordination.
" +
+ "This augmentation increases the player's dexterity by 20%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting1],
+ dexterity_mult: 1.2,
+ });
+ Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting2];
}
- //Returns an array with [How much favor would be gained, how much rep would be left over]
- getFavorGain() {
- if (this.favor == null) {
- this.favor = 0;
- }
- if (this.rolloverRep == null) {
- this.rolloverRep = 0;
- }
- var favorGain = 0, rep = this.playerReputation + this.rolloverRep;
- let reqdRep = Constants_1.CONSTANTS.FactionReputationToFavorBase *
- Math.pow(Constants_1.CONSTANTS.FactionReputationToFavorMult, this.favor);
- while (rep > 0) {
- if (rep >= reqdRep) {
- ++favorGain;
- rep -= reqdRep;
- }
- else {
- break;
- }
- reqdRep *= Constants_1.CONSTANTS.FactionReputationToFavorMult;
- }
- return [favorGain, rep];
+ AddToAugmentations(Targeting2);
+
+ var Targeting3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting3, moneyCost:23e6, repCost:11e3,
+ info:"This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
+ "and enhances the user's balance and hand-eye coordination.
" +
+ "This augmentation increases the player's dexterity by 30%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting2],
+ dexterity_mult: 1.3,
+ });
+ Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
+ "KuaiGong International", "Blade Industries", "The Covenant"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting3)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Targeting3];
}
- //Adds all Augmentations to this faction.
- addAllAugmentations(augs) {
- this.augmentations.length = 0;
- for (const name in augs) {
- if (augs.hasOwnProperty(name)) {
- this.augmentations.push(name);
+ AddToAugmentations(Targeting3);
+
+ var SyntheticHeart = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SyntheticHeart, moneyCost:575e6, repCost:300e3,
+ info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
+ "at much higher efficiencies than a normal human heart.
" +
+ "This augmentation increases the player's agility and strength by 50%.",
+ agility_mult: 1.5,
+ strength_mult: 1.5,
+ });
+ SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
+ "NWO", "The Covenant", "Daedalus", "Illuminati"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SyntheticHeart)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SyntheticHeart];
+ }
+ AddToAugmentations(SyntheticHeart);
+
+ var SynfibrilMuscle = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynfibrilMuscle, repCost:175e3, moneyCost:225e6,
+ info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
+ "the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
+ "Scientists have named these artificially enhanced units 'synfibrils'.
" +
+ "This augmentation increases the player's strength and defense by 30%.",
+ strength_mult: 1.3,
+ defense_mult: 1.3,
+ });
+ SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
+ "NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynfibrilMuscle)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynfibrilMuscle];
+ }
+ AddToAugmentations(SynfibrilMuscle)
+
+ var CombatRib1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib1, repCost:3e3, moneyCost:4750000,
+ info:"The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
+ "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
+ "This augmentation increases the player's strength and defense by 10%.",
+ strength_mult: 1.1,
+ defense_mult: 1.1,
+ });
+ CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib1];
+ }
+ AddToAugmentations(CombatRib1);
+
+ var CombatRib2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib2, repCost:7.5e3, moneyCost:13e6,
+ info:"This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
+ "drugs into the bloodstream.
" +
+ "This augmentation increases the player's strength and defense by 14%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib1],
+ strength_mult: 1.14,
+ defense_mult: 1.14,
+ });
+ CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib2];
+ }
+ AddToAugmentations(CombatRib2);
+
+ var CombatRib3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib3, repCost:14e3, moneyCost:24e6,
+ info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
+ "drugs into the bloodstream
." +
+ "This augmentation increases the player's strength and defense by 18%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib2],
+ strength_mult: 1.18,
+ defense_mult: 1.18,
+ });
+ CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
+ "KuaiGong International", "Blade Industries", "The Covenant"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib3)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CombatRib3];
+ }
+ AddToAugmentations(CombatRib3);
+
+ var NanofiberWeave = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NanofiberWeave, repCost:15e3, moneyCost:25e6,
+ info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
+ "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
+ "This augmentation increases the player's strength and defense by 20%.",
+ strength_mult: 1.2,
+ defense_mult: 1.2,
+ });
+ NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
+ "Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NanofiberWeave)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NanofiberWeave];
+ }
+ AddToAugmentations(NanofiberWeave);
+
+ var SubdermalArmor = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SubdermalArmor, repCost:350e3, moneyCost:650e6,
+ info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
+ "The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
+ "that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
+ "at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
+ "mitigate damage from any fire-related or electrical traumas.
" +
+ "This augmentation increases the player's defense by 120%.",
+ defense_mult: 2.2,
+ });
+ SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
+ "The Covenant"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SubdermalArmor)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SubdermalArmor];
+ }
+ AddToAugmentations(SubdermalArmor);
+
+ var WiredReflexes = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].WiredReflexes, repCost:500, moneyCost:500e3,
+ info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
+ "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
+ "This augmentation increases the player's agility and dexterity by 5%.",
+ agility_mult: 1.05,
+ dexterity_mult: 1.05,
+ });
+ WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
+ "The Syndicate", "The Dark Army", "Speakers for the Dead"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].WiredReflexes)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].WiredReflexes];
+ }
+ AddToAugmentations(WiredReflexes);
+
+ var GrapheneBoneLacings = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBoneLacings, repCost:450e3, moneyCost:850e6,
+ info:"A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
+ "their density and tensile strength.
" +
+ "This augmentation increases the player's strength and defense by 70%.",
+ strength_mult: 1.7,
+ defense_mult: 1.7,
+ });
+ GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBoneLacings)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBoneLacings];
+ }
+ AddToAugmentations(GrapheneBoneLacings);
+
+ var BionicSpine = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicSpine, repCost:18e3, moneyCost:25e6,
+ info:"An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
+ "Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
+ "stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
+ "greatly improved senses and reaction speeds.
" +
+ "This augmentation increases all of the player's combat stats by 15%.",
+ strength_mult: 1.15,
+ defense_mult: 1.15,
+ agility_mult: 1.15,
+ dexterity_mult: 1.15,
+ });
+ BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
+ "OmniTek Incorporated", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicSpine)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicSpine];
+ }
+ AddToAugmentations(BionicSpine);
+
+ var GrapheneBionicSpine = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicSpine, repCost:650e3, moneyCost:1200e6,
+ info:"An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
+ "material to make it much stronger and lighter.
" +
+ "This augmentation increases all of the player's combat stats by 60%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicSpine],
+ strength_mult: 1.6,
+ defense_mult: 1.6,
+ agility_mult: 1.6,
+ dexterity_mult: 1.6,
+ });
+ GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicSpine)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicSpine];
+ }
+ AddToAugmentations(GrapheneBionicSpine);
+
+ var BionicLegs = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicLegs, repCost:60e3, moneyCost:75e6,
+ info:"Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
+ "This augmentation increases the player's agility by 60%.",
+ agility_mult: 1.6,
+ });
+ BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
+ "OmniTek Incorporated", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicLegs)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicLegs];
+ }
+ AddToAugmentations(BionicLegs);
+
+ var GrapheneBionicLegs = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicLegs, repCost:300e3, moneyCost:900e6,
+ info:"An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
+ "material to make it much stronger and lighter.
" +
+ "This augmentation increases the player's agility by 150%.",
+ prereqs: [_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicLegs],
+ agility_mult: 2.5,
+ });
+ GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicLegs)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicLegs];
+ }
+ AddToAugmentations(GrapheneBionicLegs);
+
+ //Labor stat augmentations
+ var SpeechProcessor = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechProcessor, repCost:3e3, moneyCost:10e6,
+ info:"A cochlear implant with an embedded computer that analyzes incoming speech. " +
+ "The embedded computer processes characteristics of incoming speech, such as tone " +
+ "and inflection, to pick up on subtle cues and aid in social interactions.
" +
+ "This augmentation increases the player's charisma by 20%.",
+ charisma_mult: 1.2,
+ });
+ SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
+ "Ishima", "Volhaven", "Silhouette"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechProcessor)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechProcessor];
+ }
+ AddToAugmentations(SpeechProcessor);
+
+ let TITN41Injection = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TITN41Injection, repCost:10e3, moneyCost:38e6,
+ info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
+ "control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
+ "outgoing and socialable.
" +
+ "This augmentation increases the player's charisma and charisma experience gain rate by 15%.",
+ charisma_mult: 1.15,
+ charisma_exp_mult: 1.15,
+ });
+ TITN41Injection.addToFactions(["Silhouette"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TITN41Injection)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TITN41Injection];
+ }
+ AddToAugmentations(TITN41Injection);
+
+ var EnhancedSocialInteractionImplant = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedSocialInteractionImplant, repCost:150e3, moneyCost:275e6,
+ info:"A cranial implant that greatly assists in the user's ability to analyze social situations " +
+ "and interactions. The system uses a wide variety of factors such as facial expression, body " +
+ "language, and the voice's tone/inflection to determine the best course of action during social" +
+ "situations. The implant also uses deep learning software to continuously learn new behavior" +
+ "patterns and how to best respond.
" +
+ "This augmentation increases the player's charisma and charisma experience gain rate by 60%.",
+ charisma_mult: 1.6,
+ charisma_exp_mult: 1.6,
+ });
+ EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
+ "OmniTek Incorporated", "Four Sigma"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedSocialInteractionImplant)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedSocialInteractionImplant];
+ }
+ AddToAugmentations(EnhancedSocialInteractionImplant);
+
+ //Hacking augmentations
+ var BitWire = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BitWire, repCost:1500, moneyCost:2e6,
+ info: "A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
+ "capabilities.
" +
+ "This augmentation increases the player's hacking skill by 5%.",
+ hacking_mult: 1.05,
+ });
+ BitWire.addToFactions(["CyberSec", "NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BitWire)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BitWire];
+ }
+ AddToAugmentations(BitWire);
+
+ var ArtificialBioNeuralNetwork = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialBioNeuralNetwork, repCost:110e3, moneyCost:600e6,
+ info:"A network consisting of millions of nanoprocessors is embedded into the brain. " +
+ "The network is meant to mimick the way a biological brain solves a problem, which each " +
+ "nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
+ "nanoprocessors are programmed to perform computations much faster than organic neurons, " +
+ "allowing its user to solve much more complex problems at a much faster rate.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 3%. " +
+ "Increases the amount of money the player's gains from hacking by 15%. " +
+ "Increases the player's hacking skill by 12%.",
+ hacking_speed_mult: 1.03,
+ hacking_money_mult: 1.15,
+ hacking_mult: 1.12,
+ });
+ ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialBioNeuralNetwork)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialBioNeuralNetwork];
+ }
+ AddToAugmentations(ArtificialBioNeuralNetwork);
+
+ var ArtificialSynapticPotentiation = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialSynapticPotentiation, repCost:2500, moneyCost:16e6,
+ info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
+ "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2% " +
+ "Increases the player's hacking chance by 5%. " +
+ "Increases the player's hacking experience gain rate by 5%.",
+ hacking_speed_mult: 1.02,
+ hacking_chance_mult: 1.05,
+ hacking_exp_mult: 1.05,
+ });
+ ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialSynapticPotentiation)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ArtificialSynapticPotentiation];
+ }
+ AddToAugmentations(ArtificialSynapticPotentiation);
+
+ var EnhancedMyelinSheathing = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedMyelinSheathing, repCost:40e3, moneyCost:275e6,
+ info:"Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
+ "This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
+ "system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
+ "counterparts, leading to greater processing speeds and better brain function.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 3%. " +
+ "Increases the player's hacking skill by 8%. " +
+ "Increases the player's hacking experience gain rate by 10%.",
+ hacking_speed_mult: 1.03,
+ hacking_exp_mult: 1.1,
+ hacking_mult: 1.08,
+ });
+ EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedMyelinSheathing)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EnhancedMyelinSheathing];
+ }
+ AddToAugmentations(EnhancedMyelinSheathing);
+
+ var SynapticEnhancement = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynapticEnhancement, repCost:800, moneyCost:1.5e6,
+ info:"A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
+ "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
+ "This augmentation increases the player's hacking speed by 3%.",
+ hacking_speed_mult: 1.03,
+ });
+ SynapticEnhancement.addToFactions(["CyberSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynapticEnhancement)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SynapticEnhancement];
+ }
+ AddToAugmentations(SynapticEnhancement);
+
+ var NeuralRetentionEnhancement = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralRetentionEnhancement, repCost:8e3, moneyCost:50e6,
+ info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
+ "circuits, strengthening its ability to retain information.
" +
+ "This augmentation increases the player's hacking experience gain rate by 25%.",
+ hacking_exp_mult: 1.25,
+ });
+ NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralRetentionEnhancement)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralRetentionEnhancement];
+ }
+ AddToAugmentations(NeuralRetentionEnhancement);
+
+ var DataJack = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DataJack, repCost:45e3, moneyCost:90e6,
+ info:"A brain implant that provides an interface for direct, wireless communication between a computer's main " +
+ "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
+ "and delete it.
" +
+ "This augmentation increases the amount of money the player gains from hacking by 25%.",
+ hacking_money_mult: 1.25,
+ });
+ DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DataJack)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DataJack];
+ }
+ AddToAugmentations(DataJack);
+
+ var ENM = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM, repCost:6e3, moneyCost:50e6,
+ info:"A thin device embedded inside the arm containing a wireless module capable of connecting " +
+ "to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
+ "processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
+ "not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
+ "control the traffic on a network.
" +
+ "This augmentation increases the player's hacking skill by 8%.",
+ hacking_mult: 1.08,
+ });
+ ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
+ "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM];
+ }
+ AddToAugmentations(ENM);
+
+ var ENMCore = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCore, repCost:100e3, moneyCost:500e6,
+ info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 3%. " +
+ "Increases the amount of money the player gains from hacking by 10%. " +
+ "Increases the player's chance of successfully performing a hack by 3%. " +
+ "Increases the player's hacking experience gain rate by 7%. " +
+ "Increases the player's hacking skill by 7%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM],
+ hacking_speed_mult: 1.03,
+ hacking_money_mult: 1.1,
+ hacking_chance_mult: 1.03,
+ hacking_exp_mult: 1.07,
+ hacking_mult: 1.07,
+ });
+ ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
+ "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCore)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCore];
+ }
+ AddToAugmentations(ENMCore);
+
+ var ENMCoreV2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV2, repCost:400e3, moneyCost:900e6,
+ info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgraded firmware allows the Embedded Netburner Module to control the information on " +
+ "a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
+ "packets.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 5%. " +
+ "Increases the amount of money the player gains from hacking by 30%. " +
+ "Increases the player's chance of successfully performing a hack by 5%. " +
+ "Increases the player's hacking experience gain rate by 15%. " +
+ "Increases the player's hacking skill by 8%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCore],
+ hacking_speed_mult: 1.05,
+ hacking_money_mult: 1.3,
+ hacking_chance_mult: 1.05,
+ hacking_exp_mult: 1.15,
+ hacking_mult: 1.08,
+ });
+ ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV2];
+ }
+ AddToAugmentations(ENMCoreV2);
+
+ var ENMCoreV3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV3, repCost:700e3, moneyCost:1500e6,
+ info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
+ "any device on a network.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 5%. " +
+ "Increases the amount of money the player gains from hacking by 40%. " +
+ "Increases the player's chance of successfully performing a hack by 10%. " +
+ "Increases the player's hacking experience gain rate by 25%. " +
+ "Increases the player's hacking skill by 10%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV2],
+ hacking_speed_mult: 1.05,
+ hacking_money_mult: 1.4,
+ hacking_chance_mult: 1.1,
+ hacking_exp_mult: 1.25,
+ hacking_mult: 1.1,
+ });
+ ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV3)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMCoreV3];
+ }
+ AddToAugmentations(ENMCoreV3);
+
+ var ENMAnalyzeEngine = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMAnalyzeEngine, repCost:250e3, moneyCost:1200e6,
+ info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
+ "that vastly outperforms the Netburner Module's native single-core processor.
" +
+ "This augmentation increases the player's hacking speed by 10%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM],
+ hacking_speed_mult: 1.1,
+ });
+ ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMAnalyzeEngine)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMAnalyzeEngine];
+ }
+ AddToAugmentations(ENMAnalyzeEngine);
+
+ var ENMDMA = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMDMA, repCost:400e3, moneyCost:1400e6,
+ info:"This implant installs a Direct Memory Access (DMA) controller into the " +
+ "Embedded Netburner Module. This allows the Module to send and receive data " +
+ "directly to and from the main memory of devices on a network.
" +
+ "This augmentation: " +
+ "Increases the amount of money the player gains from hacking by 40%. " +
+ "Increases the player's chance of successfully performing a hack by 20%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENM],
+ hacking_money_mult: 1.4,
+ hacking_chance_mult: 1.2,
+ });
+ ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMDMA)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ENMDMA];
+ }
+ AddToAugmentations(ENMDMA);
+
+ var Neuralstimulator = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuralstimulator, repCost:20e3, moneyCost:600e6,
+ info:"A cranial implant that intelligently stimulates certain areas of the brain " +
+ "in order to improve cognitive functions.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2%. " +
+ "Increases the player's chance of successfully performing a hack by 10%. " +
+ "Increases the player's hacking experience gain rate by 12%.",
+ hacking_speed_mult: 1.02,
+ hacking_chance_mult: 1.1,
+ hacking_exp_mult: 1.12,
+ });
+ Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
+ "Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
+ "Four Sigma"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuralstimulator)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuralstimulator];
+ }
+ AddToAugmentations(Neuralstimulator);
+
+ var NeuralAccelerator = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralAccelerator, repCost:80e3, moneyCost:350e6,
+ info:"A microprocessor that accelerates the processing " +
+ "speed of biological neural networks. This is a cranial implant that is embedded inside the brain.
" +
+ "This augmentation: " +
+ "Increases the player's hacking skill by 10%. " +
+ "Increases the player's hacking experience gain rate by 15%. " +
+ "Increases the amount of money the player gains from hacking by 20%.",
+ hacking_mult: 1.1,
+ hacking_exp_mult: 1.15,
+ hacking_money_mult: 1.2,
+ });
+ NeuralAccelerator.addToFactions(["BitRunners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralAccelerator)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuralAccelerator];
+ }
+ AddToAugmentations(NeuralAccelerator);
+
+ var CranialSignalProcessorsG1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG1, repCost:4e3, moneyCost:14e6,
+ info:"The first generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 1%. " +
+ "Increases the player's hacking skill by 5%.",
+ hacking_speed_mult: 1.01,
+ hacking_mult: 1.05,
+ });
+ CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG1];
+ }
+ AddToAugmentations(CranialSignalProcessorsG1);
+
+ var CranialSignalProcessorsG2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG2, repCost:7500, moneyCost:25e6,
+ info:"The second generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2%. " +
+ "Increases the player's chance of successfully performing a hack by 5%. " +
+ "Increases the player's hacking skill by 7%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG1],
+ hacking_speed_mult: 1.02,
+ hacking_chance_mult: 1.05,
+ hacking_mult: 1.07,
+ });
+ CranialSignalProcessorsG2.addToFactions(["CyberSec", "NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG2];
+ }
+ AddToAugmentations(CranialSignalProcessorsG2);
+
+ var CranialSignalProcessorsG3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG3, repCost:20e3, moneyCost:110e6,
+ info:"The third generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2%. " +
+ "Increases the amount of money the player gains from hacking by 15%. " +
+ "Increases the player's hacking skill by 9%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG2],
+ hacking_speed_mult: 1.02,
+ hacking_money_mult: 1.15,
+ hacking_mult: 1.09,
+ });
+ CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand", "BitRunners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG3)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG3];
+ }
+ AddToAugmentations(CranialSignalProcessorsG3);
+
+ var CranialSignalProcessorsG4 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG4, repCost:50e3, moneyCost:220e6,
+ info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 2%. " +
+ "Increases the amount of money the player gains from hacking by 20%. " +
+ "Increases the amount of money the player can inject into servers using grow() by 25%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG3],
+ hacking_speed_mult: 1.02,
+ hacking_money_mult: 1.2,
+ hacking_grow_mult: 1.25,
+ });
+ CranialSignalProcessorsG4.addToFactions(["The Black Hand", "BitRunners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG4)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG4];
+ }
+ AddToAugmentations(CranialSignalProcessorsG4);
+
+ var CranialSignalProcessorsG5 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG5, repCost:100e3, moneyCost:450e6,
+ info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation: " +
+ "Increases the player's hacking skill by 30%. " +
+ "Increases the amount of money the player gains from hacking by 25%. " +
+ "Increases the amount of money the player can inject into servers using grow() by 75%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG4],
+ hacking_mult: 1.3,
+ hacking_money_mult: 1.25,
+ hacking_grow_mult: 1.75,
+ });
+ CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG5)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CranialSignalProcessorsG5];
+ }
+ AddToAugmentations(CranialSignalProcessorsG5);
+
+ var NeuronalDensification = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuronalDensification, repCost:75e3, moneyCost:275e6,
+ info:"The brain is surgically re-engineered to have increased neuronal density " +
+ "by decreasing the neuron gap junction. Then, the body is genetically modified " +
+ "to enhance the production and capabilities of its neural stem cells.
" +
+ "This augmentation: " +
+ "Increases the player's hacking skill by 15%. " +
+ "Increases the player's hacking experience gain rate by 10%. "+
+ "Increases the player's hacking speed by 3%.",
+ hacking_mult: 1.15,
+ hacking_exp_mult: 1.1,
+ hacking_speed_mult: 1.03,
+ });
+ NeuronalDensification.addToFactions(["Clarke Incorporated"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuronalDensification)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuronalDensification];
+ }
+ AddToAugmentations(NeuronalDensification);
+
+ //Work Augmentations
+ var NuoptimalInjectorImplant = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NuoptimalInjectorImplant, repCost:2e3, moneyCost:4e6,
+ info:"This torso implant automatically injects nootropic supplements into " +
+ "the bloodstream to improve memory, increase focus, and provide other " +
+ "cognitive enhancements.
" +
+ "This augmentation increases the amount of reputation the player gains " +
+ "when working for a company by 20%.",
+ company_rep_mult: 1.2,
+ });
+ NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
+ "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NuoptimalInjectorImplant)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NuoptimalInjectorImplant];
+ }
+ AddToAugmentations(NuoptimalInjectorImplant);
+
+ var SpeechEnhancement = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechEnhancement, repCost:1e3, moneyCost:2.5e6,
+ info:"An advanced neural implant that improves your speaking abilities, making " +
+ "you more convincing and likable in conversations and overall improving your " +
+ "social interactions.
" +
+ "This augmentation: " +
+ "Increases the player's charisma by 10%. " +
+ "Increases the amount of reputation the player gains when working for a company by 10%.",
+ company_rep_mult: 1.1,
+ charisma_mult: 1.1,
+ });
+ SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
+ "Clarke Incorporated", "Bachman & Associates"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechEnhancement)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SpeechEnhancement];
+ }
+ AddToAugmentations(SpeechEnhancement);
+
+ var FocusWire = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].FocusWire, repCost:30e3, moneyCost:180e6,
+ info:"A cranial implant that stops procrastination by blocking specific neural pathways " +
+ "in the brain.
" +
+ "This augmentation: " +
+ "Increases all experience gains by 5%. " +
+ "Increases the amount of money the player gains from working by 20%. " +
+ "Increases the amount of reputation the player gains when working for a company by 10%.",
+ hacking_exp_mult: 1.05,
+ strength_exp_mult: 1.05,
+ defense_exp_mult: 1.05,
+ dexterity_exp_mult: 1.05,
+ agility_exp_mult: 1.05,
+ charisma_exp_mult: 1.05,
+ company_rep_mult: 1.1,
+ work_money_mult: 1.2,
+ });
+ FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].FocusWire)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].FocusWire];
+ }
+ AddToAugmentations(FocusWire)
+
+ var PCDNI = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNI, repCost:150e3, moneyCost:750e6,
+ info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
+ "computers. Connecting to a computer through this jack allows you to interface with " +
+ "it using the brain's electrochemical signals.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 30%. " +
+ "Increases the player's hacking skill by 8%.",
+ company_rep_mult: 1.3,
+ hacking_mult: 1.08,
+ });
+ PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNI)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNI];
+ }
+ AddToAugmentations(PCDNI);
+
+ var PCDNIOptimizer = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNIOptimizer, repCost:200e3, moneyCost:900e6,
+ info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
+ "improves the performance of the interface and gives the user more control options " +
+ "to the connected computer.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 75%. " +
+ "Increases the player's hacking skill by 10%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNI],
+ company_rep_mult: 1.75,
+ hacking_mult: 1.1,
+ });
+ PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNIOptimizer)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNIOptimizer];
+ }
+ AddToAugmentations(PCDNIOptimizer);
+
+ var PCDNINeuralNetwork = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNINeuralNetwork, repCost:600e3, moneyCost:1500e6,
+ info:"This is an additional installation that upgrades the functionality of the " +
+ "PC Direct-Neural Interface augmentation. When connected to a computer, " +
+ "The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
+ "processing power to aid the computer in computational tasks.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 100%. " +
+ "Increases the player's hacking skill by 10%. " +
+ "Increases the player's hacking speed by 5%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNI],
+ company_rep_mult: 2,
+ hacking_mult: 1.1,
+ hacking_speed_mult: 1.05,
+ });
+ PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNINeuralNetwork)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PCDNINeuralNetwork];
+ }
+ AddToAugmentations(PCDNINeuralNetwork);
+
+ var ADRPheromone1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone1, repCost:1500, moneyCost:3.5e6,
+ info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
+ "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
+ "triggers feelings of admiration and approval in other people.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains when working for a company by 10% " +
+ "Increases the amount of reputation the player gains for a faction by 10%.",
+ company_rep_mult: 1.1,
+ faction_rep_mult: 1.1,
+ });
+ ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone1];
+ }
+ AddToAugmentations(ADRPheromone1);
+
+ var ADRPheromone2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone2, repCost:25e3, moneyCost:110e6,
+ info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
+ "which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
+ "triggers feelings of admiration, approval, and respect in others.
" +
+ "This augmentation: " +
+ "Increases the amount of reputation the player gains for a faction and company by 20%.",
+ company_rep_mult: 1.2,
+ faction_rep_mult: 1.2,
+ });
+ ADRPheromone2.addToFactions(["Silhouette", "Four Sigma", "Bachman & Associates", "Clarke Incorporated"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].ADRPheromone2];
+ }
+ AddToAugmentations(ADRPheromone2);
+
+ //HacknetNode Augmentations
+ var HacknetNodeCPUUpload = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCPUUpload, repCost:1500, moneyCost:2.2e6,
+ info:"Uploads the architecture and design details of a Hacknet Node's CPU into " +
+ "the brain. This allows the user to engineer custom hardware and software " +
+ "for the Hacknet Node that provides better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 15%. " +
+ "Decreases the cost of purchasing a Hacknet Node by 15%.",
+ hacknet_node_money_mult: 1.15,
+ hacknet_node_purchase_cost_mult: 0.85,
+ });
+ HacknetNodeCPUUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCPUUpload)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCPUUpload];
+ }
+ AddToAugmentations(HacknetNodeCPUUpload);
+
+ var HacknetNodeCacheUpload = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCacheUpload, repCost:1e3, moneyCost:1.1e6,
+ info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
+ "into the brain. This allows the user to engineer custom cache hardware for the " +
+ "Hacknet Node that offers better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 10%. " +
+ "Decreases the cost of leveling up a Hacknet Node by 15%.",
+ hacknet_node_money_mult: 1.10,
+ hacknet_node_level_cost_mult: 0.85,
+ });
+ HacknetNodeCacheUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCacheUpload)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCacheUpload];
+ }
+ AddToAugmentations(HacknetNodeCacheUpload);
+
+ var HacknetNodeNICUpload = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeNICUpload, repCost:750, moneyCost:900e3,
+ info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
+ "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
+ "offers better performance.
" +
+ "This augmentation: " +
+ "Increases the amount of money produced by Hacknet Nodes by 10%. " +
+ "Decreases the cost of purchasing a Hacknet Node by 10%.",
+ hacknet_node_money_mult: 1.1,
+ hacknet_node_purchase_cost_mult: 0.9,
+ });
+ HacknetNodeNICUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeNICUpload)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeNICUpload];
+ }
+ AddToAugmentations(HacknetNodeNICUpload);
+
+ var HacknetNodeKernelDNI = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeKernelDNI, repCost:3e3, moneyCost:8e6,
+ info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
+ "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
+ "electrochemical signals.
" +
+ "This augmentation increases the amount of money produced by Hacknet Nodes by 25%.",
+ hacknet_node_money_mult: 1.25,
+ });
+ HacknetNodeKernelDNI.addToFactions(["Netburners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeKernelDNI)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeKernelDNI];
+ }
+ AddToAugmentations(HacknetNodeKernelDNI);
+
+ var HacknetNodeCoreDNI = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCoreDNI, repCost:5e3, moneyCost:12e6,
+ info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
+ "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
+ "the mind's electrochemical signals.
" +
+ "This augmentation increases the amount of money produced by Hacknet Nodes by 45%.",
+ hacknet_node_money_mult: 1.45,
+ });
+ HacknetNodeCoreDNI.addToFactions(["Netburners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCoreDNI)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HacknetNodeCoreDNI];
+ }
+ AddToAugmentations(HacknetNodeCoreDNI);
+
+ //Misc/Hybrid augmentations
+ var NeuroFluxGovernor = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor, repCost:500, moneyCost: 750e3,
+ info:"A device that is embedded in the back of the neck. The NeuroFlux Governor " +
+ "monitors and regulates nervous impulses coming to and from the spinal column, " +
+ "essentially 'governing' the body. By doing so, it improves the functionality of the " +
+ "body's nervous system.
" +
+ "This is a special augmentation because it can be leveled up infinitely. Each level of this augmentation " +
+ "increases ALL of the player's multipliers by 1%.",
+ hacking_chance_mult: 1.01,
+ hacking_speed_mult: 1.01,
+ hacking_money_mult: 1.01,
+ hacking_grow_mult: 1.01,
+ hacking_mult: 1.01,
+ strength_mult: 1.01,
+ defense_mult: 1.01,
+ dexterity_mult: 1.01,
+ agility_mult: 1.01,
+ charisma_mult: 1.01,
+ hacking_exp_mult: 1.01,
+ strength_exp_mult: 1.01,
+ defense_exp_mult: 1.01,
+ dexterity_exp_mult: 1.01,
+ agility_exp_mult: 1.01,
+ charisma_exp_mult: 1.01,
+ company_rep_mult: 1.01,
+ faction_rep_mult: 1.01,
+ crime_money_mult: 1.01,
+ crime_success_mult: 1.01,
+ hacknet_node_money_mult: 1.01,
+ hacknet_node_purchase_cost_mult: 0.99,
+ hacknet_node_ram_cost_mult: 0.99,
+ hacknet_node_core_cost_mult: 0.99,
+ hacknet_node_level_cost_mult: 0.99,
+ work_money_mult: 1.01,
+ });
+
+ // Set the Augmentation's level to the currently-installed level
+ let currLevel = 0;
+ for (let i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations[i].name === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ currLevel = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations[i].level;
+ }
+ }
+ NeuroFluxGovernor.level = currLevel;
+
+ // To set the price/rep req of the NeuroFlux, we have to take into account NeuroFlux
+ // levels that are purchased but not yet installed
+ let nextLevel = currLevel;
+ for (let i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations[i].name === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ ++nextLevel;
+ }
+ }
+ mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].NeuroFluxGovernorLevelMult, nextLevel);
+ NeuroFluxGovernor.baseRepRequirement = 500 * mult * _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].AugmentationRepCost;
+ NeuroFluxGovernor.baseCost = 750e3 * mult * _Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_3__["BitNodeMultipliers"].AugmentationMoneyCost;
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor];
+ }
+ NeuroFluxGovernor.addToAllFactions();
+ AddToAugmentations(NeuroFluxGovernor);
+
+ var Neurotrainer1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer1, repCost:400, moneyCost:800e3,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. It is " +
+ "installed by releasing millions of nanobots into the human brain, each of which " +
+ "attaches to a different neural pathway to enhance the brain's ability to retain " +
+ "and retrieve information.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 10%.",
+ hacking_exp_mult: 1.1,
+ strength_exp_mult: 1.1,
+ defense_exp_mult: 1.1,
+ dexterity_exp_mult: 1.1,
+ agility_exp_mult: 1.1,
+ charisma_exp_mult: 1.1,
+ });
+ Neurotrainer1.addToFactions(["CyberSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer1];
+ }
+ AddToAugmentations(Neurotrainer1);
+
+ var Neurotrainer2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer2, repCost:4e3, moneyCost:9e6,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
+ "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
+ "require Neurotrainer I to be installed as a prerequisite.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 15%.",
+ hacking_exp_mult: 1.15,
+ strength_exp_mult: 1.15,
+ defense_exp_mult: 1.15,
+ dexterity_exp_mult: 1.15,
+ agility_exp_mult: 1.15,
+ charisma_exp_mult: 1.15,
+ });
+ Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer2];
+ }
+ AddToAugmentations(Neurotrainer2);
+
+ var Neurotrainer3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer3, repCost:10e3, moneyCost:26e6,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
+ "is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
+ "but it does not require either of them to be installed as a prerequisite.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 20%.",
+ hacking_exp_mult: 1.2,
+ strength_exp_mult: 1.2,
+ defense_exp_mult: 1.2,
+ dexterity_exp_mult: 1.2,
+ agility_exp_mult: 1.2,
+ charisma_exp_mult: 1.2,
+ });
+ Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer3)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurotrainer3];
+ }
+ AddToAugmentations(Neurotrainer3);
+
+ var Hypersight = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Hypersight, repCost:60e3, moneyCost:550e6,
+ info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
+ "Embedded circuitry within the implant provides the ability to detect heat and movement " +
+ "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
+ "This augmentation: " +
+ "Increases the player's dexterity by 40%. " +
+ "Increases the player's hacking speed by 3%. " +
+ "Increases the amount of money the player gains from hacking by 10%.",
+ dexterity_mult: 1.4,
+ hacking_speed_mult: 1.03,
+ hacking_money_mult: 1.1,
+ });
+ Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Hypersight)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Hypersight];
+ }
+ AddToAugmentations(Hypersight);
+
+ var LuminCloaking1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking1, repCost:600, moneyCost:1e6,
+ info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These " +
+ "cells, when powered, have a negative refractive index. As a result, they bend light " +
+ "around the skin, making the user much harder to see from the naked eye.
" +
+ "This augmentation: " +
+ "Increases the player's agility by 5% " +
+ "Increases the amount of money the player gains from crimes by 10%.",
+ agility_mult: 1.05,
+ crime_money_mult: 1.1,
+ });
+ LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking1)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking1];
+ }
+ AddToAugmentations(LuminCloaking1);
+
+ var LuminCloaking2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking2, repCost:2e3, moneyCost:6e6,
+ info:"This is a more advanced version of the LuminCloaking-V2 augmentation. This skin implant " +
+ "reinforces the skin with highly-advanced synthetic cells. These " +
+ "cells, when powered, are capable of not only bending light but also of bending heat, " +
+ "making the user more resilient as well as stealthy.
" +
+ "This augmentation: " +
+ "Increases the player's agility by 10% " +
+ "Increases the player's defense by 10% " +
+ "Increases the amount of money the player gains from crimes by 25%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking1],
+ agility_mult: 1.1,
+ defense_mult: 1.1,
+ crime_money_mult: 1.25,
+ });
+ LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking2)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].LuminCloaking2];
+ }
+ AddToAugmentations(LuminCloaking2);
+
+ var SmartSonar = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartSonar, repCost:9e3, moneyCost:15e6,
+ info:"A cochlear implant that helps the player detect and locate enemies " +
+ "using sound propagation.
" +
+ "This augmentation: " +
+ "Increases the player's dexterity by 10%. " +
+ "Increases the player's dexterity experience gain rate by 15%. " +
+ "Increases the amount of money the player gains from crimes by 25%.",
+ dexterity_mult: 1.1,
+ dexterity_exp_mult: 1.15,
+ crime_money_mult: 1.25,
+ });
+ SmartSonar.addToFactions(["Slum Snakes"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartSonar)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartSonar];
+ }
+ AddToAugmentations(SmartSonar);
+
+ var PowerRecirculator = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PowerRecirculator, repCost:10e3, moneyCost:36e6,
+ info:"The body's nerves are attached with polypyrrole nanocircuits that " +
+ "are capable of capturing wasted energy (in the form of heat) " +
+ "and converting it back into usable power.
" +
+ "This augmentation: " +
+ "Increases all of the player's stats by 5%. " +
+ "Increases the player's experience gain rate for all stats by 10%.",
+ hacking_mult: 1.05,
+ strength_mult: 1.05,
+ defense_mult: 1.05,
+ dexterity_mult: 1.05,
+ agility_mult: 1.05,
+ charisma_mult: 1.05,
+ hacking_exp_mult: 1.1,
+ strength_exp_mult: 1.1,
+ defense_exp_mult: 1.1,
+ dexterity_exp_mult: 1.1,
+ agility_exp_mult: 1.1,
+ charisma_exp_mult: 1.1,
+ });
+ PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PowerRecirculator)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PowerRecirculator];
+ }
+ AddToAugmentations(PowerRecirculator);
+
+ //Unique AUGS (Each Faction gets one unique augmentation)
+ //Factions that already have unique augs up to this point:
+ // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
+ // Silhouette
+
+ //Illuminati
+ var QLink = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].QLink, repCost:750e3, moneyCost:1300e6,
+ info:"A brain implant that wirelessly connects you to the Illuminati's " +
+ "quantum supercomputer, allowing you to access and use its incredible " +
+ "computing power.
" +
+ "This augmentation: " +
+ "Increases the player's hacking speed by 10%. " +
+ "Increases the player's chance of successfully performing a hack by 30%. " +
+ "Increases the amount of money the player gains from hacking by 100%.",
+ hacking_speed_mult: 1.1,
+ hacking_chance_mult: 1.3,
+ hacking_money_mult: 2,
+ });
+ QLink.addToFactions(["Illuminati"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].QLink)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].QLink];
+ }
+ AddToAugmentations(QLink);
+
+ //Daedalus
+ var RedPill = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheRedPill, repCost:1e6, moneyCost:0,
+ info:"It's time to leave the cave."
+ });
+ RedPill.addToFactions(["Daedalus"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheRedPill)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheRedPill];
+ }
+ AddToAugmentations(RedPill);
+
+ //Covenant
+ var SPTN97 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SPTN97, repCost:500e3, moneyCost:975e6,
+ info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an " +
+ "artificially-synthesized gene that was developed by DARPA to create " +
+ "super-soldiers through genetic modification. The gene was outlawed in " +
+ "2056.
" +
+ "This augmentation: " +
+ "Increases all of the player's combat stats by 75%. " +
+ "Increases the player's hacking skill by 15%.",
+ strength_mult: 1.75,
+ defense_mult: 1.75,
+ dexterity_mult: 1.75,
+ agility_mult: 1.75,
+ hacking_mult: 1.15,
+ });
+ SPTN97.addToFactions(["The Covenant"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SPTN97)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SPTN97];
+ }
+ AddToAugmentations(SPTN97);
+
+ //ECorp
+ var HiveMind = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HiveMind, repCost:600e3, moneyCost:1100e6,
+ info:"A brain implant developed by ECorp. They do not reveal what " +
+ "exactly the implant does, but they promise that it will greatly " +
+ "enhance your abilities.",
+ hacking_grow_mult: 3,
+ });
+ HiveMind.addToFactions(["ECorp"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HiveMind)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HiveMind];
+ }
+ AddToAugmentations(HiveMind);
+
+ //MegaCorp
+ var CordiARCReactor = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CordiARCReactor, repCost:450e3, moneyCost:1000e6,
+ info:"The thoracic cavity is equipped with a small chamber designed " +
+ "to hold and sustain hydrogen plasma. The plasma is used to generate " +
+ "fusion power through nuclear fusion, providing limitless amount of clean " +
+ "energy for the body.
" +
+ "This augmentation: " +
+ "Increases all of the player's combat stats by 35%. " +
+ "Increases all of the player's combat stat experience gain rate by 35%.",
+ strength_mult: 1.35,
+ defense_mult: 1.35,
+ dexterity_mult: 1.35,
+ agility_mult: 1.35,
+ strength_exp_mult: 1.35,
+ defense_exp_mult: 1.35,
+ dexterity_exp_mult: 1.35,
+ agility_exp_mult: 1.35,
+ });
+ CordiARCReactor.addToFactions(["MegaCorp"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CordiARCReactor)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CordiARCReactor];
+ }
+ AddToAugmentations(CordiARCReactor);
+
+ //BachmanAndAssociates
+ var SmartJaw = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartJaw, repCost:150e3, moneyCost:550e6,
+ info:"A bionic jaw that contains advanced hardware and software " +
+ "capable of psychoanalyzing and profiling the personality of " +
+ "others using optical imaging software.
" +
+ "This augmentation: " +
+ "Increases the player's charisma by 50%. " +
+ "Increases the player's charisma experience gain rate by 50%. " +
+ "Increases the amount of reputation the player gains for a company by 25%. " +
+ "Increases the amount of reputation the player gains for a faction by 25%.",
+ charisma_mult: 1.5,
+ charisma_exp_mult: 1.5,
+ company_rep_mult: 1.25,
+ faction_rep_mult: 1.25,
+ });
+ SmartJaw.addToFactions(["Bachman & Associates"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartJaw)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SmartJaw];
+ }
+ AddToAugmentations(SmartJaw);
+
+ //BladeIndustries
+ var Neotra = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neotra, repCost:225e3, moneyCost:575e6,
+ info:"A highly-advanced techno-organic drug that is injected into the skeletal " +
+ "and integumentary system. The drug permanently modifies the DNA of the " +
+ "body's skin and bone cells, granting them the ability to repair " +
+ "and restructure themselves.
" +
+ "This augmentation increases the player's strength and defense by 55%.",
+ strength_mult: 1.55,
+ defense_mult: 1.55,
+ });
+ Neotra.addToFactions(["Blade Industries"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neotra)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neotra];
+ }
+ AddToAugmentations(Neotra);
+
+ //NWO
+ var Xanipher = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Xanipher, repCost:350e3, moneyCost:850e6,
+ info:"A concoction of advanced nanobots that is orally ingested into the " +
+ "body. These nanobots induce physiological change and significantly " +
+ "improve the body's functionining in all aspects.
" +
+ "This augmentation: " +
+ "Increases all of the player's stats by 20%. " +
+ "Increases the player's experience gain rate for all stats by 15%.",
+ hacking_mult: 1.2,
+ strength_mult: 1.2,
+ defense_mult: 1.2,
+ dexterity_mult: 1.2,
+ agility_mult: 1.2,
+ charisma_mult: 1.2,
+ hacking_exp_mult: 1.15,
+ strength_exp_mult: 1.15,
+ defense_exp_mult: 1.15,
+ dexterity_exp_mult: 1.15,
+ agility_exp_mult: 1.15,
+ charisma_exp_mult: 1.15,
+ });
+ Xanipher.addToFactions(["NWO"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Xanipher)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Xanipher];
+ }
+ AddToAugmentations(Xanipher);
+
+ //ClarkeIncorporated
+ var nextSENS = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].nextSENS, repCost:175e3, moneyCost:385e6,
+ info:"The body is genetically re-engineered to maintain a state " +
+ "of negligible senescence, preventing the body from " +
+ "deteriorating with age.
" +
+ "This augmentation increases all of the player's stats by 20%.",
+ hacking_mult: 1.2,
+ strength_mult: 1.2,
+ defense_mult: 1.2,
+ dexterity_mult: 1.2,
+ agility_mult: 1.2,
+ charisma_mult: 1.2,
+ });
+ nextSENS.addToFactions(["Clarke Incorporated"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].nextSENS)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].nextSENS];
+ }
+ AddToAugmentations(nextSENS);
+
+ //OmniTekIncorporated
+ var OmniTekInfoLoad = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].OmniTekInfoLoad, repCost:250e3, moneyCost:575e6,
+ info:"OmniTek's data and information repository is uploaded " +
+ "into your brain, enhancing your programming and " +
+ "hacking abilities.
" +
+ "This augmentation: " +
+ "Increases the player's hacking skill by 20%. " +
+ "Increases the player's hacking experience gain rate by 25%.",
+ hacking_mult: 1.2,
+ hacking_exp_mult: 1.25,
+ });
+ OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].OmniTekInfoLoad)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].OmniTekInfoLoad];
+ }
+ AddToAugmentations(OmniTekInfoLoad);
+
+ //FourSigma
+ //TODO Later when Intelligence is added in . Some aug that greatly increases int
+
+ //KuaiGongInternational
+ var PhotosyntheticCells = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PhotosyntheticCells, repCost:225e3, moneyCost:550e6,
+ info:"Chloroplasts are added to epidermal stem cells and are applied " +
+ "to the body using a skin graft. The result is photosynthetic " +
+ "skin cells, allowing users to generate their own energy " +
+ "and nutrition using solar power.
" +
+ "This augmentation increases the player's strength, defense, and agility by 40%.",
+ strength_mult: 1.4,
+ defense_mult: 1.4,
+ agility_mult: 1.4,
+ });
+ PhotosyntheticCells.addToFactions(["KuaiGong International"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PhotosyntheticCells)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].PhotosyntheticCells];
+ }
+ AddToAugmentations(PhotosyntheticCells);
+
+ //BitRunners
+ var Neurolink = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurolink, repCost:350e3, moneyCost:875e6,
+ info:"A brain implant that provides a high-bandwidth, direct neural link between your " +
+ "mind and BitRunners' data servers, which reportedly contain " +
+ "the largest database of hacking tools and information in the world.
" +
+ "This augmentation: " +
+ "Increases the player's hacking skill by 15%. " +
+ "Increases the player's hacking experience gain rate by 20%. " +
+ "Increases the player's chance of successfully performing a hack by 10%. " +
+ "Increases the player's hacking speed by 5%. " +
+ "Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset.",
+ hacking_mult: 1.15,
+ hacking_exp_mult: 1.2,
+ hacking_chance_mult: 1.1,
+ hacking_speed_mult: 1.05,
+ });
+ Neurolink.addToFactions(["BitRunners"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurolink)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neurolink];
+ }
+ AddToAugmentations(Neurolink);
+
+ //BlackHand
+ var TheBlackHand = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheBlackHand, repCost:40e3, moneyCost:110e6,
+ info:"A highly advanced bionic hand. This prosthetic not only " +
+ "enhances strength and dexterity but it is also embedded " +
+ "with hardware and firmware that lets the user connect to, access and hack " +
+ "devices and machines just by touching them.
" +
+ "This augmentation: " +
+ "Increases the player's strength and dexterity by 15%. " +
+ "Increases the player's hacking skill by 10%. " +
+ "Increases the player's hacking speed by 2%. " +
+ "Increases the amount of money the player gains from hacking by 10%.",
+ strength_mult: 1.15,
+ dexterity_mult: 1.15,
+ hacking_mult: 1.1,
+ hacking_speed_mult: 1.02,
+ hacking_money_mult: 1.1,
+ });
+ TheBlackHand.addToFactions(["The Black Hand"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheBlackHand)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].TheBlackHand];
+ }
+ AddToAugmentations(TheBlackHand);
+
+ //NiteSec
+ var CRTX42AA = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CRTX42AA, repCost:18e3, moneyCost:45e6,
+ info:"The CRTX42-AA gene is injected into the genome. " +
+ "The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal " +
+ "cortex and improves cognitive abilities.
" +
+ "This augmentation: " +
+ "Improves the player's hacking skill by 8%. " +
+ "Improves the player's hacking experience gain rate by 15%.",
+ hacking_mult: 1.08,
+ hacking_exp_mult: 1.15,
+ });
+ CRTX42AA.addToFactions(["NiteSec"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CRTX42AA)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CRTX42AA];
+ }
+ AddToAugmentations(CRTX42AA);
+
+ //Chongqing
+ var Neuregen = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuregen, repCost:15e3, moneyCost:75e6,
+ info:"A drug that genetically modifies the neurons in the brain. " +
+ "The result is that these neurons never die and continuously " +
+ "regenerate and strengthen themselves.
" +
+ "This augmentation increases the player's hacking experience gain rate by 40%.",
+ hacking_exp_mult: 1.4,
+ });
+ Neuregen.addToFactions(["Chongqing"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuregen)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].Neuregen];
+ }
+ AddToAugmentations(Neuregen);
+
+ //Sector12
+ var CashRoot = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CashRoot, repCost:5e3, moneyCost:25e6,
+ info:"A collection of digital assets saved on a small chip. The chip is implanted " +
+ "into your wrist. A small jack in the chip allows you to connect it to a computer " +
+ "and upload the assets.
" +
+ "This augmentation: " +
+ "Lets the player start with $1,000,000 after a reset. " +
+ "Lets the player start with the BruteSSH.exe program after a reset."
+ });
+ CashRoot.addToFactions(["Sector-12"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CashRoot)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].CashRoot];
+ }
+ AddToAugmentations(CashRoot);
+
+ //NewTokyo
+ var NutriGen = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NutriGen, repCost:2500, moneyCost:500e3,
+ info:"A thermo-powered artificial nutrition generator. Endogenously " +
+ "synthesizes glucose, amino acids, and vitamins and redistributes them " +
+ "across the body. The device is powered by the body's naturally wasted " +
+ "energy in the form of heat.
" +
+ "This augmentation: " +
+ "Increases the player's experience gain rate for all combat stats by 20%.",
+ strength_exp_mult: 1.2,
+ defense_exp_mult: 1.2,
+ dexterity_exp_mult: 1.2,
+ agility_exp_mult: 1.2,
+ });
+ NutriGen.addToFactions(["New Tokyo"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NutriGen)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NutriGen];
+ }
+ AddToAugmentations(NutriGen);
+
+ //Aevum
+ //TODO Later Something that lets you learn advanced math...this increases int
+ //and profits as a trader/from trading
+
+ //Ishima
+ var INFRARet = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].INFRARet, repCost:3e3, moneyCost:6e6,
+ info:"A retina implant consisting of a tiny chip that sits behind the " +
+ "retina. This implant lets people visually detect infrared radiation.
" +
+ "This augmentation: " +
+ "Increases the player's crime success rate by 25%. " +
+ "Increases the amount of money the player gains from crimes by 10%. " +
+ "Increases the player's dexterity by 10%.",
+ crime_success_mult: 1.25,
+ crime_money_mult: 1.1,
+ dexterity_mult: 1.1,
+ });
+ INFRARet.addToFactions(["Ishima"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].INFRARet)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].INFRARet];
+ }
+ AddToAugmentations(INFRARet);
+
+ //Volhaven
+ var DermaForce = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DermaForce, repCost:6e3, moneyCost:10e6,
+ info:"A synthetic skin is grafted onto the body. The skin consists of " +
+ "millions of nanobots capable of projecting high-density muon beams, " +
+ "creating an energy barrier around the user.
" +
+ "This augmentation increases the player's defense by 40%.",
+ defense_mult: 1.4,
+ });
+ DermaForce.addToFactions(["Volhaven"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DermaForce)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].DermaForce];
+ }
+ AddToAugmentations(DermaForce);
+
+ //SpeakersForTheDead
+ var GrapheneBrachiBlades = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBrachiBlades, repCost:90e3, moneyCost:500e6,
+ info:"An upgrade to the BrachiBlades augmentation. It infuses " +
+ "the retractable blades with an advanced graphene material " +
+ "to make them much stronger and lighter.
" +
+ "This augmentation: " +
+ "Increases the player's strength and defense by 40%. " +
+ "Increases the player's crime success rate by 10%. " +
+ "Increases the amount of money the player gains from crimes by 30%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BrachiBlades],
+ strength_mult: 1.4,
+ defense_mult: 1.4,
+ crime_success_mult: 1.1,
+ crime_money_mult: 1.3,
+ });
+ GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBrachiBlades)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBrachiBlades];
+ }
+ AddToAugmentations(GrapheneBrachiBlades);
+
+ //DarkArmy
+ var GrapheneBionicArms = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicArms, repCost:200e3, moneyCost:750e6,
+ info:"An upgrade to the Bionic Arms augmentation. It infuses the " +
+ "prosthetic arms with an advanced graphene material " +
+ "to make them much stronger and lighter.
" +
+ "This augmentation increases the player's strength and dexterity by 85%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicArms],
+ strength_mult: 1.85,
+ dexterity_mult: 1.85,
+ });
+ GrapheneBionicArms.addToFactions(["The Dark Army"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicArms)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GrapheneBionicArms];
+ }
+ AddToAugmentations(GrapheneBionicArms);
+
+ //TheSyndicate
+ var BrachiBlades = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BrachiBlades, repCost:5e3, moneyCost:18e6,
+ info:"A set of retractable plasteel blades are implanted in the arm, underneath the skin.
" +
+ "This augmentation: " +
+ "Increases the player's strength and defense by 15%. " +
+ "Increases the player's crime success rate by 10%. " +
+ "Increases the amount of money the player gains from crimes by 15%.",
+ strength_mult: 1.15,
+ defense_mult: 1.15,
+ crime_success_mult: 1.1,
+ crime_money_mult: 1.15,
+ });
+ BrachiBlades.addToFactions(["The Syndicate"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BrachiBlades)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BrachiBlades];
+ }
+ AddToAugmentations(BrachiBlades);
+
+ //Tetrads
+ var BionicArms = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicArms, repCost:25e3, moneyCost:55e6,
+ info:"Cybernetic arms created from plasteel and carbon fibers that completely replace " +
+ "the user's organic arms.
" +
+ "This augmentation increases the user's strength and dexterity by 30%.",
+ strength_mult: 1.3,
+ dexterity_mult: 1.3,
+ });
+ BionicArms.addToFactions(["Tetrads"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicArms)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BionicArms];
+ }
+ AddToAugmentations(BionicArms);
+
+ //TianDiHui
+ var SNA = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SNA, repCost:2500, moneyCost:6e6,
+ info:"A cranial implant that affects the user's personality, making them better " +
+ "at negotiation in social situations.
" +
+ "This augmentation: " +
+ "Increases the amount of money the player earns at a company by 10%. " +
+ "Increases the amount of reputation the player gains when working for a " +
+ "company or faction by 15%.",
+ work_money_mult: 1.1,
+ company_rep_mult: 1.15,
+ faction_rep_mult: 1.15,
+ });
+ SNA.addToFactions(["Tian Di Hui"]);
+ if (augmentationExists(_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SNA)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].SNA];
+ }
+ AddToAugmentations(SNA);
+
+ //For BitNode-2, add all Augmentations to crime/evil factions.
+ //Do this before adding special Augmentations that become available in later BitNodes
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bitNodeN === 2) {
+ console.log("Adding all augmentations to crime factions for Bit node 2");
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["Slum Snakes"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["Tetrads"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["The Syndicate"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["The Dark Army"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["Speakers for the Dead"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["NiteSec"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ _Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["Factions"]["The Black Hand"].addAllAugmentations(_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]);
+ }
+
+ //Special Bladeburner Augmentations
+ var BladeburnersFactionName = "Bladeburners";
+ if (Object(_Faction_Factions__WEBPACK_IMPORTED_MODULE_5__["factionExists"])(BladeburnersFactionName)) {
+ var EsperEyewear = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EsperEyewear, repCost:500, moneyCost:33e6,
+ info:"Ballistic-grade protective and retractable eyewear that was designed specially " +
+ "for Bladeburner units. This " +
+ "is implanted by installing a mechanical frame in the skull's orbit. " +
+ "This frame interfaces with the brain and allows the user to " +
+ "automatically extrude and extract the eyewear. The eyewear protects " +
+ "against debris, shrapnel, laser, flash, and gas. It is also " +
+ "embedded with a data processing chip that can be programmed to display an " +
+ "AR HUD and assist the user in field missions.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 3%. " +
+ "Increases the player's dexterity by 5%.",
+ bladeburner_success_chance_mult: 1.03,
+ dexterity_mult: 1.05,
+ });
+ EsperEyewear.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(EsperEyewear);
+
+ var EMS4Recombination = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].EMS4Recombination, repCost: 1e3, moneyCost:55e6,
+ info:"A DNA recombination of the EMS-4 Gene. This genetic engineering " +
+ "technique was originally used on Bladeburners during the Synthoid uprising " +
+ "to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
+ "improve reflexes and memory-recall among other things.
" +
+ "This augmentation: " +
+ "Increases the player's sucess chance in Bladeburner contracts/operations by 3%. " +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 5%. " +
+ "Increases the player's Bladeburner stamina gain rate by 2%.",
+ bladeburner_success_chance_mult: 1.03,
+ bladeburner_analysis_mult: 1.05,
+ bladeburner_stamina_gain_mult: 1.02,
+ });
+ EMS4Recombination.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(EMS4Recombination);
+
+ var OrionShoulder = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].OrionShoulder, repCost:2.5e3, moneyCost:110e6,
+ info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, " +
+ "the ORION-MKIV shoulder enhances the strength and dexterity " +
+ "of the user's right arm. It also provides protection due to its " +
+ "crystallized graphene plating.
" +
+ "This augmentation: " +
+ "Increases the player's defense by 5%. " +
+ "Increases the player's strength and dexterity by 5%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 4%.",
+ defense_mult: 1.05,
+ strength_mult: 1.05,
+ dexterity_mult: 1.05,
+ bladeburner_success_chance_mult: 1.04,
+ });
+ OrionShoulder.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(OrionShoulder);
+
+ var HyperionV1 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HyperionV1, repCost: 5e3, moneyCost:550e6,
+ info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable " +
+ "of rapidly firing bolts of high-density plasma. The weapon is meant to " +
+ "be used against augmented enemies as the ionized " +
+ "nature of the plasma disrupts the electrical systems of Augmentations. However, " +
+ "it can also be effective against non-augmented enemies due to its high temperature " +
+ "and concussive force.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 6%.",
+ bladeburner_success_chance_mult: 1.06,
+ });
+ HyperionV1.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(HyperionV1);
+
+ var HyperionV2 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HyperionV2, repCost:10e3, moneyCost:1.1e9,
+ info:"A pair of mini plasma cannons embedded into the hands. This augmentation " +
+ "is more advanced and powerful than the original V1 model. This V2 model is " +
+ "more power-efficiency, more accurate, and can fire plasma bolts at a much " +
+ "higher velocity than the V1 model.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 8%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].HyperionV1],
+ bladeburner_success_chance_mult: 1.08,
+ });
+ HyperionV2.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(HyperionV2);
+
+ var GolemSerum = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].GolemSerum, repCost:12.5e3, moneyCost:2.2e9,
+ info:"A serum that permanently enhances many aspects of a human's capabilities, " +
+ "including strength, speed, immune system performance, and mitochondrial efficiency. The " +
+ "serum was originally developed by the Chinese military in an attempt to " +
+ "create super soldiers.
" +
+ "This augmentation: " +
+ "Increases all of the player's combat stats by 7%. " +
+ "Increases the player's Bladeburner stamina gain rate by 5%. ",
+ strength_mult: 1.07,
+ defense_mult: 1.07,
+ dexterity_mult: 1.07,
+ agility_mult: 1.07,
+ bladeburner_stamina_gain_mult: 1.05,
+ });
+ GolemSerum.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(GolemSerum);
+
+ var VangelisVirus = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].VangelisVirus, repCost:7.5e3, moneyCost:550e6,
+ info:"A synthetic symbiotic virus that is injected into the human brain tissue. The Vangelis virus " +
+ "heightens the senses and focus of its host, and also enhances its intuition.
" +
+ "This augmentation: " +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 10%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 4%. " +
+ "Increases the player's dexterity experience gain rate by 10%.",
+ dexterity_exp_mult: 1.1,
+ bladeburner_analysis_mult: 1.1,
+ bladeburner_success_chance_mult: 1.04,
+ });
+ VangelisVirus.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(VangelisVirus);
+
+ var VangelisVirus3 = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].VangelisVirus3, repCost:15e3, moneyCost:2.2e9,
+ info:"An improved version of Vangelis, a synthetic symbiotic virus that is " +
+ "injected into the human brain tissue. On top of the benefits of the original " +
+ "virus, this also grants an accelerated healing factor and enhanced " +
+ "agility/reflexes.
" +
+ "This augmentation: " +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 15%. " +
+ "Increases the player's defense and dexterity experience gain rate by 10%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 5%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].VangelisVirus],
+ defense_exp_mult: 1.1,
+ dexterity_exp_mult: 1.1,
+ bladeburner_analysis_mult: 1.15,
+ bladeburner_success_chance_mult: 1.05,
+ });
+ VangelisVirus3.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(VangelisVirus3);
+
+ var INTERLINKED = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].INTERLINKED, repCost:10e3, moneyCost:1.1e9,
+ info:"The DNA is genetically modified to enhance the human's body " +
+ "extracellular matrix (ECM). This improves the ECM's ability to " +
+ "structurally support the body and grants heightened strength and " +
+ "durability.
" +
+ "This augmentation: " +
+ "Increases the player's experience gain rate for all combat stats by 5%. " +
+ "Increases the player's Bladeburner max stamina by 10%.",
+ strength_exp_mult: 1.05,
+ defense_exp_mult: 1.05,
+ dexterity_exp_mult: 1.05,
+ agility_exp_mult: 1.05,
+ bladeburner_max_stamina_mult: 1.1,
+ });
+ INTERLINKED.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(INTERLINKED);
+
+ var BladeRunner = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeRunner, repCost:8e3, moneyCost:1.65e9,
+ info:"A cybernetic foot augmentation that was specially created for Bladeburners " +
+ "during the Synthoid Uprising. The organic musculature of the human foot " +
+ "is enhanced with flexible carbon nanotube matrices that are controlled by " +
+ "intelligent servo-motors.
" +
+ "This augmentation: " +
+ "Increases the player's agility by 5%. " +
+ "Increases the player's Bladeburner max stamina by 5%. " +
+ "Increases the player's Bladeburner stamina gain rate by 5%. ",
+ agility_mult: 1.05,
+ bladeburner_max_stamina_mult: 1.05,
+ bladeburner_stamina_gain_mult: 1.05,
+ });
+ BladeRunner.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeRunner);
+
+ var BladeArmor = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmor, repCost:5e3, moneyCost:275e6,
+ info:"A powered exoskeleton suit (exosuit) designed as armor for Bladeburner units. This " +
+ "exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, " +
+ "concussive, thermal, chemical, and electric trauma. It also enhances the user's " +
+ "strength and agility.
" +
+ "This augmentation: " +
+ "Increases all of the player's combat stats by 4%. " +
+ "Increases the player's Bladeburner stamina gain rate by 2%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 3%.",
+ strength_mult: 1.04,
+ defense_mult: 1.04,
+ dexterity_mult: 1.04,
+ agility_mult: 1.04,
+ bladeburner_stamina_gain_mult: 1.02,
+ bladeburner_success_chance_mult: 1.03,
+ });
+ BladeArmor.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmor);
+
+ var BladeArmorPowerCells = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorPowerCells, repCost:7.5e3, moneyCost:550e6,
+ info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of " +
+ "more efficiently storing and using power.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 5%. " +
+ "Increases the player's Bladeburner stamina gain rate by 2%. " +
+ "Increases the player's Bladeburner max stamina by 5%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmor],
+ bladeburner_success_chance_mult: 1.05,
+ bladeburner_stamina_gain_mult: 1.02,
+ bladeburner_max_stamina_mult: 1.05,
+ });
+ BladeArmorPowerCells.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorPowerCells);
+
+ var BladeArmorEnergyShielding = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorEnergyShielding, repCost:8.5e3, moneyCost:1.1e9,
+ info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system " +
+ "that is capable of projecting an energy shielding force field.
" +
+ "This augmentation: " +
+ "Increases the player's defense by 5%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 6%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmor],
+ defense_mult: 1.05,
+ bladeburner_success_chance_mult: 1.06,
+ });
+ BladeArmorEnergyShielding.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorEnergyShielding);
+
+ var BladeArmorUnibeam = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorUnibeam, repCost:12.5e3, moneyCost:3.3e9,
+ info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
+ "weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
+ "threats while keeping casualties to a minimum.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 8%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmor],
+ bladeburner_success_chance_mult: 1.08,
+ });
+ BladeArmorUnibeam.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorUnibeam);
+
+ var BladeArmorOmnibeam = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorOmnibeam, repCost:25e3, moneyCost:5.5e9,
+ info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use " +
+ "multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
+ "modules that combine together to form a single, more powerful beam of up to " +
+ "2000MW.
" +
+ "This augmentation: " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 10%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorUnibeam],
+ bladeburner_success_chance_mult: 1.1,
+ });
+ BladeArmorOmnibeam.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorOmnibeam);
+
+ var BladeArmorIPU = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmorIPU, repCost: 6e3, moneyCost:220e6,
+ info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing " +
+ "Unit that was specially designed to analyze Synthoid related data and " +
+ "information.
" +
+ "This augmentation: " +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 15%. " +
+ "Increases the player's success chance in Bladeburner contracts/operations by 2%.",
+ prereqs:[_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladeArmor],
+ bladeburner_analysis_mult: 1.15,
+ bladeburner_success_chance_mult: 1.02,
+ });
+ BladeArmorIPU.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorIPU);
+
+ var BladesSimulacrum = new _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"]({
+ name:_data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].BladesSimulacrum, repCost:3e3, moneyCost:80e9,
+ info:"A highly-advanced matter phase-shifter module that is embedded " +
+ "in the brainstem and cerebellum. This augmentation allows " +
+ "the user to project and control a holographic simulacrum within an " +
+ "extremely large radius. These specially-modified holograms were specially " +
+ "weaponized by Bladeburner units to be used against Synthoids.
" +
+ "This augmentation allows you to perform Bladeburner actions and other " +
+ "actions (such as working, commiting crimes, etc.) at the same time."
+ });
+ BladesSimulacrum.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladesSimulacrum);
+ }
+
+ //Update costs based on how many have been purchased
+ var mult = Math.pow(_Constants__WEBPACK_IMPORTED_MODULE_4__["CONSTANTS"].MultipleAugMultiplier, _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations.length);
+ for (var name in _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]) {
+ if (_Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"].hasOwnProperty(name)) {
+ _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name].baseCost *= mult;
+ }
+ }
+
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].reapplyAllAugmentations();
+}
+
+//Resets an Augmentation during (re-initizliation)
+function resetAugmentation(newAugObject) {
+ if (!(newAugObject instanceof _Augmentation__WEBPACK_IMPORTED_MODULE_0__["Augmentation"])) {
+ throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");
+ }
+ var name = newAugObject.name;
+ if (augmentationExists(name)) {
+ delete _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name];
+ }
+ AddToAugmentations(newAugObject);
+}
+
+function applyAugmentation(aug, reapply=false) {
+ _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][aug.name].owned = true;
+
+ const augObj = _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][aug.name];
+
+ // Apply multipliers
+ for (const mult in augObj.mults) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"][mult] == null) {
+ console.warn(`Augmentation has unrecognized multiplier property: ${mult}`);
+ } else {
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"][mult] *= augObj.mults[mult];
+ }
+ }
+
+ // Special logic for NeuroFlux Governor
+ if (aug.name === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ if (!reapply) {
+ _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][aug.name].level = aug.level;
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations[i].name == _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations[i].level = aug.level;
+ break;
+ }
}
}
}
- /**
- * Serialize the current object to a JSON save state.
- */
- toJSON() {
- return JSONReviver_1.Generic_toJSON("Faction", this);
+
+ if (aug.name === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.length; ++i) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations[i].name == _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ //Already have this aug, just upgrade the level
+ return;
+ }
+ }
+ }
+
+ // Push onto Player's Augmentation list
+ if (!reapply) {
+ var ownedAug = new PlayerOwnedAugmentation(aug.name);
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.push(ownedAug);
}
}
-exports.Faction = Faction;
-JSONReviver_1.Reviver.constructors.Faction = Faction;
+
+function installAugmentations(cbScript=null) {
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations.length == 0) {
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You have not purchased any Augmentations to install!");
+ return false;
+ }
+ var augmentationList = "";
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations.length; ++i) {
+ var aug = _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations[i].name];
+ if (aug == null) {
+ console.log("ERROR. Invalid augmentation");
+ continue;
+ }
+ applyAugmentation(_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations[i]);
+ augmentationList += (aug.name + " ");
+ }
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations = [];
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You slowly drift to sleep as scientists put you under in order " +
+ "to install the following Augmentations: " + augmentationList +
+ " You wake up in your home...you feel different...");
+ Object(_Prestige__WEBPACK_IMPORTED_MODULE_9__[/* prestigeAugmentation */ "a"])();
+
+ //Run a script after prestiging
+ if (cbScript && Object(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_22__["isString"])(cbScript)) {
+ var home = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].getHomeComputer();
+ for (var i = 0; i < home.scripts.length; ++i) {
+ if (home.scripts[i].filename === cbScript) {
+ var script = home.scripts[i];
+ var ramUsage = script.ramUsage;
+ var ramAvailable = home.maxRam - home.ramUsed;
+ if (ramUsage > ramAvailable) {
+ return; //Not enough RAM
+ }
+ var runningScriptObj = new _Script__WEBPACK_IMPORTED_MODULE_11__[/* RunningScript */ "b"](script, []); //No args
+ runningScriptObj.threads = 1; //Only 1 thread
+ home.runningScripts.push(runningScriptObj);
+ Object(_NetscriptWorker__WEBPACK_IMPORTED_MODULE_7__[/* addWorkerScript */ "c"])(runningScriptObj, home);
+ }
+ }
+ }
+}
+
+function augmentationExists(name) {
+ return _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"].hasOwnProperty(name);
+}
+
+//Used for testing balance
+function giveAllAugmentations() {
+ for (var name in _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"]) {
+ var aug = _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name];
+ if (aug == null) {continue;}
+ var ownedAug = new PlayerOwnedAugmentation(name);
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.push(ownedAug);
+ }
+ _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].reapplyAllAugmentations();
+}
+
+function displayAugmentationsContent(contentEl) {
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23__["removeChildrenFromElement"])(contentEl);
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("h1", {
+ innerText:"Purchased Augmentations",
+ }));
+
+ //Bladeburner text, once mechanic is unlocked
+ var bladeburnerText = "\n";
+ if (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].bitNodeN === 6 || _NetscriptFunctions__WEBPACK_IMPORTED_MODULE_6__[/* hasBladeburnerSF */ "c"]) {
+ bladeburnerText = "Bladeburner Progress\n\n";
+ }
+
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("pre", {
+ width:"70%", whiteSpace:"pre-wrap", display:"block",
+ innerText:"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.\n" +
+ "WARNING: Installing your Augmentations resets most of your progress, including:\n\n" +
+ "Stats/Skill levels and Experience\n" +
+ "Money\n" +
+ "Scripts on every computer but your home computer\n" +
+ "Purchased servers\n" +
+ "Hacknet Nodes\n" +
+ "Faction/Company reputation\n" +
+ "Stocks\n" +
+ bladeburnerText +
+ "Installing Augmentations lets you start over with the perks and benefits granted by all " +
+ "of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades " +
+ "on your home computer (but you will lose all programs besides NUKE.exe)."
+ }));
+
+ //Install Augmentations button
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button", innerText:"Install Augmentations",
+ tooltip:"'I never asked for this'",
+ clickListener:()=>{
+ installAugmentations();
+ return false;
+ }
+ }));
+
+ //Backup button
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button flashing-button", innerText:"Backup Save (Export)",
+ tooltip:"It's always a good idea to backup/export your save!",
+ clickListener:()=>{
+ _SaveObject__WEBPACK_IMPORTED_MODULE_10__[/* saveObject */ "b"].exportGame();
+ return false;
+ }
+ }));
+
+ //Purchased/queued augmentations list
+ var queuedAugmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("ul", {class:"augmentations-list"});
+
+ for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations.length; ++i) {
+ var augName = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations[i].name;
+ var aug = _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][augName];
+
+ var displayName = augName;
+ if (augName === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ displayName += " - Level " + (_Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].queuedAugmentations[i].level);
+ }
+
+ var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
+ queuedAugmentationsList.appendChild(accordion[0]);
+ }
+ contentEl.appendChild(queuedAugmentationsList);
+
+ //Installed augmentations list
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("h1", {
+ innerText:"Installed Augmentations", marginTop:"8px",
+ }));
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("p", {
+ width:"70%", whiteSpace:"pre-wrap",
+ innerText:"List of all Augmentations (including Source Files) that have been " +
+ "installed. You have gained the effects of these Augmentations."
+ }));
+
+ var augmentationsList = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("ul", {class:"augmentations-list"});
+
+ //Expand/Collapse All buttons
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Expand All", display:"inline-block",
+ clickListener:()=>{
+ var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ if (!allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
+ }
+ }
+ }));
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Collapse All", display:"inline-block",
+ clickListener:()=>{
+ var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ if (allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
+ }
+ }
+ }));
+
+ //Sort Buttons
+ const sortInOrderButton = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Sort in Order",
+ tooltip:"Sorts the Augmentations alphabetically and Source Files in numerical order (1, 2, 3,...)",
+ clickListener:()=>{
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23__["removeChildrenFromElement"])(augmentationsList);
+
+ //Create a copy of Player's Source Files and augs array and sort them
+ var sourceFiles = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].sourceFiles.slice();
+ var augs = _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations.slice();
+ sourceFiles.sort((sf1, sf2)=>{
+ return sf1.n - sf2.n;
+ });
+ augs.sort((aug1, aug2)=>{
+ return aug1.name <= aug2.name ? -1 : 1;
+ });
+ displaySourceFiles(augmentationsList, sourceFiles);
+ displayAugmentations(augmentationsList, augs);
+
+ _Settings__WEBPACK_IMPORTED_MODULE_14__["Settings"].OwnedAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_13__["OwnedAugmentationsOrderSetting"].Alphabetically;
+ }
+ });
+ contentEl.appendChild(sortInOrderButton);
+
+ const sortByAcquirementTimeButton = Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Sort by Acquirement Time",
+ tooltip:"Sorts the Augmentations and Source Files based on when you acquired them (same as default)",
+ clickListener:()=>{
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_23__["removeChildrenFromElement"])(augmentationsList);
+ displaySourceFiles(augmentationsList, _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].sourceFiles);
+ displayAugmentations(augmentationsList, _Player__WEBPACK_IMPORTED_MODULE_8__[/* Player */ "a"].augmentations);
+
+ _Settings__WEBPACK_IMPORTED_MODULE_14__["Settings"].OwnedAugmentationsOrder = _SettingEnums__WEBPACK_IMPORTED_MODULE_13__["OwnedAugmentationsOrderSetting"].AcquirementTime;
+ }
+ });
+ contentEl.appendChild(sortByAcquirementTimeButton);
+
+ if (_Settings__WEBPACK_IMPORTED_MODULE_14__["Settings"].OwnedAugmentationsOrder === _SettingEnums__WEBPACK_IMPORTED_MODULE_13__["OwnedAugmentationsOrderSetting"].Alphabetically) {
+ sortInOrderButton.click();
+ } else {
+ sortByAcquirementTimeButton.click();
+ }
+ contentEl.appendChild(augmentationsList);
+
+ // Display multiplier information at the bottom
+ contentEl.appendChild(Object(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_21__["createElement"])("p", {
+ display: "block",
+ innerHTML:
+ `
',
+ }))
+}
+
+//Creates the accordion elements to display Augmentations
+// @listElement - List DOM element to append accordion elements to
+// @augs - Array of Augmentation objects
+function displayAugmentations(listElement, augs) {
+ for (var i = 0; i < augs.length; ++i) {
+ var augName = augs[i].name;
+ var aug = _Augmentations__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][augName];
+
+ var displayName = augName;
+ if (augName === _data_AugmentationNames__WEBPACK_IMPORTED_MODULE_2__["AugmentationNames"].NeuroFluxGovernor) {
+ displayName += " - Level " + (augs[i].level);
+ }
+ var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
+ listElement.appendChild(accordion[0]);
+ }
+}
+
+//Creates the accordion elements to display Source Files
+// @listElement - List DOM element to append accordion elements to
+// @sourceFiles - Array of Source File objects
+function displaySourceFiles(listElement, sourceFiles) {
+ for (var i = 0; i < sourceFiles.length; ++i) {
+ var srcFileKey = "SourceFile" + sourceFiles[i].n;
+ var sourceFileObject = _SourceFile__WEBPACK_IMPORTED_MODULE_15__[/* SourceFiles */ "a"][srcFileKey];
+ if (sourceFileObject == null) {
+ console.log("ERROR: Invalid source file number: " + sourceFiles[i].n);
+ continue;
+ }
+ const maxLevel = sourceFiles[i].n == 12 ? "∞" : "3";
+ var accordion = Object(_utils_uiHelpers_createAccordionElement__WEBPACK_IMPORTED_MODULE_17__["createAccordionElement"])({
+ hdrText:sourceFileObject.name + " " + "Level " + (sourceFiles[i].lvl) + " / "+maxLevel,
+ panelText:sourceFileObject.info
+ });
+
+ listElement.appendChild(accordion[0]);
+ }
+}
+
+
+
/***/ }),
-/* 58 */
+/* 62 */
/*!****************************************!*\
!*** ./src/Corporation/Corporation.js ***!
\****************************************/
@@ -35855,69 +35698,69 @@ JSONReviver_1.Reviver.constructors.Faction = Faction;
/* unused harmony export CyclesPerEmployeeRaise */
/* unused harmony export EmployeeRaiseAmount */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Corporation; });
-/* harmony import */ var _CorporationState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CorporationState */ 121);
+/* harmony import */ var _CorporationState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CorporationState */ 130);
/* harmony import */ var _CorporationState__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_CorporationState__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _data_CorporationUnlockUpgrades__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/CorporationUnlockUpgrades */ 107);
+/* harmony import */ var _data_CorporationUnlockUpgrades__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/CorporationUnlockUpgrades */ 114);
/* harmony import */ var _data_CorporationUnlockUpgrades__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_data_CorporationUnlockUpgrades__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _data_CorporationUpgrades__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data/CorporationUpgrades */ 106);
+/* harmony import */ var _data_CorporationUpgrades__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./data/CorporationUpgrades */ 113);
/* harmony import */ var _data_CorporationUpgrades__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_data_CorporationUpgrades__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _EmployeePositions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EmployeePositions */ 27);
+/* harmony import */ var _EmployeePositions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EmployeePositions */ 30);
/* harmony import */ var _EmployeePositions__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_EmployeePositions__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _IndustryData__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IndustryData */ 23);
+/* harmony import */ var _IndustryData__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IndustryData */ 25);
/* harmony import */ var _IndustryData__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_IndustryData__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _IndustryUpgrades__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IndustryUpgrades */ 105);
+/* harmony import */ var _IndustryUpgrades__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IndustryUpgrades */ 112);
/* harmony import */ var _IndustryUpgrades__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_IndustryUpgrades__WEBPACK_IMPORTED_MODULE_5__);
-/* harmony import */ var _Material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Material */ 63);
+/* harmony import */ var _Material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Material */ 67);
/* harmony import */ var _Material__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Material__WEBPACK_IMPORTED_MODULE_6__);
-/* harmony import */ var _MaterialSizes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MaterialSizes */ 77);
+/* harmony import */ var _MaterialSizes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./MaterialSizes */ 82);
/* harmony import */ var _MaterialSizes__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_MaterialSizes__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _Product__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Product */ 104);
+/* harmony import */ var _Product__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Product */ 111);
/* harmony import */ var _Product__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Product__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _ResearchMap__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ResearchMap */ 99);
+/* harmony import */ var _ResearchMap__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ResearchMap */ 106);
/* harmony import */ var _ResearchMap__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_ResearchMap__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../BitNodeMultipliers */ 10);
-/* harmony import */ var _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../BitNode/BitNodeMultipliers */ 10);
+/* harmony import */ var _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Constants */ 1);
/* harmony import */ var _Constants__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_Constants__WEBPACK_IMPORTED_MODULE_11__);
-/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Faction/Factions */ 14);
+/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Faction/Factions */ 16);
/* harmony import */ var _Faction_Factions__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_Faction_Factions__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _Literature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Literature */ 84);
+/* harmony import */ var _Literature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Literature */ 89);
/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Locations */ 5);
/* harmony import */ var _Locations__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_Locations__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../Player */ 0);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../ui/numeralFormat */ 4);
/* harmony import */ var _ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_ui_numeralFormat__WEBPACK_IMPORTED_MODULE_16__);
-/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ui/navigationTracking */ 12);
+/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ui/navigationTracking */ 14);
/* harmony import */ var _ui_navigationTracking__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_ui_navigationTracking__WEBPACK_IMPORTED_MODULE_17__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_clearSelector__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/uiHelpers/clearSelector */ 140);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_clearSelector__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/uiHelpers/clearSelector */ 153);
/* harmony import */ var _utils_uiHelpers_clearSelector__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearSelector__WEBPACK_IMPORTED_MODULE_19__);
-/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/JSONReviver */ 13);
-/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../utils/uiHelpers/appendLineBreaks */ 52);
+/* harmony import */ var _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../utils/JSONReviver */ 15);
+/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../utils/uiHelpers/appendLineBreaks */ 55);
/* harmony import */ var _utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_appendLineBreaks__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../utils/uiHelpers/createElement */ 2);
/* harmony import */ var _utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createElement__WEBPACK_IMPORTED_MODULE_22__);
-/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../utils/uiHelpers/createPopup */ 36);
+/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../utils/uiHelpers/createPopup */ 40);
/* harmony import */ var _utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopup__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var _utils_uiHelpers_createPopupCloseButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../utils/uiHelpers/createPopupCloseButton */ 75);
+/* harmony import */ var _utils_uiHelpers_createPopupCloseButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../utils/uiHelpers/createPopupCloseButton */ 79);
/* harmony import */ var _utils_uiHelpers_createPopupCloseButton__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_createPopupCloseButton__WEBPACK_IMPORTED_MODULE_24__);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../utils/StringHelperFunctions */ 3);
/* harmony import */ var _utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_utils_StringHelperFunctions__WEBPACK_IMPORTED_MODULE_25__);
-/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 15);
+/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../utils/helpers/getRandomInt */ 17);
/* harmony import */ var _utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_getRandomInt__WEBPACK_IMPORTED_MODULE_26__);
-/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../utils/helpers/isString */ 40);
+/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../utils/helpers/isString */ 43);
/* harmony import */ var _utils_helpers_isString__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_isString__WEBPACK_IMPORTED_MODULE_27__);
-/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../../utils/helpers/keyCodes */ 25);
+/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../../utils/helpers/keyCodes */ 27);
/* harmony import */ var _utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_utils_helpers_keyCodes__WEBPACK_IMPORTED_MODULE_28__);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 30);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../../utils/uiHelpers/removeChildrenFromElement */ 32);
/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_29__);
-/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElement */ 61);
+/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElement */ 63);
/* harmony import */ var _utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElement__WEBPACK_IMPORTED_MODULE_30__);
-/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElementById */ 20);
+/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../../utils/uiHelpers/removeElementById */ 23);
/* harmony import */ var _utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeElementById__WEBPACK_IMPORTED_MODULE_31__);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../../utils/YesNoBox */ 19);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../../utils/YesNoBox */ 21);
/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_32__);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! decimal.js */ 35);
+/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! decimal.js */ 39);
@@ -38810,7 +38653,7 @@ Corporation.prototype.determineValuation = function() {
}
val -= (val % 1e6); //Round down to nearest millionth
}
- return val * _BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__["BitNodeMultipliers"].CorporationValuation;
+ return val * _BitNode_BitNodeMultipliers__WEBPACK_IMPORTED_MODULE_10__["BitNodeMultipliers"].CorporationValuation;
}
Corporation.prototype.getInvestment = function() {
@@ -40984,10 +40827,47 @@ _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_20__["Reviver"].constructors.Corpora
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 64)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 68)))
/***/ }),
-/* 59 */
+/* 63 */
+/*!******************************************!*\
+ !*** ./utils/uiHelpers/removeElement.ts ***!
+ \******************************************/
+/*! no static exports found */
+/*! all exports used */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * For a given element, this function removes it AND its children
+ * @param elem The element to remove.
+ */
+function removeElement(elem) {
+ if (elem === null) {
+ // tslint:disable-next-line:no-console
+ console.debug("The element passed into 'removeElement' was null.");
+ return;
+ }
+ if (!(elem instanceof Element)) {
+ // tslint:disable-next-line:no-console
+ console.debug("The element passed into 'removeElement' was not an instance of an Element.");
+ return;
+ }
+ while (elem.firstChild !== null) {
+ elem.removeChild(elem.firstChild);
+ }
+ if (elem.parentNode !== null) {
+ elem.parentNode.removeChild(elem);
+ }
+}
+exports.removeElement = removeElement;
+
+
+/***/ }),
+/* 64 */
/*!************************!*\
!*** ./src/RedPill.js ***!
\************************/
@@ -40998,19 +40878,22 @@ _utils_JSONReviver__WEBPACK_IMPORTED_MODULE_20__["Reviver"].constructors.Corpora
"use strict";
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return redPillFlag; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return hackWorldDaemon; });
-/* harmony import */ var _BitNode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode */ 60);
-/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 9);
+/* harmony import */ var _BitNode_BitNode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode/BitNode */ 65);
+/* harmony import */ var _engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine */ 11);
/* harmony import */ var _Player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player */ 0);
-/* harmony import */ var _Prestige__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Prestige */ 88);
-/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceFile */ 70);
-/* harmony import */ var _Terminal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Terminal */ 51);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 16);
-/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_6__);
-/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox */ 8);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 30);
-/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/YesNoBox */ 19);
-/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_9__);
+/* harmony import */ var _Prestige__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Prestige */ 92);
+/* harmony import */ var _SourceFile__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceFile */ 80);
+/* harmony import */ var _SourceFile_PlayerOwnedSourceFile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SourceFile/PlayerOwnedSourceFile */ 146);
+/* harmony import */ var _SourceFile_PlayerOwnedSourceFile__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_SourceFile_PlayerOwnedSourceFile__WEBPACK_IMPORTED_MODULE_5__);
+/* harmony import */ var _Terminal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Terminal */ 54);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/uiHelpers/clearEventListeners */ 22);
+/* harmony import */ var _utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/DialogBox */ 9);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/uiHelpers/removeChildrenFromElement */ 32);
+/* harmony import */ var _utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_9__);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/YesNoBox */ 21);
+/* harmony import */ var _utils_YesNoBox__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_10__);
+
@@ -41066,8 +40949,8 @@ let redPillFlag = false;
function hackWorldDaemon(currentNodeNumber, flume=false) {
// Clear Red Pill screen first
var container = document.getElementById("red-pill-content");
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(container);
-
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(container);
+
redPillFlag = true;
_engine__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadRedPillContent();
return writeRedPillLine("[ERROR] SEMPOOL INVALID").then(function() {
@@ -41109,7 +40992,7 @@ function hackWorldDaemon(currentNodeNumber, flume=false) {
//This needs to be removed
function giveSourceFile(bitNodeNumber) {
var sourceFileKey = "SourceFile"+ bitNodeNumber.toString();
- var sourceFile = _SourceFile__WEBPACK_IMPORTED_MODULE_4__[/* SourceFiles */ "b"][sourceFileKey];
+ var sourceFile = _SourceFile__WEBPACK_IMPORTED_MODULE_4__[/* SourceFiles */ "a"][sourceFileKey];
if (sourceFile == null) {
console.log("ERROR: could not find source file for Bit node: " + bitNodeNumber);
return;
@@ -41128,20 +41011,20 @@ function giveSourceFile(bitNodeNumber) {
if (alreadyOwned && ownedSourceFile) {
if (ownedSourceFile.lvl >= 3 && ownedSourceFile.n !== 12) {
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("The Source-File for the BitNode you just destroyed, " + sourceFile.name + ", " +
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("The Source-File for the BitNode you just destroyed, " + sourceFile.name + ", " +
"is already at max level!");
} else {
++ownedSourceFile.lvl;
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])(sourceFile.name + " was upgraded to level " + ownedSourceFile.lvl + " for " +
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])(sourceFile.name + " was upgraded to level " + ownedSourceFile.lvl + " for " +
"destroying its corresponding BitNode!");
}
} else {
- var playerSrcFile = new _SourceFile__WEBPACK_IMPORTED_MODULE_4__[/* PlayerOwnedSourceFile */ "a"](bitNodeNumber, 1);
+ var playerSrcFile = new _SourceFile_PlayerOwnedSourceFile__WEBPACK_IMPORTED_MODULE_5__["PlayerOwnedSourceFile"](bitNodeNumber, 1);
_Player__WEBPACK_IMPORTED_MODULE_2__[/* Player */ "a"].sourceFiles.push(playerSrcFile);
if (bitNodeNumber === 5) { //Artificial Intelligence
_Player__WEBPACK_IMPORTED_MODULE_2__[/* Player */ "a"].intelligence = 1;
}
- Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You received a Source-File for destroying a Bit Node!
" +
+ Object(_utils_DialogBox__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("You received a Source-File for destroying a Bit Node!
" +
sourceFile.name + "
" + sourceFile.info);
}
}
@@ -41149,7 +41032,7 @@ function giveSourceFile(bitNodeNumber) {
function loadBitVerse(destroyedBitNodeNum, flume=false) {
//Clear the screen
var container = document.getElementById("red-pill-content");
- Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(container);
+ Object(_utils_uiHelpers_removeChildrenFromElement__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(container);
//Create the Bit Verse
var bitVerseImage = document.createElement("pre");
@@ -41220,23 +41103,24 @@ function loadBitVerse(destroyedBitNodeNum, flume=false) {
for (var i = 1; i <= 12; ++i) {
(function(i) {
var elemId = "bitnode-" + i.toString();
- var elem = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_6__["clearEventListeners"])(elemId);
+ var elem = Object(_utils_uiHelpers_clearEventListeners__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])(elemId);
if (elem == null) {return;}
if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 ||
- i === 6 || i === 7 || i === 8 || i === 11 || i === 12) {
+ i === 6 || i === 7 || i === 8 || i === 10 || i === 11 ||
+ i === 12) {
elem.addEventListener("click", function() {
var bitNodeKey = "BitNode" + i;
- var bitNode = _BitNode__WEBPACK_IMPORTED_MODULE_0__[/* BitNodes */ "a"][bitNodeKey];
+ var bitNode = _BitNode_BitNode__WEBPACK_IMPORTED_MODULE_0__[/* BitNodes */ "a"][bitNodeKey];
if (bitNode == null) {
console.log("ERROR: Could not find BitNode object for number: " + i);
return;
}
- Object(_utils_YesNoBox__WEBPACK_IMPORTED_MODULE_9__["yesNoBoxCreate"])("BitNode-" + i + ": " + bitNode.name + "