diff --git a/css/companymanagement.css b/css/companymanagement.css
index e14856bea..5c0d82d15 100644
--- a/css/companymanagement.css
+++ b/css/companymanagement.css
@@ -121,11 +121,12 @@
}
.cmpy-mgmt-upgrade-div {
+ display:inline-block;
border:1px solid white;
margin:4px;
padding:12px;
border-radius:25px;
- width:95%;
+ width:45%;
color:var(--my-font-color);
}
diff --git a/dist/bundle.js b/dist/bundle.js
index f955ed01a..33633341a 100644
--- a/dist/bundle.js
+++ b/dist/bundle.js
@@ -469,7 +469,7 @@ PlayerObject.prototype.prestigeSourceFile = function() {
//BitNode 8: Ghost of Wall Street
if (this.bitNodeN === 8) {this.money = new __WEBPACK_IMPORTED_MODULE_15__utils_decimal_js___default.a(100000000);}
- if (this.bitNodeN === 8 || __WEBPACK_IMPORTED_MODULE_11__NetscriptFunctions_js__["d" /* hasWallStreetSF */]) {
+ if (this.bitNodeN === 8 || __WEBPACK_IMPORTED_MODULE_11__NetscriptFunctions_js__["e" /* hasWallStreetSF */]) {
this.hasWseAccount = true;
this.hasTixApiAccess = true;
}
@@ -1857,6 +1857,7 @@ PlayerObject.prototype.getNextCompanyPosition = function(company, entryPosType)
//Employed at this company, so just return the next position if it exists.
if ((this.companyPosition.isSoftwareJob() && entryPosType.isSoftwareJob()) ||
(this.companyPosition.isITJob() && entryPosType.isITJob()) ||
+ (this.companyPosition.isBusinessJob() && entryPosType.isBusinessJob()) ||
(this.companyPosition.isSecurityEngineerJob() && entryPosType.isSecurityEngineerJob()) ||
(this.companyPosition.isNetworkEngineerJob() && entryPosType.isNetworkEngineerJob()) ||
(this.companyPosition.isSecurityJob() && entryPosType.isSecurityJob()) ||
@@ -2597,10 +2598,13 @@ function createElement(type, params) {
if (params.display) {el.style.display = params.display;}
if (params.visibility) {el.style.visibility = params.visibility;}
if (params.margin) {el.style.margin = params.margin;}
+ if (params.marginLeft) {el.style.marginLeft = params.marginLeft;}
if (params.padding) {el.style.padding = params.padding;}
if (params.color) {el.style.color = params.color;}
if (params.border) {el.style.border = params.border;}
if (params.float) {el.style.cssFloat = params.float;}
+ if (params.fontSize) {el.style.fontSize = params.fontSize;}
+ if (params.width) {el.style.width = params.width;}
if (params.backgroundColor) {
el.style.backgroundColor = params.backgroundColor
}
@@ -2721,7 +2725,7 @@ function powerOfTwo(n) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CONSTANTS; });
let CONSTANTS = {
- Version: "0.34.0",
+ Version: "0.34.1",
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
@@ -3840,29 +3844,19 @@ let CONSTANTS = {
LatestUpdate:
"v0.34.1 " +
- "-Added new 'secret' Terminal command. Try: run musicplayer " +
-
- "v0.34.0 " +
- "-Added clear() and exit() Netscript functions " +
- "-When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players " +
- "-Doubled the amount of RAM on low-level servers (up to required hacking level 150) " +
- "-Slightly increased experience gain from Infiltration " +
- "-buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. " +
- "If the function fails for some reason, 0 will be returned. " +
- "-Hacking Mission Changes: " +
- "---You can now select multiple Nodes of the same type by double clicking. This allows you to set the " +
- "action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections " +
- "does not work with this multi-select functionality yet " +
- "---Shield and Firewall Nodes can now fortify " +
- "---The effects of Fortifying are now ~5% lower " +
- "---Conquering a Spam Node now increases your time limit by 25 seconds instead of 15 " +
- "---Damage dealt by Attacking was slightly reduced " +
- "---The effect of Scanning was slightly reduced " +
- "---Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense " +
- "-Corporation Management changes: " +
- "---Added several upgrades that unlock new features " +
- "---Implemented Exporting mechanic " +
- "---Fixed many bugs "
+ "-Updates to Corporation Management: " +
+ "---Added a number of upgrades to various aspects of your Corporation " +
+ "---Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation " +
+ "---Fixed a number of bugs " +
+ "-'Stats' page now shows information about current BitNode " +
+ "-You should now be able to create Corporations in other BitNodes if you have Source-File 3 " +
+ "-Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes " +
+ "-Added an option to adjust autosave interval " +
+ "-Line feeds, newlines, and tabs will now work with the tprint() Netscript function " +
+ "-Bug fix: 'check' Terminal command was broken " +
+ "-Bug fix: 'theme' Terminal command was broken when manually specifying hex codes " +
+ "-Bug fix: Incorrect promotion requirement for 'Business'-type jobs " +
+ "-Bug fix: Settings input bars were incorrectly formatted when loading game "
}
@@ -4543,74 +4537,88 @@ let Engine = {
/* Display character info */
displayCharacterInfo: function() {
+ Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["k" /* removeChildrenFromElement */])(Engine.Display.characterInfo);
+
var companyPosition = "";
if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].companyPosition != "") {
companyPosition = __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].companyPosition.positionName;
}
- var bnText = "";
- if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].sourceFiles.length !== 0) {
- bnText = " Current BitNode: " + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN;
- }
-
var intText = "";
if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].intelligence > 0) {
intText = 'Intelligence: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].intelligence).toLocaleString() + " ";
}
- Engine.Display.characterInfo.innerHTML =
- ('General ' +
- 'Current City: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].city + ' ' +
- 'Employer: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].companyName + ' ' +
- 'Job Title: ' + companyPosition + ' ' +
- 'Money: $' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].money.toNumber(), 2)+ ' ' +
- 'Stats ' +
- 'Hacking Level: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_skill).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_exp).format('(0.000a)') + ' experience) ' +
- 'Strength: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_exp).format('(0.000a)') + ' experience) ' +
- 'Defense: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_exp).format('(0.000a)')+ ' experience) ' +
- 'Dexterity: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_exp).format('(0.000a)') + ' experience) ' +
- 'Agility: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_exp).format('(0.000a)') + ' experience) ' +
- 'Charisma: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma).toLocaleString() +
- " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_exp).format('(0.000a)') + ' experience) ' +
- intText +
- 'Multipliers ' +
- 'Hacking Chance multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_chance_mult * 100, 2) + '% ' +
- 'Hacking Speed multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_speed_mult * 100, 2) + '% ' +
- 'Hacking Money multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_money_mult * 100, 2) + '% ' +
- 'Hacking Growth multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_grow_mult * 100, 2) + '% ' +
- 'Hacking Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_mult * 100, 2) + '% ' +
- 'Hacking Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_exp_mult * 100, 2) + '% ' +
- 'Strength Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_mult * 100, 2) + '% ' +
- 'Strength Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_exp_mult * 100, 2) + '% ' +
- 'Defense Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_mult * 100, 2) + '% ' +
- 'Defense Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_exp_mult * 100, 2) + '% ' +
- 'Dexterity Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_mult * 100, 2) + '% ' +
- 'Dexterity Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_exp_mult * 100, 2) + '% ' +
- 'Agility Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_mult * 100, 2) + '% ' +
- 'Agility Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_exp_mult * 100, 2) + '% ' +
- 'Charisma Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_mult * 100, 2) + '% ' +
- 'Charisma Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_exp_mult * 100, 2) + '% ' +
- 'Hacknet Node production multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_money_mult * 100, 2) + '% ' +
- 'Hacknet Node purchase cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_purchase_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node RAM upgrade cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_ram_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node Core purchase cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_core_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node level upgrade cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_level_cost_mult * 100, 2) + '% ' +
- 'Company reputation gain multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].company_rep_mult * 100, 2) + '% ' +
- 'Faction reputation gain multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].faction_rep_mult * 100, 2) + '% ' +
- 'Salary multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].work_money_mult * 100, 2) + '% ' +
- 'Crime success multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].crime_success_mult * 100, 2) + '% ' +
- 'Crime money multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].crime_money_mult * 100, 2) + '% ' +
- 'Misc ' +
- 'Servers owned: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].purchasedServers.length + ' ' +
- 'Hacknet Nodes owned: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknetNodes.length + ' ' +
- 'Augmentations installed: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].augmentations.length + ' ' +
- 'Time played since last Augmentation: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["b" /* convertTimeMsToTimeElapsedString */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].playtimeSinceLastAug) + ' ' +
- 'Time played: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["b" /* convertTimeMsToTimeElapsedString */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].totalPlaytime) +
- bnText + ' ').replace( / /g, " " );
+
+ Engine.Display.characterInfo.appendChild(Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("pre", {
+ innerHTML:
+ 'General ' +
+ 'Current City: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].city + ' ' +
+ 'Employer: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].companyName + ' ' +
+ 'Job Title: ' + companyPosition + ' ' +
+ 'Money: $' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].money.toNumber(), 2)+ ' ' +
+ 'Stats ' +
+ 'Hacking Level: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_skill).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_exp).format('(0.000a)') + ' experience) ' +
+ 'Strength: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_exp).format('(0.000a)') + ' experience) ' +
+ 'Defense: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_exp).format('(0.000a)')+ ' experience) ' +
+ 'Dexterity: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_exp).format('(0.000a)') + ' experience) ' +
+ 'Agility: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_exp).format('(0.000a)') + ' experience) ' +
+ 'Charisma: ' + (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma).toLocaleString() +
+ " (" + __WEBPACK_IMPORTED_MODULE_3__utils_numeral_min_js___default()(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_exp).format('(0.000a)') + ' experience) ' +
+ intText +
+ 'Multipliers ' +
+ 'Hacking Chance multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_chance_mult * 100, 2) + '% ' +
+ 'Hacking Speed multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_speed_mult * 100, 2) + '% ' +
+ 'Hacking Money multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_money_mult * 100, 2) + '% ' +
+ 'Hacking Growth multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_grow_mult * 100, 2) + '% ' +
+ 'Hacking Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_mult * 100, 2) + '% ' +
+ 'Hacking Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacking_exp_mult * 100, 2) + '% ' +
+ 'Strength Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_mult * 100, 2) + '% ' +
+ 'Strength Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].strength_exp_mult * 100, 2) + '% ' +
+ 'Defense Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_mult * 100, 2) + '% ' +
+ 'Defense Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].defense_exp_mult * 100, 2) + '% ' +
+ 'Dexterity Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_mult * 100, 2) + '% ' +
+ 'Dexterity Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].dexterity_exp_mult * 100, 2) + '% ' +
+ 'Agility Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_mult * 100, 2) + '% ' +
+ 'Agility Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].agility_exp_mult * 100, 2) + '% ' +
+ 'Charisma Level multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_mult * 100, 2) + '% ' +
+ 'Charisma Experience multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].charisma_exp_mult * 100, 2) + '% ' +
+ 'Hacknet Node production multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_money_mult * 100, 2) + '% ' +
+ 'Hacknet Node purchase cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_purchase_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node RAM upgrade cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_ram_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node Core purchase cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_core_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node level upgrade cost multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknet_node_level_cost_mult * 100, 2) + '% ' +
+ 'Company reputation gain multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].company_rep_mult * 100, 2) + '% ' +
+ 'Faction reputation gain multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].faction_rep_mult * 100, 2) + '% ' +
+ 'Salary multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].work_money_mult * 100, 2) + '% ' +
+ 'Crime success multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].crime_success_mult * 100, 2) + '% ' +
+ 'Crime money multiplier: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["c" /* formatNumber */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].crime_money_mult * 100, 2) + '% ' +
+ 'Misc ' +
+ 'Servers owned: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].purchasedServers.length + ' ' +
+ 'Hacknet Nodes owned: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].hacknetNodes.length + ' ' +
+ 'Augmentations installed: ' + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].augmentations.length + ' ' +
+ 'Time played since last Augmentation: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["b" /* convertTimeMsToTimeElapsedString */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].playtimeSinceLastAug) + ' ' +
+ 'Time played: ' + Object(__WEBPACK_IMPORTED_MODULE_4__utils_StringHelperFunctions_js__["b" /* convertTimeMsToTimeElapsedString */])(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].totalPlaytime),
+ }));
+
+ if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].sourceFiles.length !== 0) {
+ var index = "BitNode" + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN;
+
+ Engine.Display.characterInfo.appendChild(Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("p", {
+ width:"60%",
+ innerHTML:
+ " Current BitNode: " + __WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN + " (" + __WEBPACK_IMPORTED_MODULE_8__BitNode_js__["b" /* BitNodes */][index].name + ") ",
+ }));
+
+ Engine.Display.characterInfo.appendChild(Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("p", {
+ width:"60%", fontSize: "13px", marginLeft:"4%",
+ innerHTML:__WEBPACK_IMPORTED_MODULE_8__BitNode_js__["b" /* BitNodes */][index].info,
+ }))
+ }
},
/* Display locations in the world*/
@@ -4641,8 +4649,8 @@ let Engine = {
case __WEBPACK_IMPORTED_MODULE_14__Location_js__["a" /* Locations */].Sector12:
Engine.sector12LocationsList.style.display = "inline";
- //City hall only in BitNode-3
- if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN === 3) {
+ //City hall only in BitNode-3/with Source-File 3
+ if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN === 3 || __WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["c" /* hasCorporationSF */]) {
document.getElementById("sector12-cityhall-li").style.display = "block";
} else {
document.getElementById("sector12-cityhall-li").style.display = "none";
@@ -4990,7 +4998,14 @@ let Engine = {
checkCounters: function() {
if (Engine.Counters.autoSaveCounter <= 0) {
__WEBPACK_IMPORTED_MODULE_26__SaveObject_js__["b" /* saveObject */].saveGame(indexedDb);
- Engine.Counters.autoSaveCounter = 300;
+ if (__WEBPACK_IMPORTED_MODULE_29__Settings_js__["a" /* Settings */].AutosaveInterval == null) {
+ __WEBPACK_IMPORTED_MODULE_29__Settings_js__["a" /* Settings */].AutosaveInterval = 60;
+ }
+ if (__WEBPACK_IMPORTED_MODULE_29__Settings_js__["a" /* Settings */].AutosaveInterval === 0) {
+ Engine.Counters.autoSaveCounter = Infinity;
+ } else {
+ Engine.Counters.autoSaveCounter = __WEBPACK_IMPORTED_MODULE_29__Settings_js__["a" /* Settings */].AutosaveInterval * 5;
+ }
}
if (Engine.Counters.updateSkillLevelsCounter <= 0) {
@@ -5238,7 +5253,7 @@ let Engine = {
Object(__WEBPACK_IMPORTED_MODULE_32__StockMarket_js__["i" /* initSymbolToStockMap */])();
}
Object(__WEBPACK_IMPORTED_MODULE_18__Literature_js__["a" /* initLiterature */])();
- Object(__WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["e" /* initSingularitySFFlags */])();
+ Object(__WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["f" /* initSingularitySFFlags */])();
console.log(__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].intelligence_exp);
@@ -5323,7 +5338,7 @@ let Engine = {
Object(__WEBPACK_IMPORTED_MODULE_19__Message_js__["d" /* initMessages */])();
Object(__WEBPACK_IMPORTED_MODULE_32__StockMarket_js__["h" /* initStockSymbols */])();
Object(__WEBPACK_IMPORTED_MODULE_18__Literature_js__["a" /* initLiterature */])();
- Object(__WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["e" /* initSingularitySFFlags */])();
+ Object(__WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["f" /* initSingularitySFFlags */])();
//Open main menu accordions for new game
//Main menu accordions
@@ -5422,7 +5437,7 @@ let Engine = {
Engine.Display.missionContent.style.display = "none";
//Character info
- Engine.Display.characterInfo = document.getElementById("character-info");
+ Engine.Display.characterInfo = document.getElementById("character-content");
//Location lists
Engine.aevumLocationsList = document.getElementById("aevum-locations-list");
@@ -5468,7 +5483,7 @@ let Engine = {
Engine.Clickables.tutorialNetscriptButton = document.getElementById("tutorial-netscript-link");
Engine.Clickables.tutorialNetscriptButton.addEventListener("click", function() {
- if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN === 4 || __WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["c" /* hasSingularitySF */]) {
+ if (__WEBPACK_IMPORTED_MODULE_23__Player_js__["a" /* Player */].bitNodeN === 4 || __WEBPACK_IMPORTED_MODULE_21__NetscriptFunctions_js__["d" /* hasSingularitySF */]) {
Engine.displayTutorialPage(__WEBPACK_IMPORTED_MODULE_11__Constants_js__["a" /* CONSTANTS */].TutorialNetscriptText + __WEBPACK_IMPORTED_MODULE_11__Constants_js__["a" /* CONSTANTS */].TutorialSingularityFunctionsText);
} else {
Engine.displayTutorialPage(__WEBPACK_IMPORTED_MODULE_11__Constants_js__["a" /* CONSTANTS */].TutorialNetscriptText);
@@ -6826,7 +6841,7 @@ function initBitNodes() {
"by 1's and 0's. They were wrong. " +
"In this BitNode: " +
"The base security level of servers is doubled " +
- "The starting money on servers is halved, but the maximum money is doubled " +
+ "The starting money on servers is halved, but the maximum money remains the same " +
"Most methods of earning money now give significantly less " +
"Infiltration gives 50% more reputation and money " +
"Augmentations are more expensive " +
@@ -20966,6 +20981,8 @@ function yesNoTxtInpBoxCreate(txt) {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return initCreateProgramButtons; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Constants_js__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Player_js__ = __webpack_require__(0);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__ = __webpack_require__(2);
+
@@ -20982,22 +20999,12 @@ let Programs = {
ServerProfiler: "ServerProfiler.exe",
AutoLink: "AutoLink.exe",
Flight: "fl1ght.exe",
+ BitFlume: "b1t_flum3.exe"
};
-//TODO Right now the times needed to complete work are hard-coded...
-//maybe later make this dependent on hacking level or something
+var nukeALink, bruteSshALink, ftpCrackALink, relaySmtpALink, httpWormALink, sqlInjectALink,
+ deepscanv1ALink, deepscanv2ALink, servProfilerALink, autolinkALink, bitFlumeALink;
function displayCreateProgramContent() {
- var nukeALink = document.getElementById("create-program-nuke");
- var bruteSshALink = document.getElementById("create-program-brutessh");
- var ftpCrackALink = document.getElementById("create-program-ftpcrack");
- var relaySmtpALink = document.getElementById("create-program-relaysmtp");
- var httpWormALink = document.getElementById("create-program-httpworm");
- var sqlInjectALink = document.getElementById("create-program-sqlinject");
- var deepscanv1ALink = document.getElementById("create-program-deepscanv1");
- var deepscanv2ALink = document.getElementById("create-program-deepscanv2");
- var servProfilerALink = document.getElementById("create-program-serverprofiler");
- var autolinkALink = document.getElementById("create-program-autolink");
-
nukeALink.style.display = "none";
bruteSshALink.style.display = "none";
ftpCrackALink.style.display = "none";
@@ -21008,6 +21015,7 @@ function displayCreateProgramContent() {
deepscanv2ALink.style.display = "none";
servProfilerALink.style.display = "none";
autolinkALink.style.display = "none";
+ bitFlumeALink.style.display = "none";
//NUKE.exe (in case you delete it lol)
if (__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) {
@@ -21053,6 +21061,10 @@ function displayCreateProgramContent() {
if (!__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hasProgram(Programs.AutoLink) && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hacking_skill >= 25) {
autolinkALink.style.display = "inline-block";
}
+ //Bit Flume
+ if (!__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hasProgram(Programs.BitFlume) && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].sourceFiles.length > 0 && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hacking_skill >= 5) {
+ bitFlumeALink.style.display = "inline-block";
+ }
}
//Returns the number of programs that are currently available to be created
@@ -21102,6 +21114,10 @@ function getNumAvailableCreateProgram() {
if (!__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hasProgram(Programs.AutoLink) && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hacking_skill >= 25) {
++count;
}
+ //Bit Flume
+ if (!__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hasProgram(Programs.BitFlume) && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].sourceFiles.length > 0 && __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].hacking_skill >= 5) {
+ ++count;
+ }
if (__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].firstProgramAvailable === false && count > 0) {
__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].firstProgramAvailable = true;
document.getElementById("create-program-tab").style.display = "list-item";
@@ -21112,16 +21128,72 @@ function getNumAvailableCreateProgram() {
}
function initCreateProgramButtons() {
- var nukeALink = document.getElementById("create-program-nuke");
- var bruteSshALink = document.getElementById("create-program-brutessh");
- var ftpCrackALink = document.getElementById("create-program-ftpcrack");
- var relaySmtpALink = document.getElementById("create-program-relaysmtp");
- var httpWormALink = document.getElementById("create-program-httpworm");
- var sqlInjectALink = document.getElementById("create-program-sqlinject");
- var deepscanv1ALink = document.getElementById("create-program-deepscanv1");
- var deepscanv2ALink = document.getElementById("create-program-deepscanv2");
- var servProfilerALink = document.getElementById("create-program-serverprofiler");
- var autolinkALink = document.getElementById("create-program-autolink");
+ var createProgramList = document.getElementById("create-program-list");
+ nukeALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-nuke", innerText:Programs.NukeProgram,
+ tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",
+ });
+ createProgramList.appendChild(nukeALink);
+
+ bruteSshALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-brutessh", innerText:Programs.BruteSSHProgram,
+ tooltip:"This program executes a brute force attack that opens SSH ports"
+ });
+ createProgramList.appendChild(bruteSshALink);
+
+ ftpCrackALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-ftpcrack", innerText:Programs.FTPCrackProgram,
+ tooltip:"This program cracks open FTP ports"
+ });
+ createProgramList.appendChild(ftpCrackALink);
+
+ relaySmtpALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-relaysmtp", innerText:Programs.RelaySMTPProgram,
+ tooltip:"This program opens SMTP ports by redirecting data"
+ }) ;
+ createProgramList.appendChild(relaySmtpALink);
+
+ httpWormALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-httpworm", innerText:Programs.HTTPWormProgram,
+ tooltip:"This virus opens up HTTP ports"
+ });
+ createProgramList.appendChild(httpWormALink);
+
+ sqlInjectALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-sqlinject", innerText:Programs.SQLInjectProgram,
+ tooltip:"This virus opens SQL ports"
+ });
+ createProgramList.appendChild(sqlInjectALink);
+
+ deepscanv1ALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-deepscanv1", innerText:Programs.DeepscanV1,
+ tooltip:"This program allows you to use the scan-analyze command with a depth up to 5"
+ });
+ createProgramList.appendChild(deepscanv1ALink);
+
+ deepscanv2ALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-deepscanv2", innerText:Programs.DeepscanV2,
+ tooltip:"This program allows you to use the scan-analyze command with a depth up to 10"
+ });
+ createProgramList.appendChild(deepscanv2ALink);
+
+ servProfilerALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-serverprofiler", innerText:Programs.ServerProfiler,
+ tooltip:"This program is used to display hacking and Netscript-related information about servers"
+ });
+ createProgramList.appendChild(servProfilerALink);
+
+ bitFlumeALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-bitflume", innerText:Programs.BitFlume,
+ tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)"
+ });
+ createProgramList.appendChild(bitFlumeALink);
+
+ autolinkALink = Object(__WEBPACK_IMPORTED_MODULE_2__utils_HelperFunctions_js__["f" /* createElement */])("a", {
+ class:"a-link-button", id:"create-program-autolink", innerText:"AutoLink.exe",
+ tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command"
+ });
+ createProgramList.appendChild(autolinkALink);
nukeALink.addEventListener("click", function() {
__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].startCreateProgramWork(Programs.NukeProgram, __WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].MillisecondsPerFiveMinutes, 1);
@@ -21163,6 +21235,10 @@ function initCreateProgramButtons() {
__WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].startCreateProgramWork(Programs.AutoLink, __WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].MillisecondsPerQuarterHour, 25);
return false;
});
+ bitFlumeALink.addEventListener("click", function() {
+ __WEBPACK_IMPORTED_MODULE_1__Player_js__["a" /* Player */].startCreateProgramWork(Programs.BitFlume, __WEBPACK_IMPORTED_MODULE_0__Constants_js__["a" /* CONSTANTS */].MillisecondsPerFiveMinutes / 5, 5);
+ return false;
+ });
}
@@ -21177,6 +21253,9 @@ function initCreateProgramButtons() {
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return initSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return setSettingsLabels; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return loadSettings; });
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__engine_js__ = __webpack_require__(5);
+
+
/* Settings.js */
let Settings = {
CodeInstructionRunTime: 50,
@@ -21184,6 +21263,7 @@ let Settings = {
MaxPortCapacity: 50,
SuppressMessages: false,
SuppressFactionInvites: false,
+ AutosaveInterval: 60,
}
function loadSettings(saveString) {
@@ -21196,6 +21276,7 @@ function initSettings() {
Settings.MaxPortCapacity = 50;
Settings.SuppressMessages = false;
Settings.SuppressFactionInvites = false;
+ Settings.AutosaveInterval = 60;
}
function setSettingsLabels() {
@@ -21204,6 +21285,7 @@ function setSettingsLabels() {
var nsPortLimit = document.getElementById("settingsNSPortRangeValLabel");
var suppressMsgs = document.getElementById("settingsSuppressMessages");
var suppressFactionInv = document.getElementById("settingsSuppressFactionInvites")
+ var autosaveInterval = document.getElementById("settingsAutosaveIntervalValLabel");
//Initialize values on labels
nsExecTime.innerHTML = Settings.CodeInstructionRunTime + "ms";
@@ -21211,23 +21293,43 @@ function setSettingsLabels() {
nsPortLimit.innerHTML = Settings.MaxPortCapacity;
suppressMsgs.checked = Settings.SuppressMessages;
suppressFactionInv.checked = Settings.SuppressFactionInvites;
+ autosaveInterval.innerHTML = Settings.AutosaveInterval;
//Set handlers for when input changes
- document.getElementById("settingsNSExecTimeRangeVal").oninput = function() {
+ var nsExecTimeInput = document.getElementById("settingsNSExecTimeRangeVal");
+ var nsLogRangeInput = document.getElementById("settingsNSLogRangeVal");
+ var nsPortRangeInput = document.getElementById("settingsNSPortRangeVal");
+ var nsAutosaveIntervalInput = document.getElementById("settingsAutosaveIntervalVal");
+ nsExecTimeInput.value = Settings.CodeInstructionRunTime;
+ nsLogRangeInput.value = Settings.MaxLogCapacity;
+ nsPortRangeInput.value = Settings.MaxPortCapacity;
+ nsAutosaveIntervalInput.value = Settings.AutosaveInterval;
+
+ nsExecTimeInput.oninput = function() {
nsExecTime.innerHTML = this.value + 'ms';
Settings.CodeInstructionRunTime = this.value;
};
- document.getElementById("settingsNSLogRangeVal").oninput = function() {
+ nsLogRangeInput.oninput = function() {
nsLogLimit.innerHTML = this.value;
Settings.MaxLogCapacity = this.value;
};
- document.getElementById("settingsNSPortRangeVal").oninput = function() {
+ nsPortRangeInput.oninput = function() {
nsPortLimit.innerHTML = this.value;
Settings.MaxPortCapacity = this.value;
};
+ nsAutosaveIntervalInput.oninput = function() {
+ autosaveInterval.innerHTML = this.value;
+ Settings.AutosaveInterval = Number(this.value);
+ if (Number(this.value) === 0) {
+ __WEBPACK_IMPORTED_MODULE_0__engine_js__["Engine"].Counters.autoSaveCounter = Infinity;
+ } else {
+ __WEBPACK_IMPORTED_MODULE_0__engine_js__["Engine"].Counters.autoSaveCounter = Number(this.value) * 5;
+ }
+ };
+
document.getElementById("settingsSuppressMessages").onclick = function() {
Settings.SuppressMessages = this.checked;
};
@@ -21276,10 +21378,11 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @preserve
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__Player_js__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__Server_js__ = __webpack_require__(6);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__Settings_js__ = __webpack_require__(16);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__ = __webpack_require__(1);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__ = __webpack_require__(7);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_HelperFunctions_js__ = __webpack_require__(2);
-/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__ = __webpack_require__(4);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__Terminal_js__ = __webpack_require__(23);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__ = __webpack_require__(1);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__ = __webpack_require__(7);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils_HelperFunctions_js__ = __webpack_require__(2);
+/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__ = __webpack_require__(4);
var ace = __webpack_require__(54);
__webpack_require__(56);
__webpack_require__(57);
@@ -21309,6 +21412,7 @@ __webpack_require__(68);
+
var keybindings = {
ace: null,
vim: "ace/keyboard/vim",
@@ -21412,7 +21516,7 @@ function updateScriptEditorContent() {
var codeCopy = code.repeat(1);
var ramUsage = calculateRamUsage(codeCopy);
document.getElementById("script-editor-status-text").innerText =
- "RAM: " + Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["c" /* formatNumber */])(ramUsage, 2).toString() + "GB";
+ "RAM: " + Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["c" /* formatNumber */])(ramUsage, 2).toString() + "GB";
}
//Define key commands in script editor (ctrl o to save + close, etc.)
@@ -21430,26 +21534,26 @@ function saveAndCloseScriptEditor() {
var filename = document.getElementById("script-editor-filename").value;
if (__WEBPACK_IMPORTED_MODULE_2__InteractiveTutorial_js__["b" /* iTutorialIsRunning */] && __WEBPACK_IMPORTED_MODULE_2__InteractiveTutorial_js__["a" /* currITutorialStep */] == __WEBPACK_IMPORTED_MODULE_2__InteractiveTutorial_js__["e" /* iTutorialSteps */].TerminalTypeScript) {
if (filename != "foodnstuff") {
- Object(__WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Leave the script name as 'foodnstuff'!");
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Leave the script name as 'foodnstuff'!");
return;
}
var editor = ace.edit('javascript-editor');
var code = editor.getValue();
code = code.replace(/\s/g, "");
if (code.indexOf("while(true){hack('foodnstuff');}") == -1) {
- Object(__WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Please copy and paste the code from the tutorial!");
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Please copy and paste the code from the tutorial!");
return;
}
Object(__WEBPACK_IMPORTED_MODULE_2__InteractiveTutorial_js__["c" /* iTutorialNextStep */])();
}
if (filename == "") {
- Object(__WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__["a" /* dialogBoxCreate */])("You must specify a filename!");
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__["a" /* dialogBoxCreate */])("You must specify a filename!");
return;
}
if (checkValidFilename(filename) == false) {
- Object(__WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Script filename can contain only alphanumerics, hyphens, and underscores");
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Script filename can contain only alphanumerics, hyphens, and underscores");
return;
}
@@ -21514,7 +21618,7 @@ Script.prototype.updateRamUsage = function() {
this.ramUsage = calculateRamUsage(codeCopy);
console.log("ram usage: " + this.ramUsage);
if (isNaN(this.ramUsage)) {
- Object(__WEBPACK_IMPORTED_MODULE_8__utils_DialogBox_js__["a" /* dialogBoxCreate */])("ERROR in calculating ram usage. This is a bug, please report to game develoepr");
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_DialogBox_js__["a" /* dialogBoxCreate */])("ERROR in calculating ram usage. This is a bug, please report to game develoepr");
}
}
@@ -21522,94 +21626,94 @@ function calculateRamUsage(codeCopy) {
codeCopy = codeCopy.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '$1'); //Delete comments
codeCopy = codeCopy.replace(/\s/g,''); //Remove all whitespace
var baseRam = 1.4;
- var whileCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "while(");
- var forCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "for(");
- var ifCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "if(");
- var hackCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hack(");
- var growCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "grow(");
- var weakenCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "weaken(");
- var scanCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scan(");
- var nukeCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "nuke(");
- var brutesshCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "brutessh(");
- var ftpcrackCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "ftpcrack(");
- var relaysmtpCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "relaysmtp(");
- var httpwormCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "httpworm(");
- var sqlinjectCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sqlinject(");
- var runCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "run(");
- var execCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "exec(");
- var killCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "kill(") + Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "killall(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "exit(");
- var scpCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scp(");
- var hasRootAccessCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hasRootAccess(");
- var getHostnameCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHostname(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getIp(");
- var getHackingLevelCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackingLevel(");
- var getMultipliersCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackingMultipliers(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getBitNodeMultipliers(");
- var getServerCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMoneyAvailable(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMaxMoney(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerSecurityLevel(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerBaseSecurityLevel(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMinSecurityLevel(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerGrowth(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerRequiredHackingLevel(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerNumPortsRequired(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerRam(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "serverExists(");
- var fileExistsCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "fileExists(");
- var isRunningCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "isRunning(");
- var purchaseHacknetCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseHacknetNode(");
- var hacknetnodesArrayCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hacknetnodes[");
- var hnUpgLevelCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeLevel(");
- var hnUpgRamCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeRam()");
- var hnUpgCoreCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeCore()");
- var scriptGetStockCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStockPrice(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStockPosition(");
- var scriptBuySellStockCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "buyStock(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sellStock(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "shortStock(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sellShort(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "placeOrder(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "cancelOrder(");
- var scriptPurchaseServerCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseServer(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "deleteServer(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getPurchasedServers(");
- var scriptRoundCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "round(");
- var scriptWriteCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "write(") + Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "clear(");
- var scriptReadCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "read(");
- var arbScriptCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scriptRunning(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scriptKill(");
- var getScriptCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptRam(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptIncome(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptExpGain(");
- var getHackTimeCount = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackTime(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getGrowTime(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getWeakenTime(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getTimeSinceLastAug(");
- var singFn1Count = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "universityCourse(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "gymWorkout(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "travelToCity(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseTor(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseProgram(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStats(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "isBusy(");
- var singFn2Count = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "upgradeHomeRam(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getUpgradeHomeRamCost(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "workForCompany(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "applyToCompany(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getCompanyRep(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "checkFactionInvitations(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "joinFaction(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "workForFaction(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getFactionRep(");
- var singFn3Count = Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "createProgram(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "commitCrime(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getCrimeChance(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getOwnedAugmentations(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getAugmentationsFromFaction(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getAugmentationCost(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseAugmentation(") +
- Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "installAugmentations(");
+ var whileCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "while(");
+ var forCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "for(");
+ var ifCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "if(");
+ var hackCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hack(");
+ var growCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "grow(");
+ var weakenCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "weaken(");
+ var scanCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scan(");
+ var nukeCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "nuke(");
+ var brutesshCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "brutessh(");
+ var ftpcrackCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "ftpcrack(");
+ var relaysmtpCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "relaysmtp(");
+ var httpwormCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "httpworm(");
+ var sqlinjectCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sqlinject(");
+ var runCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "run(");
+ var execCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "exec(");
+ var killCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "kill(") + Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "killall(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "exit(");
+ var scpCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scp(");
+ var hasRootAccessCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hasRootAccess(");
+ var getHostnameCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHostname(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getIp(");
+ var getHackingLevelCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackingLevel(");
+ var getMultipliersCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackingMultipliers(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getBitNodeMultipliers(");
+ var getServerCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMoneyAvailable(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMaxMoney(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerSecurityLevel(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerBaseSecurityLevel(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerMinSecurityLevel(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerGrowth(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerRequiredHackingLevel(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerNumPortsRequired(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getServerRam(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "serverExists(");
+ var fileExistsCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "fileExists(");
+ var isRunningCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "isRunning(");
+ var purchaseHacknetCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseHacknetNode(");
+ var hacknetnodesArrayCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "hacknetnodes[");
+ var hnUpgLevelCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeLevel(");
+ var hnUpgRamCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeRam()");
+ var hnUpgCoreCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, ".upgradeCore()");
+ var scriptGetStockCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStockPrice(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStockPosition(");
+ var scriptBuySellStockCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "buyStock(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sellStock(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "shortStock(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "sellShort(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "placeOrder(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "cancelOrder(");
+ var scriptPurchaseServerCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseServer(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "deleteServer(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getPurchasedServers(");
+ var scriptRoundCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "round(");
+ var scriptWriteCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "write(") + Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "clear(");
+ var scriptReadCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "read(");
+ var arbScriptCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scriptRunning(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "scriptKill(");
+ var getScriptCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptRam(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptIncome(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getScriptExpGain(");
+ var getHackTimeCount = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getHackTime(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getGrowTime(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getWeakenTime(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getTimeSinceLastAug(");
+ var singFn1Count = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "universityCourse(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "gymWorkout(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "travelToCity(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseTor(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseProgram(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getStats(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "isBusy(");
+ var singFn2Count = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "upgradeHomeRam(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getUpgradeHomeRamCost(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "workForCompany(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "applyToCompany(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getCompanyRep(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "checkFactionInvitations(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "joinFaction(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "workForFaction(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getFactionRep(");
+ var singFn3Count = Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "createProgram(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "commitCrime(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getCrimeChance(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getOwnedAugmentations(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getAugmentationsFromFaction(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "getAugmentationCost(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "purchaseAugmentation(") +
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["h" /* numOccurrences */])(codeCopy, "installAugmentations(");
if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN != 4) {
singFn1Count *= 10;
@@ -21662,15 +21766,15 @@ function calculateRamUsage(codeCopy) {
}
Script.prototype.toJSON = function() {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["b" /* Generic_toJSON */])("Script", this);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["b" /* Generic_toJSON */])("Script", this);
}
Script.fromJSON = function(value) {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(Script, value.data);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(Script, value.data);
}
-__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["c" /* Reviver */].constructors.Script = Script;
+__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["c" /* Reviver */].constructors.Script = Script;
//Called when the game is loaded. Loads all running scripts (from all servers)
//into worker scripts so that they will start running
@@ -21722,7 +21826,7 @@ function scriptCalculateOfflineProduction(runningScriptObj) {
console.log(runningScriptObj.filename + " called grow() on " + serv.hostname + " " + timesGrown + " times while offline");
runningScriptObj.log("Called grow() on " + serv.hostname + " " + timesGrown + " times while offline");
var growth = Object(__WEBPACK_IMPORTED_MODULE_6__Server_js__["j" /* processSingleServerGrowth */])(serv, timesGrown * 450);
- runningScriptObj.log(serv.hostname + " grown by " + Object(__WEBPACK_IMPORTED_MODULE_11__utils_StringHelperFunctions_js__["c" /* formatNumber */])(growth * 100 - 100, 6) + "% from grow() calls made while offline");
+ runningScriptObj.log(serv.hostname + " grown by " + Object(__WEBPACK_IMPORTED_MODULE_12__utils_StringHelperFunctions_js__["c" /* formatNumber */])(growth * 100 - 100, 6) + "% from grow() calls made while offline");
}
}
@@ -21793,7 +21897,7 @@ function scriptCalculateOfflineProduction(runningScriptObj) {
function findRunningScript(filename, args, server) {
for (var i = 0; i < server.runningScripts.length; ++i) {
if (server.runningScripts[i].filename == filename &&
- Object(__WEBPACK_IMPORTED_MODULE_10__utils_HelperFunctions_js__["d" /* compareArrays */])(server.runningScripts[i].args, args)) {
+ Object(__WEBPACK_IMPORTED_MODULE_11__utils_HelperFunctions_js__["d" /* compareArrays */])(server.runningScripts[i].args, args)) {
return server.runningScripts[i];
}
}
@@ -21837,7 +21941,7 @@ RunningScript.prototype.log = function(txt) {
RunningScript.prototype.displayLog = function() {
for (var i = 0; i < this.logs.length; ++i) {
- post(this.logs[i]);
+ Object(__WEBPACK_IMPORTED_MODULE_8__Terminal_js__["b" /* post */])(this.logs[i]);
}
}
@@ -21874,15 +21978,15 @@ RunningScript.prototype.recordWeaken = function(serverIp, n=1) {
}
RunningScript.prototype.toJSON = function() {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["b" /* Generic_toJSON */])("RunningScript", this);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["b" /* Generic_toJSON */])("RunningScript", this);
}
RunningScript.fromJSON = function(value) {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(RunningScript, value.data);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(RunningScript, value.data);
}
-__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["c" /* Reviver */].constructors.RunningScript = RunningScript;
+__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["c" /* Reviver */].constructors.RunningScript = RunningScript;
//Creates an object that creates a map/dictionary with the IP of each existing server as
//a key. Initializes every key with a specified value that can either by a number or an array
@@ -21914,15 +22018,15 @@ AllServersMap.prototype.printConsole = function() {
}
AllServersMap.prototype.toJSON = function() {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["b" /* Generic_toJSON */])("AllServersMap", this);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["b" /* Generic_toJSON */])("AllServersMap", this);
}
AllServersMap.fromJSON = function(value) {
- return Object(__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(AllServersMap, value.data);
+ return Object(__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["a" /* Generic_fromJSON */])(AllServersMap, value.data);
}
-__WEBPACK_IMPORTED_MODULE_9__utils_JSONReviver_js__["c" /* Reviver */].constructors.AllServersMap = AllServersMap;
+__WEBPACK_IMPORTED_MODULE_10__utils_JSONReviver_js__["c" /* Reviver */].constructors.AllServersMap = AllServersMap;
@@ -25171,11 +25275,12 @@ function getJobRequirementText(company, pos, tooltiptext=false) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NetscriptFunctions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return initSingularitySFFlags; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return hasSingularitySF; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return initSingularitySFFlags; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return hasSingularitySF; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return hasBn11SF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return hasWallStreetSF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return wallStreetSFLvl; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return hasWallStreetSF; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return hasCorporationSF; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return wallStreetSFLvl; });
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ActiveScriptsUI_js__ = __webpack_require__(26);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Augmentations_js__ = __webpack_require__(20);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__BitNode_js__ = __webpack_require__(8);
@@ -25245,12 +25350,20 @@ var sprintf = __webpack_require__(44).sprintf,
-var hasSingularitySF=false, hasAISF=false, hasBn11SF=false, hasWallStreetSF=false;
+var hasSingularitySF=false, //Source-File 4
+ hasAISF=false, //Source-File 5
+ hasBn11SF=false,
+ hasWallStreetSF=false, //Source-File 8
+ hasCorporationSF=false; //Source-File 3
+
var singularitySFLvl=1, wallStreetSFLvl=1;
//Used to check and set flags for every Source File, despite the name of the function
function initSingularitySFFlags() {
for (var i = 0; i < __WEBPACK_IMPORTED_MODULE_14__Player_js__["a" /* Player */].sourceFiles.length; ++i) {
+ if (__WEBPACK_IMPORTED_MODULE_14__Player_js__["a" /* Player */].sourceFiles[i].n === 3) {
+ hasCorporationSF = true;
+ }
if (__WEBPACK_IMPORTED_MODULE_14__Player_js__["a" /* Player */].sourceFiles[i].n === 4) {
hasSingularitySF = true;
singularitySFLvl = __WEBPACK_IMPORTED_MODULE_14__Player_js__["a" /* Player */].sourceFiles[i].lvl;
@@ -27659,7 +27772,7 @@ function NetscriptFunctions(workerScript) {
//If replace is true then spaces are replaced with " "
function post(input, replace=true) {
if (replace) {
- $("#terminal-input").before('
' + input.replace( / /g, " " ) + ' ');
+ $("#terminal-input").before('' + input.replace( / /g, " " ) + ' ');
} else {
$("#terminal-input").before('' + input + ' ');
}
@@ -29256,6 +29369,9 @@ let Terminal = {
post("Defense: " + __WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].defense + " / 1500");
post("Dexterity: " + __WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].dexterity + " / 1500");
post("Agility: " + __WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].agility + " / 1500");
+ break;
+ case __WEBPACK_IMPORTED_MODULE_2__CreateProgram_js__["a" /* Programs */].BitFlume:
+ Object(__WEBPACK_IMPORTED_MODULE_12__RedPill_js__["a" /* hackWorldDaemon */])(__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].bitNodeN, true);
break;
default:
post("Invalid executable. Cannot be run");
@@ -34974,7 +35090,7 @@ function iTutorialEvaluateStep() {
//next step triggered by terminal commmand
break;
case iTutorialSteps.TerminalRunScript:
- iTutorialSetText("We have 8GB of free RAM on this machine, which is enough to run our " +
+ iTutorialSetText("We have 16GB of free RAM on this machine, which is enough to run our " +
"script. Let's run our script using 'run foodnstuff.script'.");
//next step triggered by terminal commmand
break;
@@ -37908,7 +38024,7 @@ function createStockTicker(stock) {
var longOpt = document.createElement("option");
longOpt.text = "Long";
longShortSelect.add(longOpt);
- if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["d" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["f" /* wallStreetSFLvl */] >= 2)) {
+ if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["e" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["g" /* wallStreetSFLvl */] >= 2)) {
var shortOpt = document.createElement("option");
shortOpt.text = "Short";
longShortSelect.add(shortOpt);
@@ -37919,7 +38035,7 @@ function createStockTicker(stock) {
var marketOpt = document.createElement("option");
marketOpt.text = "Market Order";
orderTypeSelect.add(marketOpt);
- if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["d" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["f" /* wallStreetSFLvl */] >= 3)) {
+ if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["e" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["g" /* wallStreetSFLvl */] >= 3)) {
var limitOpt = document.createElement("option");
limitOpt.text = "Limit Order";
orderTypeSelect.add(limitOpt);
@@ -38208,7 +38324,7 @@ function updateStockPlayerPosition(stock) {
" (Total Cost: " + __WEBPACK_IMPORTED_MODULE_9__utils_numeral_min_js___default()(totalCost).format('$0.000a') + ")" +
" Profit: " + __WEBPACK_IMPORTED_MODULE_9__utils_numeral_min_js___default()(gains).format('$0.000a') +
" (" + Object(__WEBPACK_IMPORTED_MODULE_10__utils_StringHelperFunctions_js__["c" /* formatNumber */])(percentageGains*100, 2) + "%) ";
- if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["d" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["f" /* wallStreetSFLvl */] >= 2)) {
+ if (__WEBPACK_IMPORTED_MODULE_5__Player_js__["a" /* Player */].bitNodeN === 8 || (__WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["e" /* hasWallStreetSF */] && __WEBPACK_IMPORTED_MODULE_3__NetscriptFunctions_js__["g" /* wallStreetSFLvl */] >= 2)) {
stock.posTxtEl.innerHTML +=
"Short Position: " +
"Shares in short position will increase " +
@@ -38488,68 +38604,70 @@ Material.prototype.init = function(mats={}) {
case "Water":
this.dmd = 75; this.dmdR = [65, 85];
this.cmp = 50; this.cmpR = [40, 60];
- this.bCost = 750; this.mv = 0.2;
- this.mku = 15;
+ this.bCost = 1000; this.mv = 0.2;
+ this.mku = 12;
break;
case "Energy":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 80; this.cmpR = [65, 95];
- this.bCost = 1125; this.mv = 0.2;
- this.mku = 15;
+ this.bCost = 1500; this.mv = 0.2;
+ this.mku = 12;
break;
case "Food":
this.dmd = 80; this.dmdR = [70, 90];
this.cmp = 60; this.cmpR = [35, 85];
- this.bCost = 3750; this.mv = 1;
- this.mku = 9;
+ this.bCost = 5000; this.mv = 1;
+ this.mku = 7.5;
break;
case "Plants":
this.dmd = 70; this.dmdR = [20, 90];
this.cmp = 50; this.cmpR = [30, 70];
- this.bCost = 2250; this.mv = 0.6;
- this.mku = 12;
+ this.bCost = 3000; this.mv = 0.6;
+ this.mku = 10;
break;
case "Metal":
this.dmd = 80; this.dmdR = [75, 85];
this.cmp = 70; this.cmpR = [60, 80];
- this.bCost = 2000; this.mv = 1;
- this.mku = 15;
+ this.bCost = 2650; this.mv = 1;
+ this.mku = 12;
break;
case "Hardware":
this.dmd = 85; this.dmdR = [80, 90];
this.cmp = 80; this.cmpR = [65, 95];
- this.bCost = 3000; this.mv = 0.5; //Less mv bc its processed twice
- this.mku = 7;
+ this.bCost = 4000; this.mv = 0.5; //Less mv bc its processed twice
+ this.mku = 5.5;
break;
case "Chemicals":
this.dmd = 55; this.dmdR = [40, 70];
this.cmp = 60; this.cmpR = [40, 80];
- this.bCost = 5000; this.mv = 1.2;
- this.mku = 8;
+ this.bCost = 6750; this.mv = 1.2;
+ this.mku = 6.5;
break;
case "Real Estate":
this.dmd = 50; this.dmdR = [5, 100];
this.cmp = 50; this.cmpR = [25, 75];
- this.bCost = 12000; this.mv = 1.5; //Less mv bc its processed twice
- this.mku = 6;
+ this.bCost = 16e3; this.mv = 1.5; //Less mv bc its processed twice
+ this.mku = 5;
break;
case "Drugs":
this.dmd = 60; this.dmdR = [45, 75];
this.cmp = 70; this.cmpR = [40, 100];
- this.bCost = 6000; this.mv = 1.6;
- this.mku = 5;
+ this.bCost = 8e3; this.mv = 1.6;
+ this.mku = 4;
break;
case "Robots":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 90; this.cmpR = [80, 100];
- this.bCost = 15000; this.mv = 0.5; //Less mv bc its processed twice
- this.mku = 3;
+ this.bCost = 20e3; this.mv = 0.5; //Less mv bc its processed twice
+ this.mku = 2.5;
break;
case "AI Cores":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 90; this.cmpR = [80, 100];
- this.bCost = 20000; this.mv = 0.8; //Less mv bc its processed twice
- this.mku = 2;
+ this.bCost = 27e3; this.mv = 0.8; //Less mv bc its processed twice
+ this.mku = 1.8;
+ break;
+ case "Scientific Research":
break;
default:
console.log("Invalid material type in init(): " + this.name);
@@ -38562,7 +38680,7 @@ Material.prototype.processMarket = function() {
//This 1st random check determines whether competition increases or decreases
//More competition = lower market price
var v = (Math.random() * this.mv) / 100;
- var pv = (Math.random() * this.mv) / 100;
+ var pv = (Math.random() * this.mv) / 300;
if (Math.random() < 0.42) {
this.cmp *= (1+v);
if (this.cmp > this.cmpR[1]) {this.cmp = this.cmpR[1]};
@@ -38576,7 +38694,7 @@ Material.prototype.processMarket = function() {
//This 2nd random check determines whether demand increases or decreases
//More demand = higher market price
v = (Math.random() * this.mv) / 100;
- pv = (Math.random() * this.mv) / 100;
+ pv = (Math.random() * this.mv) / 300;
if (Math.random() < 0.45) {
this.dmd *= (1+v);
if (this.dmd > this.dmdR[1]) {this.dmd = this.dmdR[1];}
@@ -38978,7 +39096,7 @@ function Industry(params={}) {
this.thisCycleRevenue = new __WEBPACK_IMPORTED_MODULE_3__utils_decimal_js___default.a(0);
this.thisCycleExpenses = new __WEBPACK_IMPORTED_MODULE_3__utils_decimal_js___default.a(0);
- this.state = 0;
+ this.state = "START";
this.init();
}
@@ -39000,6 +39118,7 @@ Industry.prototype.init = function() {
this.prodMats = ["Energy"];
break;
case Industries.Utilities:
+ case "Utilities":
this.reFac = 0.4;
this.sciFac = 0.6;
this.robFac = 0.3;
@@ -39105,6 +39224,7 @@ Industry.prototype.init = function() {
this.makesProducts = true;
break;
case Industries.Computer:
+ case "Computer":
this.reFac = 0.2;
this.sciFac = 0.65;
this.robFac = 0.4;
@@ -39183,6 +39303,7 @@ Industry.prototype.getProductDescriptionText = function() {
return "develop new pharmaceutical drugs";
break;
case Industries.Computer:
+ case "Computer":
return "create new computer hardware and networking infrastructures";
break;
case Industries.Robotics:
@@ -39251,7 +39372,7 @@ Industry.prototype.process = function(marketCycles=1, state, company) {
for (var officeLoc in this.offices) {
if (this.offices.hasOwnProperty(officeLoc) &&
this.offices[officeLoc] instanceof OfficeSpace) {
- employeeSalary += this.offices[officeLoc].process(marketCycles, this);
+ employeeSalary += this.offices[officeLoc].process(marketCycles, {industry:this, corporation:company});
}
}
this.thisCycleExpenses = this.thisCycleExpenses.plus(employeeSalary);
@@ -39268,7 +39389,7 @@ Industry.prototype.process = function(marketCycles=1, state, company) {
this.thisCycleExpenses = this.thisCycleExpenses.plus(res[1]);
//Process creation, production & sale of products
- res = this.processProducts(marketCycles);
+ res = this.processProducts(marketCycles, company);
this.thisCycleRevenue = this.thisCycleRevenue.plus(res[0]);
this.thisCycleExpenses = this.thisCycleExpenses.plus(res[1]);
}
@@ -39382,7 +39503,7 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} else {
prod = maxProd;
}
- prod *= (SecsPerMarketCycle * marketCycles * this.prodMult); //Convert production from per second to per market cycle
+ prod *= (SecsPerMarketCycle * marketCycles * this.prodMult * company.getProductionMultiplier()); //Convert production from per second to per market cycle
//Calculate net change in warehouse storage making
//the produced materials will cost
var totalMatSize = 0;
@@ -39482,7 +39603,7 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} else {
sellAmt = maxSell;
}
- sellAmt = (sellAmt * SecsPerMarketCycle * marketCycles);
+ sellAmt = (sellAmt * company.getSalesMultiplier() * SecsPerMarketCycle * marketCycles);
sellAmt = Math.min(mat.qty, sellAmt);
if (sellAmt < 0) {
console.log("ERROR: sellAmt is negative");
@@ -39499,7 +39620,6 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} //End processing of sale of materials
break;
- /* TODO Process Export of materials */
case "EXPORT":
for (var matName in warehouse.materials) {
if (warehouse.materials.hasOwnProperty(matName)) {
@@ -39545,14 +39665,15 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
//Produce Scientific Research based on R&D employees
//Scientific Research can be produced without a warehouse
if (office instanceof OfficeSpace) {
- this.sciResearch.qty += .01 * Math.pow(office.employeeProd[EmployeePositions.RandD], 0.5);
+ this.sciResearch.qty += (.01 * Math.pow(office.employeeProd[EmployeePositions.RandD], 0.5)
+ * company.getScientificResearchMultiplier());
}
}
return [revenue, expenses];
}
//Process production & sale of this industry's FINISHED products (including all of their stats)
-Industry.prototype.processProducts = function(marketCycles=1) {
+Industry.prototype.processProducts = function(marketCycles=1, corporation) {
var revenue = 0, expenses = 0;
//Create products
@@ -39585,7 +39706,7 @@ Industry.prototype.processProducts = function(marketCycles=1) {
if (this.products.hasOwnProperty(prodName)) {
var prod = this.products[prodName];
if (prod instanceof Product && prod.fin) {
- revenue += this.processProduct(marketCycles, prod);
+ revenue += this.processProduct(marketCycles, prod, corporation);
}
}
}
@@ -39593,7 +39714,7 @@ Industry.prototype.processProducts = function(marketCycles=1) {
}
//Processes FINISHED products
-Industry.prototype.processProduct = function(marketCycles=1, product) {
+Industry.prototype.processProduct = function(marketCycles=1, product, corporation) {
var totalProfit = 0;
for (var i = 0; i < Cities.length; ++i) {
var city = Cities[i], office = this.offices[city], warehouse = this.warehouses[city];
@@ -39617,7 +39738,7 @@ Industry.prototype.processProduct = function(marketCycles=1, product) {
} else {
prod = maxProd;
}
- prod *= (this.prodMult * SecsPerMarketCycle * marketCycles);
+ prod *= (this.prodMult * corporation.getProductionMultiplier() * SecsPerMarketCycle * marketCycles);
//Calculate net change in warehouse storage making the Products will cost
@@ -39690,7 +39811,7 @@ Industry.prototype.processProduct = function(marketCycles=1, product) {
} else {
sellAmt = maxSell;
}
- sellAmt = sellAmt * SecsPerMarketCycle * marketCycles;
+ sellAmt = sellAmt * corporation.getSalesMultiplier() * SecsPerMarketCycle * marketCycles;
sellAmt = Math.min(product.data[city][0], sellAmt); //data[0] is qty
if (sellAmt && product.sCost) {
product.data[city][0] -= sellAmt; //data[0] is qty
@@ -39796,29 +39917,33 @@ Employee.prototype.process = function(marketCycles=1, office) {
return salary;
}
-Employee.prototype.calculateProductivity = function() {
+Employee.prototype.calculateProductivity = function(corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
var prodBase = this.mor * this.hap * this.ene * 1e-6, prodMult;
switch(this.pos) {
//Calculate productivity based on position. This is multipled by prodBase
//to get final value
case EmployeePositions.Operations:
- prodMult = (0.6 * this.int) + (0.1 * this.cha) + (this.exp) +
- (0.5 * this.cre) + (this.eff);
+ prodMult = (0.6 * effInt) + (0.1 * effCha) + (this.exp) +
+ (0.5 * effCre) + (effEff);
break;
case EmployeePositions.Engineer:
- prodMult = (this.int) + (0.1 * this.cha) + (1.5 * this.exp) +
- (this.eff);
+ prodMult = (effInt) + (0.1 * effCha) + (1.5 * this.exp) +
+ (effEff);
break;
case EmployeePositions.Business:
- prodMult = (0.4 * this.int) + (this.cha) + (0.5 * this.exp);
+ prodMult = (0.4 * effInt) + (effCha) + (0.5 * this.exp);
break;
case EmployeePositions.Management:
- prodMult = (2 * this.cha) + (this.exp) + (0.2 * this.cre) +
- (0.7 * this.eff);
+ prodMult = (2 * effCha) + (this.exp) + (0.2 * effCre) +
+ (0.7 * effEff);
break;
case EmployeePositions.RandD:
- prodMult = (1.5 * this.int) + (0.8 * this.exp) + (this.cre) +
- (0.5 * this.eff);
+ prodMult = (1.5 * effInt) + (0.8 * this.exp) + (effCre) +
+ (0.5 * effEff);
break;
default:
console.log("Invalid employee position: " + this.pos);
@@ -39838,7 +39963,11 @@ Employee.prototype.throwParty = function(money) {
}
//'panel' is the DOM element on which to create the UI
-Employee.prototype.createUI = function(panel) {
+Employee.prototype.createUI = function(panel, corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
panel.style.color = "white";
panel.appendChild(Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["f" /* createElement */])("p", {
id:"cmpy-mgmt-employee-" + this.name + "-panel-text",
@@ -39846,11 +39975,11 @@ Employee.prototype.createUI = function(panel) {
"Happiness: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.hap, 3) + " " +
"Energy: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.ene, 3) + " " +
"Age: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.age, 3) + " " +
- "Intelligence: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.int, 3) + " " +
- "Charisma: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.cha, 3) + " " +
+ "Intelligence: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effInt, 3) + " " +
+ "Charisma: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effCha, 3) + " " +
"Experience: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.exp, 3) + " " +
- "Creativity: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.cre, 3) + " " +
- "Efficiency: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.eff, 3) + " " +
+ "Creativity: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effCre, 3) + " " +
+ "Efficiency: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effEff, 3) + " " +
"Salary: " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(this.sal).format("$0.000a") + "/ s ",
}));
@@ -39879,7 +40008,11 @@ Employee.prototype.createUI = function(panel) {
panel.appendChild(selector);
}
-Employee.prototype.updateUI = function(panel) {
+Employee.prototype.updateUI = function(panel, corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
if (panel == null) {
console.log("ERROR: Employee.updateUI() called with null panel");
return;
@@ -39892,11 +40025,11 @@ Employee.prototype.updateUI = function(panel) {
"Happiness: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.hap, 3) + " " +
"Energy: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.ene, 3) + " " +
"Age: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.age, 3) + " " +
- "Intelligence: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.int, 3) + " " +
- "Charisma: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.cha, 3) + " " +
+ "Intelligence: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effInt, 3) + " " +
+ "Charisma: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effCha, 3) + " " +
"Experience: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.exp, 3) + " " +
- "Creativity: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.cre, 3) + " " +
- "Efficiency: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.eff, 3) + " " +
+ "Creativity: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effCre, 3) + " " +
+ "Efficiency: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(effEff, 3) + " " +
"Salary: " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(this.sal).format("$0.000a") + "/ s ";
}
@@ -39939,7 +40072,8 @@ function OfficeSpace(params={}) {
};
}
-OfficeSpace.prototype.process = function(marketCycles=1, industry) {
+OfficeSpace.prototype.process = function(marketCycles=1, parentRefs) {
+ var corporation = parentRefs.corporation, industry = parentRefs.industry;
var perfMult=1; //Multiplier for employee morale/happiness/energy based on company performance
if (industry.funds < 0 && industry.lastCycleRevenue < 0) {
perfMult = Math.pow(0.99, marketCycles);
@@ -39956,11 +40090,11 @@ OfficeSpace.prototype.process = function(marketCycles=1, industry) {
var salary = emp.process(marketCycles, this);
salaryPaid += salary;
}
- this.calculateEmployeeProductivity(marketCycles);
+ this.calculateEmployeeProductivity(marketCycles, corporation);
return salaryPaid;
}
-OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1) {
+OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1, corporation) {
//Reset
for (var name in this.employeeProd) {
if (this.employeeProd.hasOwnProperty(name)) {
@@ -39971,7 +40105,7 @@ OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1) {
var total = 0;
for (var i = 0; i < this.employees.length; ++i) {
var employee = this.employees[i];
- var prod = employee.calculateProductivity();
+ var prod = employee.calculateProductivity(corporation);
this.employeeProd[employee.pos] += prod;
total += prod;
}
@@ -40098,6 +40232,8 @@ __WEBPACK_IMPORTED_MODULE_6__utils_JSONReviver_js__["c" /* Reviver */].construct
function Warehouse(params={}) {
this.loc = params.loc ? params.loc : "";
this.size = params.size ? params.size : 0;
+ this.level = 0;
+
this.sizeUsed = 0;
this.materials = {
@@ -40130,6 +40266,15 @@ Warehouse.prototype.updateMaterialSizeUsed = function() {
}
}
+Warehouse.prototype.updateSize = function(corporation) {
+ //Backwards compatibility
+ if (this.level == null || this.level === 0) {
+ this.level = Math.round(this.size / 100);
+ }
+
+ this.size = (this.level * 100) * corporation.getStorageMultiplier();
+}
+
Warehouse.prototype.createUI = function(parentRefs) {
if (parentRefs.company == null || parentRefs.industry == null) {
console.log("ERROR: Warehouse.createUI called without parentRefs.company or parentRefs.industry");
@@ -40153,7 +40298,13 @@ Warehouse.prototype.createUI = function(parentRefs) {
display:"inline-block",
class: company.funds.lt(upgradeCost) ? "a-link-button-inactive" : "a-link-button",
clickListener:()=>{
- this.size += 100;
+ //Backwards compatibility
+ if (this.level == null || this.level === 0) {
+ this.level = Math.round(this.size / 100);
+ }
+
+ ++this.level;
+ this.updateSize(company);
company.funds = company.funds.minus(upgradeCost);
this.createUI(parentRefs);
return;
@@ -40777,48 +40928,60 @@ var CorporationUnlockUpgrades = {
// name, desc]
var CorporationUpgrades = {
//Smart factories, increases production
- "0": [0, 10e9, 1.07, 0.02,
+ "0": [0, 4e9, 1.07, 0.02,
"Smart Factories", "Advanced AI automatically optimizes the operation and productivity " +
"of factories. Each level of this upgrade increases your global production by 2% (additive)."],
//Smart warehouses, increases storage size
- "1": [1, 20e9, 1.07, .1,
+ "1": [1, 4e9, 1.07, .1,
"Smart Storage", "Advanced AI automatically optimizes your warehouse storage methods. " +
"Each level of this upgrade increases your global warehouse storage size by 10% (additive)."],
//Advertise through dreams, passive popularity/ awareness gain
- "2": [2, 100e9, 1.08, .001,
- "DreamSense", "Use DreamSense LCC Technologies to advertise your corporation " +
+ "2": [2, 999999e9, 1.08, .001,
+ "DreamSense", "NOT YET IMPLEMENTED! - Use DreamSense LCC Technologies to advertise your corporation " +
"to consumers through their dreams. Each level of this upgrade provides a passive " +
"increase in awareness of your company by 0.001 / second."],
//Makes advertising more effective
- "3": [3, 5e9, 1.11, 0.1,
- "Wilson Analytics", "Purchase data and analysis from Wilson, a marketing research " +
+ "3": [3, 999999e9, 1.11, 0.1,
+ "Wilson Analytics", "NOT YET IMPLEMENTED - Purchase data and analysis from Wilson, a marketing research " +
"firm. Each level of this upgrades increases the effectiveness of your " +
"advertising by 10% (additive)."],
//Augmentation for employees, increases cre
- "4": [4, 10e9, 1.05, 0.1,
+ "4": [4, 2e9, 1.06, 0.1,
"Nuoptimal Nootropic Injector Implants", "Purchase the Nuoptimal Nootropic " +
"Injector augmentation for your employees. Each level of this upgrade " +
"globally increases the creativity of your employees by 10% (additive)."],
//Augmentation for employees, increases cha
- "5": [5, 10e9, 1.05, 0.1,
+ "5": [5, 2e9, 1.06, 0.1,
"Speech Processor Implants", "Purchase the Speech Processor augmentation for your employees. " +
"Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."],
//Augmentation for employees, increases int
- "6": [6, 10e9, 1.05, 0.1,
- "Neural Acelerators", "Purchase the Neural Accelerator augmentation for your employees. " +
+ "6": [6, 2e9, 1.06, 0.1,
+ "Neural Accelerators", "Purchase the Neural Accelerator augmentation for your employees. " +
"Each level of this upgrade globally increases the intelligence of your employees " +
"by 10% (additive)."],
//Augmentation for employees, increases eff
- "7": [7, 10e9, 1.05, 0.1,
+ "7": [7, 2e9, 1.06, 0.1,
"FocusWires", "Purchase the FocusWire augmentation for your employees. Each level " +
"of this upgrade globally increases the efficiency of your employees by 10% (additive)."],
+
+ //Improves sales of materials/products
+ "8": [8, 1e9, 1.09, 0.01,
+ "ABC SalesBots", "Always Be Closing. Purchase these robotic salesmen to increase the amount of " +
+ "materials and products you sell. Each level of this upgrade globally increases your sales " +
+ "by 1% (additive)."],
+
+ //Improves scientific research rate
+ "9": [9, 5e9, 1.08, 0.05,
+ "Project Insight", "Purchase 'Project Insight', a R&D service provided by the secretive " +
+ "Fulcrum Technologies. Each level of this upgrade globally increases the amount of " +
+ "Scientific Research you produce by 5% (additive)."],
}
function Corporation(params={}) {
@@ -40882,13 +41045,13 @@ Corporation.prototype.process = function(numCycles=1) {
Corporation.prototype.determineValuation = function() {
var val, profit = (this.revenue.minus(this.expenses)).toNumber();
if (this.public) {
- val = 25e9 + this.funds.toNumber() + (profit * Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["h" /* getRandomInt */])(7000, 8500));
+ val = 25e9 + this.funds.toNumber() + (profit * 25e3);
val *= (Math.pow(1.1, this.divisions.length));
val = Math.max(val, 0);
} else {
- val = 10e9 + Math.max(this.funds.toNumber(), 0); //Base valuation
+ val = 10e9 + Math.max(this.funds.toNumber(), 0) / 3; //Base valuation
if (profit > 0) {
- val += (profit * Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["h" /* getRandomInt */])(12e3, 14e3));
+ val += (profit * 400e3);
val *= (Math.pow(1.1, this.divisions.length));
} else {
val = 10e9 * Math.pow(1.1, this.divisions.length);
@@ -41017,7 +41180,7 @@ Corporation.prototype.upgrade = function(upgrade) {
upgradeAmt = upgrade[3]; //Amount by which the upgrade multiplier gets increased (additive)
while (this.upgrades.length <= upgN) {this.upgrades.push(0);}
while (this.upgradeMultipliers.length <= upgN) {this.upgradeMultipliers.push(1);}
- var totalCost = basePrice * Math.pow(this.upgrades[upgN], priceMult);
+ var totalCost = basePrice * Math.pow(priceMult, this.upgrades[upgN]);
if (this.funds.lt(totalCost)) {
Object(__WEBPACK_IMPORTED_MODULE_4__utils_DialogBox_js__["a" /* dialogBoxCreate */])("You don't have enough funds to purchase this!");
return;
@@ -41027,8 +41190,68 @@ Corporation.prototype.upgrade = function(upgrade) {
//Increase upgrade multiplier
this.upgradeMultipliers[upgN] = 1 + (this.upgrades[upgN] * upgradeAmt);
+
+ //If storage size is being updated, update values in Warehouse objects
+ if (upgN === 1) {
+ for (var i = 0; i < this.divisions.length; ++i) {
+ var industry = this.divisions[i];
+ for (var city in industry.warehouses) {
+ if (industry.warehouses.hasOwnProperty(city) && industry.warehouses[city] instanceof Warehouse) {
+ industry.warehouses[city].updateSize(this);
+ }
+ }
+ }
+ }
+
+ this.updateCorporationOverviewContent();
}
+Corporation.prototype.getProductionMultiplier = function() {
+ var mult = this.upgradeMultipliers[0];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getStorageMultiplier = function() {
+ var mult = this.upgradeMultipliers[1];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getAdvertisingMultiplier = function() {
+ var mult = this.upgradeMultipliers[3];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeCreMultiplier = function() {
+ var mult = this.upgradeMultipliers[4];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeChaMultiplier = function() {
+ var mult = this.upgradeMultipliers[5];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeIntMultiplier = function() {
+ var mult = this.upgradeMultipliers[6];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeEffMultiplier = function() {
+ var mult = this.upgradeMultipliers[7];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getSalesMultiplier = function() {
+ var mult = this.upgradeMultipliers[8];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getScientificResearchMultiplier = function() {
+ var mult = this.upgradeMultipliers[9];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+
//Keep 'global' variables for DOM elements so we don't have to search
//through the DOM tree repeatedly when updating UI
var companyManagementDiv, companyManagementHeaderTabs, companyManagementPanel,
@@ -41449,19 +41672,22 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
class:"cmpy-mgmt-upgrade-container",
});
upgradeContainer.appendChild(Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["f" /* createElement */])("h1", {
- innerText:"Upgrades", margin:"6px", padding:"6px",
+ innerText:"Unlocks", margin:"6px", padding:"6px",
}));
//Unlock upgrades
var corp = this;
+ var numUnlockUpgrades = Object.keys(CorporationUnlockUpgrades).length,
+ numUpgrades = Object.keys(CorporationUpgrades).length;
if (this.unlockUpgrades == null || this.upgrades == null) { //Backwards compatibility
- var numUnlockUpgrades = Object.keys(CorporationUnlockUpgrades).length,
- numUpgrades = Object.keys(CorporationUpgrades).length;
-
this.unlockUpgrades = Array(numUnlockUpgrades).fill(0);
this.upgrades = Array(numUpgrades).fill(0);
}
- for (var i = 0; i < this.unlockUpgrades.length; ++i) {
+ while (this.unlockUpgrades.length < numUnlockUpgrades) {this.unlockUpgrades.push(0);}
+ while (this.upgrades.length < numUpgrades) {this.upgrades.push(0);}
+ while (this.upgradeMultipliers < numUpgrades) {this.upgradeMultipliers.push(1);}
+
+ for (var i = 0; i < numUnlockUpgrades; ++i) {
(function(i, corp) {
if (corp.unlockUpgrades[i] === 0) {
var upgrade = CorporationUnlockUpgrades[i.toString()];
@@ -41472,7 +41698,8 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
upgradeContainer.appendChild(Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["f" /* createElement */])("div", {
class:"cmpy-mgmt-upgrade-div",
- innerHTML:upgrade[2] + " - " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(upgrade[1]).format("$0.000a") + " " + upgrade[3],
+ innerHTML:upgrade[2] + " - " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(upgrade[1]).format("$0.000a"),
+ tooltip: upgrade[3],
clickListener:()=>{
if (corp.funds.lt(upgrade[1])) {
Object(__WEBPACK_IMPORTED_MODULE_4__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Insufficient funds");
@@ -41487,8 +41714,11 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
//Levelable upgrades
- /*
- for (var i = 0; i < this.upgrades.length; ++i) {
+ upgradeContainer.appendChild(Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["f" /* createElement */])("h1", {
+ innerText:"Upgrades", margin:"6px", padding:"6px",
+ }));
+
+ for (var i = 0; i < numUpgrades; ++i) {
(function(i, corp) {
var upgrade = CorporationUpgrades[i.toString()];
if (upgrade == null) {
@@ -41497,13 +41727,14 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
var baseCost = upgrade[1], priceMult = upgrade[2];
- var cost = baseCost * Math.pow(corp.upgrades[i], priceMult);
- upgradeContainer.appendChild(createElement("div", {
+ var cost = baseCost * Math.pow(priceMult, corp.upgrades[i]);
+ upgradeContainer.appendChild(Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["f" /* createElement */])("div", {
class:"cmpy-mgmt-upgrade-div",
- innerHTML:upgrade[4] + " - " + numeral(cost).format("$0.000a") + " " + upgrade[5],
+ innerHTML:upgrade[4] + " - " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(cost).format("$0.000a"),
+ tooltip:upgrade[5],
clickListener:()=>{
if (corp.funds.lt(cost)) {
- dialogBoxCreate("Insufficient funds");
+ Object(__WEBPACK_IMPORTED_MODULE_4__utils_DialogBox_js__["a" /* dialogBoxCreate */])("Insufficient funds");
} else {
corp.upgrade(upgrade);
corp.displayCorporationOverviewContent();
@@ -41511,7 +41742,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
}));
})(i, corp);
- }*/
+ }
companyManagementPanel.appendChild(upgradeContainer);
}
@@ -41535,9 +41766,27 @@ Corporation.prototype.updateCorporationOverviewContent = function() {
"Total Profits: " + profitStr + " / s " +
"Publicly Traded: " + (this.public ? "Yes" : "No") + " " +
"Owned Stock Shares: " + __WEBPACK_IMPORTED_MODULE_7__utils_numeral_min_js___default()(this.numShares).format('0.000a') + " " +
- "Stock Price: " + (this.public ? "$" + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.sharePrice, 2) : "N/A") + " ";
- p.innerHTML = txt;
+ "Stock Price: " + (this.public ? "$" + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(this.sharePrice, 2) : "N/A") + " ";
+ var prodMult = this.getProductionMultiplier(),
+ storageMult = this.getStorageMultiplier(),
+ advMult = this.getAdvertisingMultiplier(),
+ empCreMult = this.getEmployeeCreMultiplier(),
+ empChaMult = this.getEmployeeChaMultiplier(),
+ empIntMult = this.getEmployeeIntMultiplier(),
+ empEffMult = this.getEmployeeEffMultiplier(),
+ salesMult = this.getSalesMultiplier(),
+ sciResMult = this.getScientificResearchMultiplier();
+ if (prodMult > 1) {txt += "Production Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(prodMult, 3) + " ";}
+ if (storageMult > 1) {txt += "Storage Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(storageMult, 3) + " ";}
+ if (advMult > 1) {txt += "Advertising Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(advMult, 3) + " ";}
+ if (empCreMult > 1) {txt += "Empl. Creativity Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(empCreMult, 3) + " ";}
+ if (empChaMult > 1) {txt += "Empl. Charisma Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(empChaMult, 3) + " ";}
+ if (empIntMult > 1) {txt += "Empl. Intelligence Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(empIntMult, 3) + " ";}
+ if (empEffMult > 1) {txt += "Empl. Efficiency Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(empEffMult, 3) + " ";}
+ if (salesMult > 1) {txt += "Sales Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(salesMult, 3) + " ";}
+ if (sciResMult > 1) {txt += "Scientific Research Multiplier: " + Object(__WEBPACK_IMPORTED_MODULE_8__utils_StringHelperFunctions_js__["c" /* formatNumber */])(sciResMult, 3) + " ";}
+ p.innerHTML = txt;
}
Corporation.prototype.displayDivisionContent = function(division, city) {
@@ -41659,6 +41908,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
createProductPopupText = "Design and develop a new pharmaceutical drug!";
break;
case Industries.Computer:
+ case "Computer":
createProductButtonText = "Create Product";
createProductPopupText = "Design and manufacture a new computer hardware product!";
break;
@@ -41915,7 +42165,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
});
industryEmployeePanel.appendChild(industryEmployeeList);
for (var i = 0; i < office.employees.length; ++i) {
- (function() {
+ (function(corp) {
var emp = office.employees[i];
var li = Object(__WEBPACK_IMPORTED_MODULE_5__utils_HelperFunctions_js__["e" /* createAccordionElement */])({
id:"cmpy-mgmt-employee-" + emp.name,
@@ -41926,9 +42176,9 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
console.log("ERROR: Could not find employee accordion panel");
return;
}
- emp.createUI(panel);
+ emp.createUI(panel, corp);
industryEmployeeList.appendChild(li);
- })();
+ })(this);
}
//Warehouse Panel
@@ -42002,11 +42252,11 @@ Corporation.prototype.updateDivisionContent = function(division) {
hdrText:emp.name,
});
panel = li.children[1];
- emp.createUI(panel);
+ emp.createUI(panel, company);
employeeList.appendChild(li);
return;
}
- emp.updateUI(panel);
+ emp.updateUI(panel, company);
})(this);
}
}
@@ -42493,7 +42743,7 @@ function writeRedPillLetter(pElem, line, i=0) {
}
let redPillFlag = false;
-function hackWorldDaemon(currentNodeNumber) {
+function hackWorldDaemon(currentNodeNumber, flume=false) {
redPillFlag = true;
__WEBPACK_IMPORTED_MODULE_1__engine_js__["Engine"].loadRedPillContent();
return writeRedPillLine("[ERROR] SEMPOOL INVALID").then(function() {
@@ -42525,7 +42775,7 @@ function hackWorldDaemon(currentNodeNumber) {
}).then(function() {
return writeRedPillLine("..............................................")
}).then(function() {
- return loadBitVerse(currentNodeNumber);
+ return loadBitVerse(currentNodeNumber, flume);
}).catch(function(e){
console.log("ERROR: " + e.toString());
});
@@ -42572,12 +42822,10 @@ function giveSourceFile(bitNodeNumber) {
}
}
-function loadBitVerse(destroyedBitNodeNum) {
+function loadBitVerse(destroyedBitNodeNum, flume=false) {
//Clear the screen
var container = document.getElementById("red-pill-container");
- while (container.firstChild) {
- container.removeChild(container.firstChild);
- }
+ Object(__WEBPACK_IMPORTED_MODULE_7__utils_HelperFunctions_js__["k" /* removeChildrenFromElement */])(container);
//Create the Bit Verse
var bitVerseImage = document.createElement("pre");
@@ -42659,7 +42907,7 @@ function loadBitVerse(destroyedBitNodeNum) {
return;
}
Object(__WEBPACK_IMPORTED_MODULE_8__utils_YesNoBox_js__["b" /* yesNoBoxCreate */])("BitNode-" + i + ": " + bitNode.name + " " + bitNode.info);
- createBitNodeYesNoEventListeners(i, destroyedBitNodeNum);
+ createBitNodeYesNoEventListeners(i, destroyedBitNodeNum, flume);
});
} else {
elem.addEventListener("click", function() {
@@ -42730,16 +42978,14 @@ function createBitNode(n) {
" ";
}
-function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode) {
+function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode, flume=false) {
var yesBtn = Object(__WEBPACK_IMPORTED_MODULE_8__utils_YesNoBox_js__["d" /* yesNoBoxGetYesButton */])();
yesBtn.innerHTML = "Enter BitNode-" + newBitNode;
yesBtn.addEventListener("click", function() {
- giveSourceFile(destroyedBitNode);
+ if (!flume) {giveSourceFile(destroyedBitNode);}
redPillFlag = false;
var container = document.getElementById("red-pill-container");
- while (container.firstChild) {
- container.removeChild(container.firstChild);
- }
+ Object(__WEBPACK_IMPORTED_MODULE_7__utils_HelperFunctions_js__["k" /* removeChildrenFromElement */])(container);
//Set new Bit Node
__WEBPACK_IMPORTED_MODULE_2__Player_js__["a" /* Player */].bitNodeN = newBitNode;
@@ -42906,7 +43152,7 @@ function prestigeAugmentation() {
//BitNode 8: Ghost of Wall Street
if (__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].bitNodeN === 8) {__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].money = new __WEBPACK_IMPORTED_MODULE_16__utils_decimal_js___default.a(100e6);}
- if (__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].bitNodeN === 8 || __WEBPACK_IMPORTED_MODULE_9__NetscriptFunctions_js__["d" /* hasWallStreetSF */]) {
+ if (__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].bitNodeN === 8 || __WEBPACK_IMPORTED_MODULE_9__NetscriptFunctions_js__["e" /* hasWallStreetSF */]) {
__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].hasWseAccount = true;
__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].hasTixApiAccess = true;
}
@@ -43017,7 +43263,7 @@ function prestigeSourceFile() {
__WEBPACK_IMPORTED_MODULE_5__engine_js__["Engine"].loadTerminalContent();
//Reinitialize Bit Node flags
- Object(__WEBPACK_IMPORTED_MODULE_9__NetscriptFunctions_js__["e" /* initSingularitySFFlags */])();
+ Object(__WEBPACK_IMPORTED_MODULE_9__NetscriptFunctions_js__["f" /* initSingularitySFFlags */])();
//Reset Stock market
if (__WEBPACK_IMPORTED_MODULE_11__Player_js__["a" /* Player */].hasWseAccount) {
diff --git a/index.html b/index.html
index ae292bcc4..32723459f 100644
--- a/index.html
+++ b/index.html
@@ -164,9 +164,7 @@
@@ -441,48 +439,7 @@
at any time. Your progress will be saved and you can continue later.
-
+
@@ -947,6 +904,20 @@
+
+
+ Autosave Interval
+
+ The time (in seconds) between each autosave. Set to 0 to disable autosave.
+
+
+
+
+
+
+
+
Suppress Messages:
diff --git a/src/BitNode.js b/src/BitNode.js
index 34f959bfa..1710e4974 100644
--- a/src/BitNode.js
+++ b/src/BitNode.js
@@ -78,7 +78,7 @@ function initBitNodes() {
"by 1's and 0's. They were wrong. " +
"In this BitNode: " +
"The base security level of servers is doubled " +
- "The starting money on servers is halved, but the maximum money is doubled " +
+ "The starting money on servers is halved, but the maximum money remains the same " +
"Most methods of earning money now give significantly less " +
"Infiltration gives 50% more reputation and money " +
"Augmentations are more expensive " +
diff --git a/src/CompanyManagement.js b/src/CompanyManagement.js
index 155e41397..a9cfa6ca2 100644
--- a/src/CompanyManagement.js
+++ b/src/CompanyManagement.js
@@ -101,68 +101,70 @@ Material.prototype.init = function(mats={}) {
case "Water":
this.dmd = 75; this.dmdR = [65, 85];
this.cmp = 50; this.cmpR = [40, 60];
- this.bCost = 750; this.mv = 0.2;
- this.mku = 15;
+ this.bCost = 1000; this.mv = 0.2;
+ this.mku = 12;
break;
case "Energy":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 80; this.cmpR = [65, 95];
- this.bCost = 1125; this.mv = 0.2;
- this.mku = 15;
+ this.bCost = 1500; this.mv = 0.2;
+ this.mku = 12;
break;
case "Food":
this.dmd = 80; this.dmdR = [70, 90];
this.cmp = 60; this.cmpR = [35, 85];
- this.bCost = 3750; this.mv = 1;
- this.mku = 9;
+ this.bCost = 5000; this.mv = 1;
+ this.mku = 7.5;
break;
case "Plants":
this.dmd = 70; this.dmdR = [20, 90];
this.cmp = 50; this.cmpR = [30, 70];
- this.bCost = 2250; this.mv = 0.6;
- this.mku = 12;
+ this.bCost = 3000; this.mv = 0.6;
+ this.mku = 10;
break;
case "Metal":
this.dmd = 80; this.dmdR = [75, 85];
this.cmp = 70; this.cmpR = [60, 80];
- this.bCost = 2000; this.mv = 1;
- this.mku = 15;
+ this.bCost = 2650; this.mv = 1;
+ this.mku = 12;
break;
case "Hardware":
this.dmd = 85; this.dmdR = [80, 90];
this.cmp = 80; this.cmpR = [65, 95];
- this.bCost = 3000; this.mv = 0.5; //Less mv bc its processed twice
- this.mku = 7;
+ this.bCost = 4000; this.mv = 0.5; //Less mv bc its processed twice
+ this.mku = 5.5;
break;
case "Chemicals":
this.dmd = 55; this.dmdR = [40, 70];
this.cmp = 60; this.cmpR = [40, 80];
- this.bCost = 5000; this.mv = 1.2;
- this.mku = 8;
+ this.bCost = 6750; this.mv = 1.2;
+ this.mku = 6.5;
break;
case "Real Estate":
this.dmd = 50; this.dmdR = [5, 100];
this.cmp = 50; this.cmpR = [25, 75];
- this.bCost = 12000; this.mv = 1.5; //Less mv bc its processed twice
- this.mku = 6;
+ this.bCost = 16e3; this.mv = 1.5; //Less mv bc its processed twice
+ this.mku = 5;
break;
case "Drugs":
this.dmd = 60; this.dmdR = [45, 75];
this.cmp = 70; this.cmpR = [40, 100];
- this.bCost = 6000; this.mv = 1.6;
- this.mku = 5;
+ this.bCost = 8e3; this.mv = 1.6;
+ this.mku = 4;
break;
case "Robots":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 90; this.cmpR = [80, 100];
- this.bCost = 15000; this.mv = 0.5; //Less mv bc its processed twice
- this.mku = 3;
+ this.bCost = 20e3; this.mv = 0.5; //Less mv bc its processed twice
+ this.mku = 2.5;
break;
case "AI Cores":
this.dmd = 90; this.dmdR = [80, 100];
this.cmp = 90; this.cmpR = [80, 100];
- this.bCost = 20000; this.mv = 0.8; //Less mv bc its processed twice
- this.mku = 2;
+ this.bCost = 27e3; this.mv = 0.8; //Less mv bc its processed twice
+ this.mku = 1.8;
+ break;
+ case "Scientific Research":
break;
default:
console.log("Invalid material type in init(): " + this.name);
@@ -175,7 +177,7 @@ Material.prototype.processMarket = function() {
//This 1st random check determines whether competition increases or decreases
//More competition = lower market price
var v = (Math.random() * this.mv) / 100;
- var pv = (Math.random() * this.mv) / 100;
+ var pv = (Math.random() * this.mv) / 300;
if (Math.random() < 0.42) {
this.cmp *= (1+v);
if (this.cmp > this.cmpR[1]) {this.cmp = this.cmpR[1]};
@@ -189,7 +191,7 @@ Material.prototype.processMarket = function() {
//This 2nd random check determines whether demand increases or decreases
//More demand = higher market price
v = (Math.random() * this.mv) / 100;
- pv = (Math.random() * this.mv) / 100;
+ pv = (Math.random() * this.mv) / 300;
if (Math.random() < 0.45) {
this.dmd *= (1+v);
if (this.dmd > this.dmdR[1]) {this.dmd = this.dmdR[1];}
@@ -591,7 +593,7 @@ function Industry(params={}) {
this.thisCycleRevenue = new Decimal(0);
this.thisCycleExpenses = new Decimal(0);
- this.state = 0;
+ this.state = "START";
this.init();
}
@@ -613,6 +615,7 @@ Industry.prototype.init = function() {
this.prodMats = ["Energy"];
break;
case Industries.Utilities:
+ case "Utilities":
this.reFac = 0.4;
this.sciFac = 0.6;
this.robFac = 0.3;
@@ -718,6 +721,7 @@ Industry.prototype.init = function() {
this.makesProducts = true;
break;
case Industries.Computer:
+ case "Computer":
this.reFac = 0.2;
this.sciFac = 0.65;
this.robFac = 0.4;
@@ -796,6 +800,7 @@ Industry.prototype.getProductDescriptionText = function() {
return "develop new pharmaceutical drugs";
break;
case Industries.Computer:
+ case "Computer":
return "create new computer hardware and networking infrastructures";
break;
case Industries.Robotics:
@@ -864,7 +869,7 @@ Industry.prototype.process = function(marketCycles=1, state, company) {
for (var officeLoc in this.offices) {
if (this.offices.hasOwnProperty(officeLoc) &&
this.offices[officeLoc] instanceof OfficeSpace) {
- employeeSalary += this.offices[officeLoc].process(marketCycles, this);
+ employeeSalary += this.offices[officeLoc].process(marketCycles, {industry:this, corporation:company});
}
}
this.thisCycleExpenses = this.thisCycleExpenses.plus(employeeSalary);
@@ -881,7 +886,7 @@ Industry.prototype.process = function(marketCycles=1, state, company) {
this.thisCycleExpenses = this.thisCycleExpenses.plus(res[1]);
//Process creation, production & sale of products
- res = this.processProducts(marketCycles);
+ res = this.processProducts(marketCycles, company);
this.thisCycleRevenue = this.thisCycleRevenue.plus(res[0]);
this.thisCycleExpenses = this.thisCycleExpenses.plus(res[1]);
}
@@ -995,7 +1000,7 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} else {
prod = maxProd;
}
- prod *= (SecsPerMarketCycle * marketCycles * this.prodMult); //Convert production from per second to per market cycle
+ prod *= (SecsPerMarketCycle * marketCycles * this.prodMult * company.getProductionMultiplier()); //Convert production from per second to per market cycle
//Calculate net change in warehouse storage making
//the produced materials will cost
var totalMatSize = 0;
@@ -1095,7 +1100,7 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} else {
sellAmt = maxSell;
}
- sellAmt = (sellAmt * SecsPerMarketCycle * marketCycles);
+ sellAmt = (sellAmt * company.getSalesMultiplier() * SecsPerMarketCycle * marketCycles);
sellAmt = Math.min(mat.qty, sellAmt);
if (sellAmt < 0) {
console.log("ERROR: sellAmt is negative");
@@ -1112,7 +1117,6 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
} //End processing of sale of materials
break;
- /* TODO Process Export of materials */
case "EXPORT":
for (var matName in warehouse.materials) {
if (warehouse.materials.hasOwnProperty(matName)) {
@@ -1158,14 +1162,15 @@ Industry.prototype.processMaterials = function(marketCycles=1, company) {
//Produce Scientific Research based on R&D employees
//Scientific Research can be produced without a warehouse
if (office instanceof OfficeSpace) {
- this.sciResearch.qty += .01 * Math.pow(office.employeeProd[EmployeePositions.RandD], 0.5);
+ this.sciResearch.qty += (.01 * Math.pow(office.employeeProd[EmployeePositions.RandD], 0.5)
+ * company.getScientificResearchMultiplier());
}
}
return [revenue, expenses];
}
//Process production & sale of this industry's FINISHED products (including all of their stats)
-Industry.prototype.processProducts = function(marketCycles=1) {
+Industry.prototype.processProducts = function(marketCycles=1, corporation) {
var revenue = 0, expenses = 0;
//Create products
@@ -1198,7 +1203,7 @@ Industry.prototype.processProducts = function(marketCycles=1) {
if (this.products.hasOwnProperty(prodName)) {
var prod = this.products[prodName];
if (prod instanceof Product && prod.fin) {
- revenue += this.processProduct(marketCycles, prod);
+ revenue += this.processProduct(marketCycles, prod, corporation);
}
}
}
@@ -1206,7 +1211,7 @@ Industry.prototype.processProducts = function(marketCycles=1) {
}
//Processes FINISHED products
-Industry.prototype.processProduct = function(marketCycles=1, product) {
+Industry.prototype.processProduct = function(marketCycles=1, product, corporation) {
var totalProfit = 0;
for (var i = 0; i < Cities.length; ++i) {
var city = Cities[i], office = this.offices[city], warehouse = this.warehouses[city];
@@ -1230,7 +1235,7 @@ Industry.prototype.processProduct = function(marketCycles=1, product) {
} else {
prod = maxProd;
}
- prod *= (this.prodMult * SecsPerMarketCycle * marketCycles);
+ prod *= (this.prodMult * corporation.getProductionMultiplier() * SecsPerMarketCycle * marketCycles);
//Calculate net change in warehouse storage making the Products will cost
@@ -1303,7 +1308,7 @@ Industry.prototype.processProduct = function(marketCycles=1, product) {
} else {
sellAmt = maxSell;
}
- sellAmt = sellAmt * SecsPerMarketCycle * marketCycles;
+ sellAmt = sellAmt * corporation.getSalesMultiplier() * SecsPerMarketCycle * marketCycles;
sellAmt = Math.min(product.data[city][0], sellAmt); //data[0] is qty
if (sellAmt && product.sCost) {
product.data[city][0] -= sellAmt; //data[0] is qty
@@ -1409,29 +1414,33 @@ Employee.prototype.process = function(marketCycles=1, office) {
return salary;
}
-Employee.prototype.calculateProductivity = function() {
+Employee.prototype.calculateProductivity = function(corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
var prodBase = this.mor * this.hap * this.ene * 1e-6, prodMult;
switch(this.pos) {
//Calculate productivity based on position. This is multipled by prodBase
//to get final value
case EmployeePositions.Operations:
- prodMult = (0.6 * this.int) + (0.1 * this.cha) + (this.exp) +
- (0.5 * this.cre) + (this.eff);
+ prodMult = (0.6 * effInt) + (0.1 * effCha) + (this.exp) +
+ (0.5 * effCre) + (effEff);
break;
case EmployeePositions.Engineer:
- prodMult = (this.int) + (0.1 * this.cha) + (1.5 * this.exp) +
- (this.eff);
+ prodMult = (effInt) + (0.1 * effCha) + (1.5 * this.exp) +
+ (effEff);
break;
case EmployeePositions.Business:
- prodMult = (0.4 * this.int) + (this.cha) + (0.5 * this.exp);
+ prodMult = (0.4 * effInt) + (effCha) + (0.5 * this.exp);
break;
case EmployeePositions.Management:
- prodMult = (2 * this.cha) + (this.exp) + (0.2 * this.cre) +
- (0.7 * this.eff);
+ prodMult = (2 * effCha) + (this.exp) + (0.2 * effCre) +
+ (0.7 * effEff);
break;
case EmployeePositions.RandD:
- prodMult = (1.5 * this.int) + (0.8 * this.exp) + (this.cre) +
- (0.5 * this.eff);
+ prodMult = (1.5 * effInt) + (0.8 * this.exp) + (effCre) +
+ (0.5 * effEff);
break;
default:
console.log("Invalid employee position: " + this.pos);
@@ -1451,7 +1460,11 @@ Employee.prototype.throwParty = function(money) {
}
//'panel' is the DOM element on which to create the UI
-Employee.prototype.createUI = function(panel) {
+Employee.prototype.createUI = function(panel, corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
panel.style.color = "white";
panel.appendChild(createElement("p", {
id:"cmpy-mgmt-employee-" + this.name + "-panel-text",
@@ -1459,11 +1472,11 @@ Employee.prototype.createUI = function(panel) {
"Happiness: " + formatNumber(this.hap, 3) + " " +
"Energy: " + formatNumber(this.ene, 3) + " " +
"Age: " + formatNumber(this.age, 3) + " " +
- "Intelligence: " + formatNumber(this.int, 3) + " " +
- "Charisma: " + formatNumber(this.cha, 3) + " " +
+ "Intelligence: " + formatNumber(effInt, 3) + " " +
+ "Charisma: " + formatNumber(effCha, 3) + " " +
"Experience: " + formatNumber(this.exp, 3) + " " +
- "Creativity: " + formatNumber(this.cre, 3) + " " +
- "Efficiency: " + formatNumber(this.eff, 3) + " " +
+ "Creativity: " + formatNumber(effCre, 3) + " " +
+ "Efficiency: " + formatNumber(effEff, 3) + " " +
"Salary: " + numeral(this.sal).format("$0.000a") + "/ s ",
}));
@@ -1492,7 +1505,11 @@ Employee.prototype.createUI = function(panel) {
panel.appendChild(selector);
}
-Employee.prototype.updateUI = function(panel) {
+Employee.prototype.updateUI = function(panel, corporation) {
+ var effCre = this.cre * corporation.getEmployeeCreMultiplier(),
+ effCha = this.cha * corporation.getEmployeeChaMultiplier(),
+ effInt = this.int * corporation.getEmployeeIntMultiplier(),
+ effEff = this.eff * corporation.getEmployeeEffMultiplier();
if (panel == null) {
console.log("ERROR: Employee.updateUI() called with null panel");
return;
@@ -1505,11 +1522,11 @@ Employee.prototype.updateUI = function(panel) {
"Happiness: " + formatNumber(this.hap, 3) + " " +
"Energy: " + formatNumber(this.ene, 3) + " " +
"Age: " + formatNumber(this.age, 3) + " " +
- "Intelligence: " + formatNumber(this.int, 3) + " " +
- "Charisma: " + formatNumber(this.cha, 3) + " " +
+ "Intelligence: " + formatNumber(effInt, 3) + " " +
+ "Charisma: " + formatNumber(effCha, 3) + " " +
"Experience: " + formatNumber(this.exp, 3) + " " +
- "Creativity: " + formatNumber(this.cre, 3) + " " +
- "Efficiency: " + formatNumber(this.eff, 3) + " " +
+ "Creativity: " + formatNumber(effCre, 3) + " " +
+ "Efficiency: " + formatNumber(effEff, 3) + " " +
"Salary: " + numeral(this.sal).format("$0.000a") + "/ s ";
}
@@ -1552,7 +1569,8 @@ function OfficeSpace(params={}) {
};
}
-OfficeSpace.prototype.process = function(marketCycles=1, industry) {
+OfficeSpace.prototype.process = function(marketCycles=1, parentRefs) {
+ var corporation = parentRefs.corporation, industry = parentRefs.industry;
var perfMult=1; //Multiplier for employee morale/happiness/energy based on company performance
if (industry.funds < 0 && industry.lastCycleRevenue < 0) {
perfMult = Math.pow(0.99, marketCycles);
@@ -1569,11 +1587,11 @@ OfficeSpace.prototype.process = function(marketCycles=1, industry) {
var salary = emp.process(marketCycles, this);
salaryPaid += salary;
}
- this.calculateEmployeeProductivity(marketCycles);
+ this.calculateEmployeeProductivity(marketCycles, corporation);
return salaryPaid;
}
-OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1) {
+OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1, corporation) {
//Reset
for (var name in this.employeeProd) {
if (this.employeeProd.hasOwnProperty(name)) {
@@ -1584,7 +1602,7 @@ OfficeSpace.prototype.calculateEmployeeProductivity = function(marketCycles=1) {
var total = 0;
for (var i = 0; i < this.employees.length; ++i) {
var employee = this.employees[i];
- var prod = employee.calculateProductivity();
+ var prod = employee.calculateProductivity(corporation);
this.employeeProd[employee.pos] += prod;
total += prod;
}
@@ -1711,6 +1729,8 @@ Reviver.constructors.OfficeSpace = OfficeSpace;
function Warehouse(params={}) {
this.loc = params.loc ? params.loc : "";
this.size = params.size ? params.size : 0;
+ this.level = 0;
+
this.sizeUsed = 0;
this.materials = {
@@ -1743,6 +1763,15 @@ Warehouse.prototype.updateMaterialSizeUsed = function() {
}
}
+Warehouse.prototype.updateSize = function(corporation) {
+ //Backwards compatibility
+ if (this.level == null || this.level === 0) {
+ this.level = Math.round(this.size / 100);
+ }
+
+ this.size = (this.level * 100) * corporation.getStorageMultiplier();
+}
+
Warehouse.prototype.createUI = function(parentRefs) {
if (parentRefs.company == null || parentRefs.industry == null) {
console.log("ERROR: Warehouse.createUI called without parentRefs.company or parentRefs.industry");
@@ -1766,7 +1795,13 @@ Warehouse.prototype.createUI = function(parentRefs) {
display:"inline-block",
class: company.funds.lt(upgradeCost) ? "a-link-button-inactive" : "a-link-button",
clickListener:()=>{
- this.size += 100;
+ //Backwards compatibility
+ if (this.level == null || this.level === 0) {
+ this.level = Math.round(this.size / 100);
+ }
+
+ ++this.level;
+ this.updateSize(company);
company.funds = company.funds.minus(upgradeCost);
this.createUI(parentRefs);
return;
@@ -2390,48 +2425,60 @@ var CorporationUnlockUpgrades = {
// name, desc]
var CorporationUpgrades = {
//Smart factories, increases production
- "0": [0, 10e9, 1.07, 0.02,
+ "0": [0, 4e9, 1.07, 0.02,
"Smart Factories", "Advanced AI automatically optimizes the operation and productivity " +
"of factories. Each level of this upgrade increases your global production by 2% (additive)."],
//Smart warehouses, increases storage size
- "1": [1, 20e9, 1.07, .1,
+ "1": [1, 4e9, 1.07, .1,
"Smart Storage", "Advanced AI automatically optimizes your warehouse storage methods. " +
"Each level of this upgrade increases your global warehouse storage size by 10% (additive)."],
//Advertise through dreams, passive popularity/ awareness gain
- "2": [2, 100e9, 1.08, .001,
- "DreamSense", "Use DreamSense LCC Technologies to advertise your corporation " +
+ "2": [2, 999999e9, 1.08, .001,
+ "DreamSense", "NOT YET IMPLEMENTED! - Use DreamSense LCC Technologies to advertise your corporation " +
"to consumers through their dreams. Each level of this upgrade provides a passive " +
"increase in awareness of your company by 0.001 / second."],
//Makes advertising more effective
- "3": [3, 5e9, 1.11, 0.1,
- "Wilson Analytics", "Purchase data and analysis from Wilson, a marketing research " +
+ "3": [3, 999999e9, 1.11, 0.1,
+ "Wilson Analytics", "NOT YET IMPLEMENTED - Purchase data and analysis from Wilson, a marketing research " +
"firm. Each level of this upgrades increases the effectiveness of your " +
"advertising by 10% (additive)."],
//Augmentation for employees, increases cre
- "4": [4, 10e9, 1.05, 0.1,
+ "4": [4, 2e9, 1.06, 0.1,
"Nuoptimal Nootropic Injector Implants", "Purchase the Nuoptimal Nootropic " +
"Injector augmentation for your employees. Each level of this upgrade " +
"globally increases the creativity of your employees by 10% (additive)."],
//Augmentation for employees, increases cha
- "5": [5, 10e9, 1.05, 0.1,
+ "5": [5, 2e9, 1.06, 0.1,
"Speech Processor Implants", "Purchase the Speech Processor augmentation for your employees. " +
"Each level of this upgrade globally increases the charisma of your employees by 10% (additive)."],
//Augmentation for employees, increases int
- "6": [6, 10e9, 1.05, 0.1,
- "Neural Acelerators", "Purchase the Neural Accelerator augmentation for your employees. " +
+ "6": [6, 2e9, 1.06, 0.1,
+ "Neural Accelerators", "Purchase the Neural Accelerator augmentation for your employees. " +
"Each level of this upgrade globally increases the intelligence of your employees " +
"by 10% (additive)."],
//Augmentation for employees, increases eff
- "7": [7, 10e9, 1.05, 0.1,
+ "7": [7, 2e9, 1.06, 0.1,
"FocusWires", "Purchase the FocusWire augmentation for your employees. Each level " +
"of this upgrade globally increases the efficiency of your employees by 10% (additive)."],
+
+ //Improves sales of materials/products
+ "8": [8, 1e9, 1.09, 0.01,
+ "ABC SalesBots", "Always Be Closing. Purchase these robotic salesmen to increase the amount of " +
+ "materials and products you sell. Each level of this upgrade globally increases your sales " +
+ "by 1% (additive)."],
+
+ //Improves scientific research rate
+ "9": [9, 5e9, 1.08, 0.05,
+ "Project Insight", "Purchase 'Project Insight', a R&D service provided by the secretive " +
+ "Fulcrum Technologies. Each level of this upgrade globally increases the amount of " +
+ "Scientific Research you produce by 5% (additive)."],
}
function Corporation(params={}) {
@@ -2495,13 +2542,13 @@ Corporation.prototype.process = function(numCycles=1) {
Corporation.prototype.determineValuation = function() {
var val, profit = (this.revenue.minus(this.expenses)).toNumber();
if (this.public) {
- val = 25e9 + this.funds.toNumber() + (profit * getRandomInt(7000, 8500));
+ val = 25e9 + this.funds.toNumber() + (profit * 25e3);
val *= (Math.pow(1.1, this.divisions.length));
val = Math.max(val, 0);
} else {
- val = 10e9 + Math.max(this.funds.toNumber(), 0); //Base valuation
+ val = 10e9 + Math.max(this.funds.toNumber(), 0) / 3; //Base valuation
if (profit > 0) {
- val += (profit * getRandomInt(12e3, 14e3));
+ val += (profit * 400e3);
val *= (Math.pow(1.1, this.divisions.length));
} else {
val = 10e9 * Math.pow(1.1, this.divisions.length);
@@ -2630,7 +2677,7 @@ Corporation.prototype.upgrade = function(upgrade) {
upgradeAmt = upgrade[3]; //Amount by which the upgrade multiplier gets increased (additive)
while (this.upgrades.length <= upgN) {this.upgrades.push(0);}
while (this.upgradeMultipliers.length <= upgN) {this.upgradeMultipliers.push(1);}
- var totalCost = basePrice * Math.pow(this.upgrades[upgN], priceMult);
+ var totalCost = basePrice * Math.pow(priceMult, this.upgrades[upgN]);
if (this.funds.lt(totalCost)) {
dialogBoxCreate("You don't have enough funds to purchase this!");
return;
@@ -2640,8 +2687,68 @@ Corporation.prototype.upgrade = function(upgrade) {
//Increase upgrade multiplier
this.upgradeMultipliers[upgN] = 1 + (this.upgrades[upgN] * upgradeAmt);
+
+ //If storage size is being updated, update values in Warehouse objects
+ if (upgN === 1) {
+ for (var i = 0; i < this.divisions.length; ++i) {
+ var industry = this.divisions[i];
+ for (var city in industry.warehouses) {
+ if (industry.warehouses.hasOwnProperty(city) && industry.warehouses[city] instanceof Warehouse) {
+ industry.warehouses[city].updateSize(this);
+ }
+ }
+ }
+ }
+
+ this.updateCorporationOverviewContent();
}
+Corporation.prototype.getProductionMultiplier = function() {
+ var mult = this.upgradeMultipliers[0];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getStorageMultiplier = function() {
+ var mult = this.upgradeMultipliers[1];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getAdvertisingMultiplier = function() {
+ var mult = this.upgradeMultipliers[3];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeCreMultiplier = function() {
+ var mult = this.upgradeMultipliers[4];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeChaMultiplier = function() {
+ var mult = this.upgradeMultipliers[5];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeIntMultiplier = function() {
+ var mult = this.upgradeMultipliers[6];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getEmployeeEffMultiplier = function() {
+ var mult = this.upgradeMultipliers[7];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getSalesMultiplier = function() {
+ var mult = this.upgradeMultipliers[8];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+Corporation.prototype.getScientificResearchMultiplier = function() {
+ var mult = this.upgradeMultipliers[9];
+ if (isNaN(mult) || mult < 1) {return 1;} else {return mult;}
+}
+
+
//Keep 'global' variables for DOM elements so we don't have to search
//through the DOM tree repeatedly when updating UI
var companyManagementDiv, companyManagementHeaderTabs, companyManagementPanel,
@@ -3062,19 +3169,22 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
class:"cmpy-mgmt-upgrade-container",
});
upgradeContainer.appendChild(createElement("h1", {
- innerText:"Upgrades", margin:"6px", padding:"6px",
+ innerText:"Unlocks", margin:"6px", padding:"6px",
}));
//Unlock upgrades
var corp = this;
+ var numUnlockUpgrades = Object.keys(CorporationUnlockUpgrades).length,
+ numUpgrades = Object.keys(CorporationUpgrades).length;
if (this.unlockUpgrades == null || this.upgrades == null) { //Backwards compatibility
- var numUnlockUpgrades = Object.keys(CorporationUnlockUpgrades).length,
- numUpgrades = Object.keys(CorporationUpgrades).length;
-
this.unlockUpgrades = Array(numUnlockUpgrades).fill(0);
this.upgrades = Array(numUpgrades).fill(0);
}
- for (var i = 0; i < this.unlockUpgrades.length; ++i) {
+ while (this.unlockUpgrades.length < numUnlockUpgrades) {this.unlockUpgrades.push(0);}
+ while (this.upgrades.length < numUpgrades) {this.upgrades.push(0);}
+ while (this.upgradeMultipliers < numUpgrades) {this.upgradeMultipliers.push(1);}
+
+ for (var i = 0; i < numUnlockUpgrades; ++i) {
(function(i, corp) {
if (corp.unlockUpgrades[i] === 0) {
var upgrade = CorporationUnlockUpgrades[i.toString()];
@@ -3085,7 +3195,8 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
upgradeContainer.appendChild(createElement("div", {
class:"cmpy-mgmt-upgrade-div",
- innerHTML:upgrade[2] + " - " + numeral(upgrade[1]).format("$0.000a") + " " + upgrade[3],
+ innerHTML:upgrade[2] + " - " + numeral(upgrade[1]).format("$0.000a"),
+ tooltip: upgrade[3],
clickListener:()=>{
if (corp.funds.lt(upgrade[1])) {
dialogBoxCreate("Insufficient funds");
@@ -3100,8 +3211,11 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
//Levelable upgrades
- /*
- for (var i = 0; i < this.upgrades.length; ++i) {
+ upgradeContainer.appendChild(createElement("h1", {
+ innerText:"Upgrades", margin:"6px", padding:"6px",
+ }));
+
+ for (var i = 0; i < numUpgrades; ++i) {
(function(i, corp) {
var upgrade = CorporationUpgrades[i.toString()];
if (upgrade == null) {
@@ -3110,10 +3224,11 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
var baseCost = upgrade[1], priceMult = upgrade[2];
- var cost = baseCost * Math.pow(corp.upgrades[i], priceMult);
+ var cost = baseCost * Math.pow(priceMult, corp.upgrades[i]);
upgradeContainer.appendChild(createElement("div", {
class:"cmpy-mgmt-upgrade-div",
- innerHTML:upgrade[4] + " - " + numeral(cost).format("$0.000a") + " " + upgrade[5],
+ innerHTML:upgrade[4] + " - " + numeral(cost).format("$0.000a"),
+ tooltip:upgrade[5],
clickListener:()=>{
if (corp.funds.lt(cost)) {
dialogBoxCreate("Insufficient funds");
@@ -3124,7 +3239,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
}
}));
})(i, corp);
- }*/
+ }
companyManagementPanel.appendChild(upgradeContainer);
}
@@ -3148,9 +3263,27 @@ Corporation.prototype.updateCorporationOverviewContent = function() {
"Total Profits: " + profitStr + " / s " +
"Publicly Traded: " + (this.public ? "Yes" : "No") + " " +
"Owned Stock Shares: " + numeral(this.numShares).format('0.000a') + " " +
- "Stock Price: " + (this.public ? "$" + formatNumber(this.sharePrice, 2) : "N/A") + " ";
- p.innerHTML = txt;
+ "Stock Price: " + (this.public ? "$" + formatNumber(this.sharePrice, 2) : "N/A") + " ";
+ var prodMult = this.getProductionMultiplier(),
+ storageMult = this.getStorageMultiplier(),
+ advMult = this.getAdvertisingMultiplier(),
+ empCreMult = this.getEmployeeCreMultiplier(),
+ empChaMult = this.getEmployeeChaMultiplier(),
+ empIntMult = this.getEmployeeIntMultiplier(),
+ empEffMult = this.getEmployeeEffMultiplier(),
+ salesMult = this.getSalesMultiplier(),
+ sciResMult = this.getScientificResearchMultiplier();
+ if (prodMult > 1) {txt += "Production Multiplier: " + formatNumber(prodMult, 3) + " ";}
+ if (storageMult > 1) {txt += "Storage Multiplier: " + formatNumber(storageMult, 3) + " ";}
+ if (advMult > 1) {txt += "Advertising Multiplier: " + formatNumber(advMult, 3) + " ";}
+ if (empCreMult > 1) {txt += "Empl. Creativity Multiplier: " + formatNumber(empCreMult, 3) + " ";}
+ if (empChaMult > 1) {txt += "Empl. Charisma Multiplier: " + formatNumber(empChaMult, 3) + " ";}
+ if (empIntMult > 1) {txt += "Empl. Intelligence Multiplier: " + formatNumber(empIntMult, 3) + " ";}
+ if (empEffMult > 1) {txt += "Empl. Efficiency Multiplier: " + formatNumber(empEffMult, 3) + " ";}
+ if (salesMult > 1) {txt += "Sales Multiplier: " + formatNumber(salesMult, 3) + " ";}
+ if (sciResMult > 1) {txt += "Scientific Research Multiplier: " + formatNumber(sciResMult, 3) + " ";}
+ p.innerHTML = txt;
}
Corporation.prototype.displayDivisionContent = function(division, city) {
@@ -3272,6 +3405,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
createProductPopupText = "Design and develop a new pharmaceutical drug!";
break;
case Industries.Computer:
+ case "Computer":
createProductButtonText = "Create Product";
createProductPopupText = "Design and manufacture a new computer hardware product!";
break;
@@ -3528,7 +3662,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
});
industryEmployeePanel.appendChild(industryEmployeeList);
for (var i = 0; i < office.employees.length; ++i) {
- (function() {
+ (function(corp) {
var emp = office.employees[i];
var li = createAccordionElement({
id:"cmpy-mgmt-employee-" + emp.name,
@@ -3539,9 +3673,9 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
console.log("ERROR: Could not find employee accordion panel");
return;
}
- emp.createUI(panel);
+ emp.createUI(panel, corp);
industryEmployeeList.appendChild(li);
- })();
+ })(this);
}
//Warehouse Panel
@@ -3615,11 +3749,11 @@ Corporation.prototype.updateDivisionContent = function(division) {
hdrText:emp.name,
});
panel = li.children[1];
- emp.createUI(panel);
+ emp.createUI(panel, company);
employeeList.appendChild(li);
return;
}
- emp.updateUI(panel);
+ emp.updateUI(panel, company);
})(this);
}
}
diff --git a/src/Constants.js b/src/Constants.js
index e89627086..946c9d566 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -1,5 +1,5 @@
let CONSTANTS = {
- Version: "0.34.0",
+ Version: "0.34.1",
//Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
//and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
@@ -1118,29 +1118,19 @@ let CONSTANTS = {
LatestUpdate:
"v0.34.1 " +
- "-Added new 'secret' Terminal command. Try: run musicplayer " +
-
- "v0.34.0 " +
- "-Added clear() and exit() Netscript functions " +
- "-When starting out or prestiging, you will now receive a 'Hacking Starter Guide'. It provides tips/pointers for new players " +
- "-Doubled the amount of RAM on low-level servers (up to required hacking level 150) " +
- "-Slightly increased experience gain from Infiltration " +
- "-buyStock(), sellStock(), shortStock(), and sellShort() Netscript function now return the stock price at which the transaction occurred, rather than a boolean. " +
- "If the function fails for some reason, 0 will be returned. " +
- "-Hacking Mission Changes: " +
- "---You can now select multiple Nodes of the same type by double clicking. This allows you to set the " +
- "action of all of selected nodes at once (e.g. set all Transfer Nodes to Fortify). Creating connections " +
- "does not work with this multi-select functionality yet " +
- "---Shield and Firewall Nodes can now fortify " +
- "---The effects of Fortifying are now ~5% lower " +
- "---Conquering a Spam Node now increases your time limit by 25 seconds instead of 15 " +
- "---Damage dealt by Attacking was slightly reduced " +
- "---The effect of Scanning was slightly reduced " +
- "---Enemy CPU Core Nodes start with slightly more attack. Misc Nodes start with slightly less defense " +
- "-Corporation Management changes: " +
- "---Added several upgrades that unlock new features " +
- "---Implemented Exporting mechanic " +
- "---Fixed many bugs "
+ "-Updates to Corporation Management: " +
+ "---Added a number of upgrades to various aspects of your Corporation " +
+ "---Rebalanced the properties of Materials and the formula for determining the valuation of the Corporation " +
+ "---Fixed a number of bugs " +
+ "-'Stats' page now shows information about current BitNode " +
+ "-You should now be able to create Corporations in other BitNodes if you have Source-File 3 " +
+ "-Added a new create-able program called b1t_flum3.exe. This program can be used to reset and switch BitNodes " +
+ "-Added an option to adjust autosave interval " +
+ "-Line feeds, newlines, and tabs will now work with the tprint() Netscript function " +
+ "-Bug fix: 'check' Terminal command was broken " +
+ "-Bug fix: 'theme' Terminal command was broken when manually specifying hex codes " +
+ "-Bug fix: Incorrect promotion requirement for 'Business'-type jobs " +
+ "-Bug fix: Settings input bars were incorrectly formatted when loading game "
}
export {CONSTANTS};
diff --git a/src/CreateProgram.js b/src/CreateProgram.js
index a442662c2..e1dce8f43 100644
--- a/src/CreateProgram.js
+++ b/src/CreateProgram.js
@@ -1,5 +1,6 @@
-import {CONSTANTS} from "./Constants.js";
-import {Player} from "./Player.js";
+import {CONSTANTS} from "./Constants.js";
+import {Player} from "./Player.js";
+import {createElement} from "../utils/HelperFunctions.js";
/* Create programs */
let Programs = {
@@ -14,22 +15,12 @@ let Programs = {
ServerProfiler: "ServerProfiler.exe",
AutoLink: "AutoLink.exe",
Flight: "fl1ght.exe",
+ BitFlume: "b1t_flum3.exe"
};
-//TODO Right now the times needed to complete work are hard-coded...
-//maybe later make this dependent on hacking level or something
+var nukeALink, bruteSshALink, ftpCrackALink, relaySmtpALink, httpWormALink, sqlInjectALink,
+ deepscanv1ALink, deepscanv2ALink, servProfilerALink, autolinkALink, bitFlumeALink;
function displayCreateProgramContent() {
- var nukeALink = document.getElementById("create-program-nuke");
- var bruteSshALink = document.getElementById("create-program-brutessh");
- var ftpCrackALink = document.getElementById("create-program-ftpcrack");
- var relaySmtpALink = document.getElementById("create-program-relaysmtp");
- var httpWormALink = document.getElementById("create-program-httpworm");
- var sqlInjectALink = document.getElementById("create-program-sqlinject");
- var deepscanv1ALink = document.getElementById("create-program-deepscanv1");
- var deepscanv2ALink = document.getElementById("create-program-deepscanv2");
- var servProfilerALink = document.getElementById("create-program-serverprofiler");
- var autolinkALink = document.getElementById("create-program-autolink");
-
nukeALink.style.display = "none";
bruteSshALink.style.display = "none";
ftpCrackALink.style.display = "none";
@@ -40,6 +31,7 @@ function displayCreateProgramContent() {
deepscanv2ALink.style.display = "none";
servProfilerALink.style.display = "none";
autolinkALink.style.display = "none";
+ bitFlumeALink.style.display = "none";
//NUKE.exe (in case you delete it lol)
if (Player.getHomeComputer().programs.indexOf(Programs.NukeProgram) == -1) {
@@ -85,6 +77,10 @@ function displayCreateProgramContent() {
if (!Player.hasProgram(Programs.AutoLink) && Player.hacking_skill >= 25) {
autolinkALink.style.display = "inline-block";
}
+ //Bit Flume
+ if (!Player.hasProgram(Programs.BitFlume) && Player.sourceFiles.length > 0 && Player.hacking_skill >= 5) {
+ bitFlumeALink.style.display = "inline-block";
+ }
}
//Returns the number of programs that are currently available to be created
@@ -134,6 +130,10 @@ function getNumAvailableCreateProgram() {
if (!Player.hasProgram(Programs.AutoLink) && Player.hacking_skill >= 25) {
++count;
}
+ //Bit Flume
+ if (!Player.hasProgram(Programs.BitFlume) && Player.sourceFiles.length > 0 && Player.hacking_skill >= 5) {
+ ++count;
+ }
if (Player.firstProgramAvailable === false && count > 0) {
Player.firstProgramAvailable = true;
document.getElementById("create-program-tab").style.display = "list-item";
@@ -144,16 +144,72 @@ function getNumAvailableCreateProgram() {
}
function initCreateProgramButtons() {
- var nukeALink = document.getElementById("create-program-nuke");
- var bruteSshALink = document.getElementById("create-program-brutessh");
- var ftpCrackALink = document.getElementById("create-program-ftpcrack");
- var relaySmtpALink = document.getElementById("create-program-relaysmtp");
- var httpWormALink = document.getElementById("create-program-httpworm");
- var sqlInjectALink = document.getElementById("create-program-sqlinject");
- var deepscanv1ALink = document.getElementById("create-program-deepscanv1");
- var deepscanv2ALink = document.getElementById("create-program-deepscanv2");
- var servProfilerALink = document.getElementById("create-program-serverprofiler");
- var autolinkALink = document.getElementById("create-program-autolink");
+ var createProgramList = document.getElementById("create-program-list");
+ nukeALink = createElement("a", {
+ class:"a-link-button", id:"create-program-nuke", innerText:Programs.NukeProgram,
+ tooltip:"This virus is used to gain root access to a machine if enough ports are opened.",
+ });
+ createProgramList.appendChild(nukeALink);
+
+ bruteSshALink = createElement("a", {
+ class:"a-link-button", id:"create-program-brutessh", innerText:Programs.BruteSSHProgram,
+ tooltip:"This program executes a brute force attack that opens SSH ports"
+ });
+ createProgramList.appendChild(bruteSshALink);
+
+ ftpCrackALink = createElement("a", {
+ class:"a-link-button", id:"create-program-ftpcrack", innerText:Programs.FTPCrackProgram,
+ tooltip:"This program cracks open FTP ports"
+ });
+ createProgramList.appendChild(ftpCrackALink);
+
+ relaySmtpALink = createElement("a", {
+ class:"a-link-button", id:"create-program-relaysmtp", innerText:Programs.RelaySMTPProgram,
+ tooltip:"This program opens SMTP ports by redirecting data"
+ }) ;
+ createProgramList.appendChild(relaySmtpALink);
+
+ httpWormALink = createElement("a", {
+ class:"a-link-button", id:"create-program-httpworm", innerText:Programs.HTTPWormProgram,
+ tooltip:"This virus opens up HTTP ports"
+ });
+ createProgramList.appendChild(httpWormALink);
+
+ sqlInjectALink = createElement("a", {
+ class:"a-link-button", id:"create-program-sqlinject", innerText:Programs.SQLInjectProgram,
+ tooltip:"This virus opens SQL ports"
+ });
+ createProgramList.appendChild(sqlInjectALink);
+
+ deepscanv1ALink = createElement("a", {
+ class:"a-link-button", id:"create-program-deepscanv1", innerText:Programs.DeepscanV1,
+ tooltip:"This program allows you to use the scan-analyze command with a depth up to 5"
+ });
+ createProgramList.appendChild(deepscanv1ALink);
+
+ deepscanv2ALink = createElement("a", {
+ class:"a-link-button", id:"create-program-deepscanv2", innerText:Programs.DeepscanV2,
+ tooltip:"This program allows you to use the scan-analyze command with a depth up to 10"
+ });
+ createProgramList.appendChild(deepscanv2ALink);
+
+ servProfilerALink = createElement("a", {
+ class:"a-link-button", id:"create-program-serverprofiler", innerText:Programs.ServerProfiler,
+ tooltip:"This program is used to display hacking and Netscript-related information about servers"
+ });
+ createProgramList.appendChild(servProfilerALink);
+
+ bitFlumeALink = createElement("a", {
+ class:"a-link-button", id:"create-program-bitflume", innerText:Programs.BitFlume,
+ tooltip:"This program creates a portal to the BitNode Nexus (allows you to restart and switch BitNodes)"
+ });
+ createProgramList.appendChild(bitFlumeALink);
+
+ autolinkALink = createElement("a", {
+ class:"a-link-button", id:"create-program-autolink", innerText:"AutoLink.exe",
+ tooltip:"This program allows you to directly connect to other servers through the 'scan-analyze' command"
+ });
+ createProgramList.appendChild(autolinkALink);
nukeALink.addEventListener("click", function() {
Player.startCreateProgramWork(Programs.NukeProgram, CONSTANTS.MillisecondsPerFiveMinutes, 1);
@@ -195,6 +251,10 @@ function initCreateProgramButtons() {
Player.startCreateProgramWork(Programs.AutoLink, CONSTANTS.MillisecondsPerQuarterHour, 25);
return false;
});
+ bitFlumeALink.addEventListener("click", function() {
+ Player.startCreateProgramWork(Programs.BitFlume, CONSTANTS.MillisecondsPerFiveMinutes / 5, 5);
+ return false;
+ });
}
export {Programs, displayCreateProgramContent, getNumAvailableCreateProgram,
diff --git a/src/InteractiveTutorial.js b/src/InteractiveTutorial.js
index e0596db28..84fe7ebfc 100644
--- a/src/InteractiveTutorial.js
+++ b/src/InteractiveTutorial.js
@@ -261,7 +261,7 @@ function iTutorialEvaluateStep() {
//next step triggered by terminal commmand
break;
case iTutorialSteps.TerminalRunScript:
- iTutorialSetText("We have 8GB of free RAM on this machine, which is enough to run our " +
+ iTutorialSetText("We have 16GB of free RAM on this machine, which is enough to run our " +
"script. Let's run our script using 'run foodnstuff.script'.");
//next step triggered by terminal commmand
break;
diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js
index d6c7de37f..adac96880 100644
--- a/src/NetscriptFunctions.js
+++ b/src/NetscriptFunctions.js
@@ -64,12 +64,20 @@ import {yesNoBoxClose, yesNoBoxGetYesButton,
yesNoBoxGetNoButton, yesNoBoxCreate,
yesNoBoxOpen} from "../utils/YesNoBox.js";
-var hasSingularitySF=false, hasAISF=false, hasBn11SF=false, hasWallStreetSF=false;
+var hasSingularitySF=false, //Source-File 4
+ hasAISF=false, //Source-File 5
+ hasBn11SF=false,
+ hasWallStreetSF=false, //Source-File 8
+ hasCorporationSF=false; //Source-File 3
+
var singularitySFLvl=1, wallStreetSFLvl=1;
//Used to check and set flags for every Source File, despite the name of the function
function initSingularitySFFlags() {
for (var i = 0; i < Player.sourceFiles.length; ++i) {
+ if (Player.sourceFiles[i].n === 3) {
+ hasCorporationSF = true;
+ }
if (Player.sourceFiles[i].n === 4) {
hasSingularitySF = true;
singularitySFLvl = Player.sourceFiles[i].lvl;
@@ -2421,5 +2429,5 @@ function NetscriptFunctions(workerScript) {
}
}
-export {NetscriptFunctions, initSingularitySFFlags, hasSingularitySF, hasBn11SF, hasWallStreetSF,
+export {NetscriptFunctions, initSingularitySFFlags, hasSingularitySF, hasBn11SF, hasWallStreetSF, hasCorporationSF,
wallStreetSFLvl};
diff --git a/src/Player.js b/src/Player.js
index 44fbe7f78..571d97964 100644
--- a/src/Player.js
+++ b/src/Player.js
@@ -1768,6 +1768,7 @@ PlayerObject.prototype.getNextCompanyPosition = function(company, entryPosType)
//Employed at this company, so just return the next position if it exists.
if ((this.companyPosition.isSoftwareJob() && entryPosType.isSoftwareJob()) ||
(this.companyPosition.isITJob() && entryPosType.isITJob()) ||
+ (this.companyPosition.isBusinessJob() && entryPosType.isBusinessJob()) ||
(this.companyPosition.isSecurityEngineerJob() && entryPosType.isSecurityEngineerJob()) ||
(this.companyPosition.isNetworkEngineerJob() && entryPosType.isNetworkEngineerJob()) ||
(this.companyPosition.isSecurityJob() && entryPosType.isSecurityJob()) ||
diff --git a/src/RedPill.js b/src/RedPill.js
index 30c813fe0..53e5fb34e 100644
--- a/src/RedPill.js
+++ b/src/RedPill.js
@@ -7,7 +7,8 @@ import {SourceFiles, SourceFile,
import {Terminal} from "./Terminal.js";
import {dialogBoxCreate} from "../utils/DialogBox.js";
-import {clearEventListeners} from "../utils/HelperFunctions.js";
+import {clearEventListeners,
+ removeChildrenFromElement} from "../utils/HelperFunctions.js";
import {yesNoBoxCreate, yesNoBoxGetYesButton,
yesNoBoxGetNoButton, yesNoBoxClose} from "../utils/YesNoBox.js";
@@ -52,7 +53,7 @@ function writeRedPillLetter(pElem, line, i=0) {
}
let redPillFlag = false;
-function hackWorldDaemon(currentNodeNumber) {
+function hackWorldDaemon(currentNodeNumber, flume=false) {
redPillFlag = true;
Engine.loadRedPillContent();
return writeRedPillLine("[ERROR] SEMPOOL INVALID").then(function() {
@@ -84,7 +85,7 @@ function hackWorldDaemon(currentNodeNumber) {
}).then(function() {
return writeRedPillLine("..............................................")
}).then(function() {
- return loadBitVerse(currentNodeNumber);
+ return loadBitVerse(currentNodeNumber, flume);
}).catch(function(e){
console.log("ERROR: " + e.toString());
});
@@ -131,12 +132,10 @@ function giveSourceFile(bitNodeNumber) {
}
}
-function loadBitVerse(destroyedBitNodeNum) {
+function loadBitVerse(destroyedBitNodeNum, flume=false) {
//Clear the screen
var container = document.getElementById("red-pill-container");
- while (container.firstChild) {
- container.removeChild(container.firstChild);
- }
+ removeChildrenFromElement(container);
//Create the Bit Verse
var bitVerseImage = document.createElement("pre");
@@ -218,7 +217,7 @@ function loadBitVerse(destroyedBitNodeNum) {
return;
}
yesNoBoxCreate("BitNode-" + i + ": " + bitNode.name + " " + bitNode.info);
- createBitNodeYesNoEventListeners(i, destroyedBitNodeNum);
+ createBitNodeYesNoEventListeners(i, destroyedBitNodeNum, flume);
});
} else {
elem.addEventListener("click", function() {
@@ -289,16 +288,14 @@ function createBitNode(n) {
"";
}
-function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode) {
+function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode, flume=false) {
var yesBtn = yesNoBoxGetYesButton();
yesBtn.innerHTML = "Enter BitNode-" + newBitNode;
yesBtn.addEventListener("click", function() {
- giveSourceFile(destroyedBitNode);
+ if (!flume) {giveSourceFile(destroyedBitNode);}
redPillFlag = false;
var container = document.getElementById("red-pill-container");
- while (container.firstChild) {
- container.removeChild(container.firstChild);
- }
+ removeChildrenFromElement(container);
//Set new Bit Node
Player.bitNodeN = newBitNode;
diff --git a/src/Script.js b/src/Script.js
index baed88688..59575bc1d 100644
--- a/src/Script.js
+++ b/src/Script.js
@@ -22,6 +22,7 @@ import {addWorkerScript, killWorkerScript} from "./NetscriptWorker.js";
import {Player} from "./Player.js";
import {AllServers, processSingleServerGrowth} from "./Server.js";
import {Settings} from "./Settings.js";
+import {post} from "./Terminal.js";
import {dialogBoxCreate} from "../utils/DialogBox.js";
import {Reviver, Generic_toJSON,
diff --git a/src/Settings.js b/src/Settings.js
index 11f1c9de3..c4d7e450d 100644
--- a/src/Settings.js
+++ b/src/Settings.js
@@ -1,3 +1,5 @@
+import {Engine} from "./engine.js";
+
/* Settings.js */
let Settings = {
CodeInstructionRunTime: 50,
@@ -5,6 +7,7 @@ let Settings = {
MaxPortCapacity: 50,
SuppressMessages: false,
SuppressFactionInvites: false,
+ AutosaveInterval: 60,
}
function loadSettings(saveString) {
@@ -17,6 +20,7 @@ function initSettings() {
Settings.MaxPortCapacity = 50;
Settings.SuppressMessages = false;
Settings.SuppressFactionInvites = false;
+ Settings.AutosaveInterval = 60;
}
function setSettingsLabels() {
@@ -25,6 +29,7 @@ function setSettingsLabels() {
var nsPortLimit = document.getElementById("settingsNSPortRangeValLabel");
var suppressMsgs = document.getElementById("settingsSuppressMessages");
var suppressFactionInv = document.getElementById("settingsSuppressFactionInvites")
+ var autosaveInterval = document.getElementById("settingsAutosaveIntervalValLabel");
//Initialize values on labels
nsExecTime.innerHTML = Settings.CodeInstructionRunTime + "ms";
@@ -32,23 +37,43 @@ function setSettingsLabels() {
nsPortLimit.innerHTML = Settings.MaxPortCapacity;
suppressMsgs.checked = Settings.SuppressMessages;
suppressFactionInv.checked = Settings.SuppressFactionInvites;
+ autosaveInterval.innerHTML = Settings.AutosaveInterval;
//Set handlers for when input changes
- document.getElementById("settingsNSExecTimeRangeVal").oninput = function() {
+ var nsExecTimeInput = document.getElementById("settingsNSExecTimeRangeVal");
+ var nsLogRangeInput = document.getElementById("settingsNSLogRangeVal");
+ var nsPortRangeInput = document.getElementById("settingsNSPortRangeVal");
+ var nsAutosaveIntervalInput = document.getElementById("settingsAutosaveIntervalVal");
+ nsExecTimeInput.value = Settings.CodeInstructionRunTime;
+ nsLogRangeInput.value = Settings.MaxLogCapacity;
+ nsPortRangeInput.value = Settings.MaxPortCapacity;
+ nsAutosaveIntervalInput.value = Settings.AutosaveInterval;
+
+ nsExecTimeInput.oninput = function() {
nsExecTime.innerHTML = this.value + 'ms';
Settings.CodeInstructionRunTime = this.value;
};
- document.getElementById("settingsNSLogRangeVal").oninput = function() {
+ nsLogRangeInput.oninput = function() {
nsLogLimit.innerHTML = this.value;
Settings.MaxLogCapacity = this.value;
};
- document.getElementById("settingsNSPortRangeVal").oninput = function() {
+ nsPortRangeInput.oninput = function() {
nsPortLimit.innerHTML = this.value;
Settings.MaxPortCapacity = this.value;
};
+ nsAutosaveIntervalInput.oninput = function() {
+ autosaveInterval.innerHTML = this.value;
+ Settings.AutosaveInterval = Number(this.value);
+ if (Number(this.value) === 0) {
+ Engine.Counters.autoSaveCounter = Infinity;
+ } else {
+ Engine.Counters.autoSaveCounter = Number(this.value) * 5;
+ }
+ };
+
document.getElementById("settingsSuppressMessages").onclick = function() {
Settings.SuppressMessages = this.checked;
};
diff --git a/src/Terminal.js b/src/Terminal.js
index 611a7d171..508a4a68e 100644
--- a/src/Terminal.js
+++ b/src/Terminal.js
@@ -37,7 +37,7 @@ import {logBoxCreate} from "../utils/LogBox.js";
//If replace is true then spaces are replaced with " "
function post(input, replace=true) {
if (replace) {
- $("#terminal-input").before('' + input.replace( / /g, " " ) + ' ');
+ $("#terminal-input").before('' + input.replace( / /g, " " ) + ' ');
} else {
$("#terminal-input").before('' + input + ' ');
}
@@ -1634,6 +1634,9 @@ let Terminal = {
post("Defense: " + Player.defense + " / 1500");
post("Dexterity: " + Player.dexterity + " / 1500");
post("Agility: " + Player.agility + " / 1500");
+ break;
+ case Programs.BitFlume:
+ hackWorldDaemon(Player.bitNodeN, true);
break;
default:
post("Invalid executable. Cannot be run");
diff --git a/src/engine.js b/src/engine.js
index 5b4a0523f..60823c195 100644
--- a/src/engine.js
+++ b/src/engine.js
@@ -1,6 +1,7 @@
import {dialogBoxCreate} from "../utils/DialogBox.js";
import {gameOptionsBoxOpen, gameOptionsBoxClose}from "../utils/GameOptions.js";
-import {clearEventListeners, createElement} from "../utils/HelperFunctions.js";
+import {clearEventListeners, createElement,
+ removeChildrenFromElement} from "../utils/HelperFunctions.js";
import numeral from "../utils/numeral.min.js";
import {formatNumber,
convertTimeMsToTimeElapsedString} from "../utils/StringHelperFunctions.js";
@@ -33,7 +34,7 @@ import {initLiterature} from "./Literature.js";
import {checkForMessagesToSend, initMessages} from "./Message.js";
import {inMission, currMission} from "./Missions.js";
import {initSingularitySFFlags,
- hasSingularitySF} from "./NetscriptFunctions.js";
+ hasSingularitySF, hasCorporationSF} from "./NetscriptFunctions.js";
import {updateOnlineScriptTimes,
runScriptsLoop} from "./NetscriptWorker.js";
import {Player} from "./Player.js";
@@ -491,74 +492,88 @@ let Engine = {
/* Display character info */
displayCharacterInfo: function() {
+ removeChildrenFromElement(Engine.Display.characterInfo);
+
var companyPosition = "";
if (Player.companyPosition != "") {
companyPosition = Player.companyPosition.positionName;
}
- var bnText = "";
- if (Player.sourceFiles.length !== 0) {
- bnText = " Current BitNode: " + Player.bitNodeN;
- }
-
var intText = "";
if (Player.intelligence > 0) {
intText = 'Intelligence: ' + (Player.intelligence).toLocaleString() + " ";
}
- Engine.Display.characterInfo.innerHTML =
- ('General ' +
- 'Current City: ' + Player.city + ' ' +
- 'Employer: ' + Player.companyName + ' ' +
- 'Job Title: ' + companyPosition + ' ' +
- 'Money: $' + formatNumber(Player.money.toNumber(), 2)+ ' ' +
- 'Stats ' +
- 'Hacking Level: ' + (Player.hacking_skill).toLocaleString() +
- " (" + numeral(Player.hacking_exp).format('(0.000a)') + ' experience) ' +
- 'Strength: ' + (Player.strength).toLocaleString() +
- " (" + numeral(Player.strength_exp).format('(0.000a)') + ' experience) ' +
- 'Defense: ' + (Player.defense).toLocaleString() +
- " (" + numeral(Player.defense_exp).format('(0.000a)')+ ' experience) ' +
- 'Dexterity: ' + (Player.dexterity).toLocaleString() +
- " (" + numeral(Player.dexterity_exp).format('(0.000a)') + ' experience) ' +
- 'Agility: ' + (Player.agility).toLocaleString() +
- " (" + numeral(Player.agility_exp).format('(0.000a)') + ' experience) ' +
- 'Charisma: ' + (Player.charisma).toLocaleString() +
- " (" + numeral(Player.charisma_exp).format('(0.000a)') + ' experience) ' +
- intText +
- 'Multipliers ' +
- 'Hacking Chance multiplier: ' + formatNumber(Player.hacking_chance_mult * 100, 2) + '% ' +
- 'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '% ' +
- 'Hacking Money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '% ' +
- 'Hacking Growth multiplier: ' + formatNumber(Player.hacking_grow_mult * 100, 2) + '% ' +
- 'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '% ' +
- 'Hacking Experience multiplier: ' + formatNumber(Player.hacking_exp_mult * 100, 2) + '% ' +
- 'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '% ' +
- 'Strength Experience multiplier: ' + formatNumber(Player.strength_exp_mult * 100, 2) + '% ' +
- 'Defense Level multiplier: ' + formatNumber(Player.defense_mult * 100, 2) + '% ' +
- 'Defense Experience multiplier: ' + formatNumber(Player.defense_exp_mult * 100, 2) + '% ' +
- 'Dexterity Level multiplier: ' + formatNumber(Player.dexterity_mult * 100, 2) + '% ' +
- 'Dexterity Experience multiplier: ' + formatNumber(Player.dexterity_exp_mult * 100, 2) + '% ' +
- 'Agility Level multiplier: ' + formatNumber(Player.agility_mult * 100, 2) + '% ' +
- 'Agility Experience multiplier: ' + formatNumber(Player.agility_exp_mult * 100, 2) + '% ' +
- 'Charisma Level multiplier: ' + formatNumber(Player.charisma_mult * 100, 2) + '% ' +
- 'Charisma Experience multiplier: ' + formatNumber(Player.charisma_exp_mult * 100, 2) + '% ' +
- 'Hacknet Node production multiplier: ' + formatNumber(Player.hacknet_node_money_mult * 100, 2) + '% ' +
- 'Hacknet Node purchase cost multiplier: ' + formatNumber(Player.hacknet_node_purchase_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node RAM upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_ram_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node Core purchase cost multiplier: ' + formatNumber(Player.hacknet_node_core_cost_mult * 100, 2) + '% ' +
- 'Hacknet Node level upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_level_cost_mult * 100, 2) + '% ' +
- 'Company reputation gain multiplier: ' + formatNumber(Player.company_rep_mult * 100, 2) + '% ' +
- 'Faction reputation gain multiplier: ' + formatNumber(Player.faction_rep_mult * 100, 2) + '% ' +
- 'Salary multiplier: ' + formatNumber(Player.work_money_mult * 100, 2) + '% ' +
- 'Crime success multiplier: ' + formatNumber(Player.crime_success_mult * 100, 2) + '% ' +
- 'Crime money multiplier: ' + formatNumber(Player.crime_money_mult * 100, 2) + '% ' +
- 'Misc ' +
- 'Servers owned: ' + Player.purchasedServers.length + ' ' +
- 'Hacknet Nodes owned: ' + Player.hacknetNodes.length + ' ' +
- 'Augmentations installed: ' + Player.augmentations.length + ' ' +
- 'Time played since last Augmentation: ' + convertTimeMsToTimeElapsedString(Player.playtimeSinceLastAug) + ' ' +
- 'Time played: ' + convertTimeMsToTimeElapsedString(Player.totalPlaytime) +
- bnText + ' ').replace( / /g, " " );
+
+ Engine.Display.characterInfo.appendChild(createElement("pre", {
+ innerHTML:
+ 'General ' +
+ 'Current City: ' + Player.city + ' ' +
+ 'Employer: ' + Player.companyName + ' ' +
+ 'Job Title: ' + companyPosition + ' ' +
+ 'Money: $' + formatNumber(Player.money.toNumber(), 2)+ ' ' +
+ 'Stats ' +
+ 'Hacking Level: ' + (Player.hacking_skill).toLocaleString() +
+ " (" + numeral(Player.hacking_exp).format('(0.000a)') + ' experience) ' +
+ 'Strength: ' + (Player.strength).toLocaleString() +
+ " (" + numeral(Player.strength_exp).format('(0.000a)') + ' experience) ' +
+ 'Defense: ' + (Player.defense).toLocaleString() +
+ " (" + numeral(Player.defense_exp).format('(0.000a)')+ ' experience) ' +
+ 'Dexterity: ' + (Player.dexterity).toLocaleString() +
+ " (" + numeral(Player.dexterity_exp).format('(0.000a)') + ' experience) ' +
+ 'Agility: ' + (Player.agility).toLocaleString() +
+ " (" + numeral(Player.agility_exp).format('(0.000a)') + ' experience) ' +
+ 'Charisma: ' + (Player.charisma).toLocaleString() +
+ " (" + numeral(Player.charisma_exp).format('(0.000a)') + ' experience) ' +
+ intText +
+ 'Multipliers ' +
+ 'Hacking Chance multiplier: ' + formatNumber(Player.hacking_chance_mult * 100, 2) + '% ' +
+ 'Hacking Speed multiplier: ' + formatNumber(Player.hacking_speed_mult * 100, 2) + '% ' +
+ 'Hacking Money multiplier: ' + formatNumber(Player.hacking_money_mult * 100, 2) + '% ' +
+ 'Hacking Growth multiplier: ' + formatNumber(Player.hacking_grow_mult * 100, 2) + '% ' +
+ 'Hacking Level multiplier: ' + formatNumber(Player.hacking_mult * 100, 2) + '% ' +
+ 'Hacking Experience multiplier: ' + formatNumber(Player.hacking_exp_mult * 100, 2) + '% ' +
+ 'Strength Level multiplier: ' + formatNumber(Player.strength_mult * 100, 2) + '% ' +
+ 'Strength Experience multiplier: ' + formatNumber(Player.strength_exp_mult * 100, 2) + '% ' +
+ 'Defense Level multiplier: ' + formatNumber(Player.defense_mult * 100, 2) + '% ' +
+ 'Defense Experience multiplier: ' + formatNumber(Player.defense_exp_mult * 100, 2) + '% ' +
+ 'Dexterity Level multiplier: ' + formatNumber(Player.dexterity_mult * 100, 2) + '% ' +
+ 'Dexterity Experience multiplier: ' + formatNumber(Player.dexterity_exp_mult * 100, 2) + '% ' +
+ 'Agility Level multiplier: ' + formatNumber(Player.agility_mult * 100, 2) + '% ' +
+ 'Agility Experience multiplier: ' + formatNumber(Player.agility_exp_mult * 100, 2) + '% ' +
+ 'Charisma Level multiplier: ' + formatNumber(Player.charisma_mult * 100, 2) + '% ' +
+ 'Charisma Experience multiplier: ' + formatNumber(Player.charisma_exp_mult * 100, 2) + '% ' +
+ 'Hacknet Node production multiplier: ' + formatNumber(Player.hacknet_node_money_mult * 100, 2) + '% ' +
+ 'Hacknet Node purchase cost multiplier: ' + formatNumber(Player.hacknet_node_purchase_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node RAM upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_ram_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node Core purchase cost multiplier: ' + formatNumber(Player.hacknet_node_core_cost_mult * 100, 2) + '% ' +
+ 'Hacknet Node level upgrade cost multiplier: ' + formatNumber(Player.hacknet_node_level_cost_mult * 100, 2) + '% ' +
+ 'Company reputation gain multiplier: ' + formatNumber(Player.company_rep_mult * 100, 2) + '% ' +
+ 'Faction reputation gain multiplier: ' + formatNumber(Player.faction_rep_mult * 100, 2) + '% ' +
+ 'Salary multiplier: ' + formatNumber(Player.work_money_mult * 100, 2) + '% ' +
+ 'Crime success multiplier: ' + formatNumber(Player.crime_success_mult * 100, 2) + '% ' +
+ 'Crime money multiplier: ' + formatNumber(Player.crime_money_mult * 100, 2) + '% ' +
+ 'Misc ' +
+ 'Servers owned: ' + Player.purchasedServers.length + ' ' +
+ 'Hacknet Nodes owned: ' + Player.hacknetNodes.length + ' ' +
+ 'Augmentations installed: ' + Player.augmentations.length + ' ' +
+ 'Time played since last Augmentation: ' + convertTimeMsToTimeElapsedString(Player.playtimeSinceLastAug) + ' ' +
+ 'Time played: ' + convertTimeMsToTimeElapsedString(Player.totalPlaytime),
+ }));
+
+ if (Player.sourceFiles.length !== 0) {
+ var index = "BitNode" + Player.bitNodeN;
+
+ Engine.Display.characterInfo.appendChild(createElement("p", {
+ width:"60%",
+ innerHTML:
+ " Current BitNode: " + Player.bitNodeN + " (" + BitNodes[index].name + ") ",
+ }));
+
+ Engine.Display.characterInfo.appendChild(createElement("p", {
+ width:"60%", fontSize: "13px", marginLeft:"4%",
+ innerHTML:BitNodes[index].info,
+ }))
+ }
},
/* Display locations in the world*/
@@ -589,8 +604,8 @@ let Engine = {
case Locations.Sector12:
Engine.sector12LocationsList.style.display = "inline";
- //City hall only in BitNode-3
- if (Player.bitNodeN === 3) {
+ //City hall only in BitNode-3/with Source-File 3
+ if (Player.bitNodeN === 3 || hasCorporationSF) {
document.getElementById("sector12-cityhall-li").style.display = "block";
} else {
document.getElementById("sector12-cityhall-li").style.display = "none";
@@ -938,7 +953,14 @@ let Engine = {
checkCounters: function() {
if (Engine.Counters.autoSaveCounter <= 0) {
saveObject.saveGame(indexedDb);
- Engine.Counters.autoSaveCounter = 300;
+ if (Settings.AutosaveInterval == null) {
+ Settings.AutosaveInterval = 60;
+ }
+ if (Settings.AutosaveInterval === 0) {
+ Engine.Counters.autoSaveCounter = Infinity;
+ } else {
+ Engine.Counters.autoSaveCounter = Settings.AutosaveInterval * 5;
+ }
}
if (Engine.Counters.updateSkillLevelsCounter <= 0) {
@@ -1370,7 +1392,7 @@ let Engine = {
Engine.Display.missionContent.style.display = "none";
//Character info
- Engine.Display.characterInfo = document.getElementById("character-info");
+ Engine.Display.characterInfo = document.getElementById("character-content");
//Location lists
Engine.aevumLocationsList = document.getElementById("aevum-locations-list");
diff --git a/utils/HelperFunctions.js b/utils/HelperFunctions.js
index c8d790c81..4f3328ac8 100644
--- a/utils/HelperFunctions.js
+++ b/utils/HelperFunctions.js
@@ -70,10 +70,13 @@ function createElement(type, params) {
if (params.display) {el.style.display = params.display;}
if (params.visibility) {el.style.visibility = params.visibility;}
if (params.margin) {el.style.margin = params.margin;}
+ if (params.marginLeft) {el.style.marginLeft = params.marginLeft;}
if (params.padding) {el.style.padding = params.padding;}
if (params.color) {el.style.color = params.color;}
if (params.border) {el.style.border = params.border;}
if (params.float) {el.style.cssFloat = params.float;}
+ if (params.fontSize) {el.style.fontSize = params.fontSize;}
+ if (params.width) {el.style.width = params.width;}
if (params.backgroundColor) {
el.style.backgroundColor = params.backgroundColor
}