From c8421168b63a0279163c7c73a0e47e4e5ebac550 Mon Sep 17 00:00:00 2001 From: danielyxie Date: Fri, 29 Jun 2018 00:39:05 -0500 Subject: [PATCH] Copying a NetscriptJS script with scp now properly clears its 'module'. --- dist/engine.bundle.js | 83 ++++++++++++++++++++-------------- src/Constants.js | 7 ++- src/NetscriptFunctions.js | 1 + src/Terminal.js | 3 +- utils/StringHelperFunctions.ts | 7 ++- 5 files changed, 60 insertions(+), 41 deletions(-) diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js index c1ccd8efa..1e9aef6a5 100644 --- a/dist/engine.bundle.js +++ b/dist/engine.bundle.js @@ -2860,13 +2860,13 @@ function convertTimeMsToTimeElapsedString(time) { const secTruncMinutes = secTruncHours % secondPerMinute; const seconds = secTruncMinutes; let res = ""; - if (days) { + if (days > 0) { res += `${days} days `; } - if (hours) { + if (hours > 0) { res += `${hours} hours `; } - if (minutes) { + if (minutes > 0) { res += `${minutes} minutes `; } res += `${seconds} seconds `; @@ -2878,7 +2878,7 @@ function longestCommonStart(strings) { if (!containsAllStrings(strings)) { return ""; } - if (strings.length == 0) { + if (strings.length === 0) { return ""; } const A = strings.concat().sort(); @@ -2886,7 +2886,8 @@ function longestCommonStart(strings) { const a2 = A[A.length - 1]; const L = a1.length; let i = 0; - while (i < L && a1.charAt(i).toLowerCase() === a2.charAt(i).toLowerCase()) { + const areEqualCaseInsensitive = (a, b) => a.toUpperCase() === b.toUpperCase(); + while (i < L && areEqualCaseInsensitive(a1.charAt(i), a2.charAt(i))) { i++; } return a1.substring(0, i); @@ -2912,16 +2913,16 @@ function formatNumber(num, numFractionDigits) { exports.formatNumber = formatNumber; // Count the number of times a substring occurs in a string function numOccurrences(text, subString) { - text += ""; - subString += ""; - if (subString.length <= 0) { - return (text.length + 1); + const input = `${text}`; + const search = `${subString}`; + if (search.length <= 0) { + return (input.length + 1); } let n = 0; let pos = 0; - const step = subString.length; + const step = search.length; while (true) { - pos = text.indexOf(subString, pos); + pos = input.indexOf(search, pos); if (pos >= 0) { ++n; pos += step; @@ -2949,6 +2950,7 @@ function numNetscriptOperators(text) { numOccurrences(text, "==") + numOccurrences(text, "!="); if (isNaN(total)) { + // tslint:disable-next-line:max-line-length const message = "ERROR in counting number of operators in script. This is a bug, please report to game developer"; DialogBox_1.dialogBoxCreate(message, false); return 0; @@ -2958,11 +2960,11 @@ function numNetscriptOperators(text) { exports.numNetscriptOperators = numNetscriptOperators; // Checks if a string contains HTML elements function isHTML(str) { - const a = document.createElement("div"); - a.innerHTML = str; - const c = a.childNodes; - for (let i = c.length; i--;) { - if (c[i].nodeType == 1) { + const element = document.createElement("div"); + element.innerHTML = str; + const c = element.childNodes; + for (let i = c.length - 1; i >= 0; i--) { + if (c[i].nodeType === 1) { return true; } } @@ -3491,7 +3493,12 @@ let CONSTANTS = { "at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)
" + "* The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means " + "that level N of Source-File 12 now increases all multipliers by N%
" + - "* The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)
" + "* The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)
" + + "* Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)
" + + "* When an Infiltration is finished, you will now return back to the company's page, rather than the city
" + + "* Infiltration faction reputation selector now remembers your last choice
" + + "* Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account " + + "the script's changes.
" } @@ -12436,14 +12443,14 @@ function initBitNodeMultipliers() { BitNodeMultipliers.CorporationValuation = 0.01; break; case 12: //The Recursion - let sf12Lvl = 0; - for (let i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles.length; i++) { + var sf12Lvl = 0; + for (var i = 0; i < _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles.length; i++) { if (_Player__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles[i].n === 12) { sf12Lvl = _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles[i].lvl; } } - const inc = Math.pow(1.01, sf12Lvl); - const dec = Math.pow(0.99, sf12Lvl); + var inc = Math.pow(1.01, sf12Lvl); + var dec = Math.pow(0.99, sf12Lvl); BitNodeMultipliers.HackingLevelMultiplier = dec; BitNodeMultipliers.ServerMaxMoney = dec; @@ -15842,8 +15849,8 @@ function initSettings() { Settings.MaxPortCapacity = 50; Settings.SuppressMessages = false; Settings.SuppressFactionInvites = false; - Settings.SuppressTravelConfirmation = false, - Settings.SuppressBuyAugmentationConfirmation = false, + Settings.SuppressTravelConfirmation = false; + Settings.SuppressBuyAugmentationConfirmation = false; Settings.AutosaveInterval = 60; Settings.DisableHotkeys = false; } @@ -17664,7 +17671,7 @@ $(document).keyup(function(e) { }) //Implements a tab completion feature for terminal -// command - Command (first arg only) +// command - Terminal command except for the last incomplete argument // arg - Incomplete argument string that the function will try to complete, or will display // a series of possible options for // allPossibilities - Array of strings containing all possibilities that the @@ -18826,6 +18833,7 @@ let Terminal = { var oldScript = destServer.scripts[i]; oldScript.code = sourceScript.code; oldScript.ramUsage = sourceScript.ramUsage; + oldScript.module = ""; post(scriptname + " overwriten on " + destServer.hostname); return; } @@ -30122,7 +30130,7 @@ const Crimes = { dexterity_exp: 60, agility_exp: 60, - hacking_skill_success_weight: 0.5, + hacking_success_weight: 0.5, dexterity_success_weight: 1, agility_success_weight: 1, @@ -30144,7 +30152,7 @@ const Crimes = { dexterity_exp: 150, charisma_exp: 15, - hacking_skill_success_weight: 0.05, + hacking_success_weight: 0.05, dexterity_success_weight: 1.25, intelligence_exp: 2 * _Constants__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain, @@ -30185,7 +30193,7 @@ const Crimes = { agility_exp: 80, charisma_exp: 40, - hacking_skill_success_weight: 1, + hacking_success_weight: 1, strength_success_weight: 1, dexterity_success_weight: 4, agility_success_weight: 2, @@ -30232,7 +30240,7 @@ const Crimes = { agility_exp: 450, charisma_exp: 450, - hacking_skill_success_weight: 1, + hacking_success_weight: 1, strength_success_weight: 1, defense_success_weight: 1, dexterity_success_weight: 1, @@ -31568,6 +31576,7 @@ function NetscriptFunctions(workerScript) { var oldScript = destServer.scripts[i]; oldScript.code = sourceScript.code; oldScript.ramUsage = sourceScript.ramUsage; + oldScript.module = ""; return true; } } @@ -53348,8 +53357,8 @@ function applySourceFile(srcFile) { _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= incMult; break; case 12: //The testing ground - const inc = 1 + (srcFile.level/100); - const dec = 1 - (srcFile.level/100); + var inc = 1 + (srcFile.level/100); + var dec = 1 - (srcFile.level/100); _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= inc; _Player__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= inc; @@ -69587,7 +69596,9 @@ function purchaseRamForHomeComputer(cost) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -// Contains the "information" property for all the Factions, which is just a description of each faction +/** + * Contains the "information" property for all the Factions, which is just a description of each faction + */ class FactionInfo { constructor(infoText, enemies, offerHackingMission, offerHackingWork, offerFieldWork, offerSecurityWork) { this.infoText = infoText; @@ -69601,7 +69612,11 @@ class FactionInfo { this.augmentationRepRequirementMult = 1; } } -const FactionInfos = { +/** + * A map of all factions and associated info to them. + */ +// tslint:disable-next-line:variable-name +exports.FactionInfos = { // Endgame Illuminati: new FactionInfo("Humanity never changes. No matter how civilized society becomes, it will eventually" + "fall back into chaos. And from this chaos, we are the Invisible hand that guides them to order. ", [], true, true, true, false), @@ -69713,7 +69728,6 @@ const FactionInfos = { "faction, reputation can only be gained through Bladeburner actions. Completing " + "Bladeburner contracts/operations will increase your reputation.", [], false, false, false, false), }; -exports.FactionInfos = FactionInfos; /***/ }), @@ -99962,8 +99976,7 @@ let NetscriptFunctions = "getActionTime|getActionEstimatedSuccessChance|getActionCountRemaining|" + "getRank|getSkillPoints|getSkillLevel|upgradeSkill|getTeamSize|" + "setTeamSize|getCityEstimatedPopulation|getCityEstimatedCommunities|" + - "getCityChaos|switchCity|getStamina|joinBladeburnerFaction" - ; + "getCityChaos|switchCity|getStamina|joinBladeburnerFaction"; var NetscriptHighlightRules = function(options) { var keywordMapper = this.createKeywordMapper({ diff --git a/src/Constants.js b/src/Constants.js index 2d5413994..76d09a6a3 100644 --- a/src/Constants.js +++ b/src/Constants.js @@ -498,7 +498,12 @@ let CONSTANTS = { "at levels 1, 2, and 3, respectively (increased from 8%, 12%, 14%)
" + "* The effect of Source-File 12 is now additive with itself, rather than multiplicative. This means " + "that level N of Source-File 12 now increases all multipliers by N%
" + - "* The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)
" + "* The setting to suppress the confirmation box when purchasing Augmentations was moved into the main Options menu (by Github user hydroflame)
" + + "* Bug Fix: Crime Success rates were being calculated incorrectly (by Github user hydroflame)
" + + "* When an Infiltration is finished, you will now return back to the company's page, rather than the city
" + + "* Infiltration faction reputation selector now remembers your last choice
" + + "* Bug Fix: Copying a NetscriptJS script to another server using scp now properly takes into account " + + "the script's changes.
" } diff --git a/src/NetscriptFunctions.js b/src/NetscriptFunctions.js index 87dbf6bb1..934062ee5 100644 --- a/src/NetscriptFunctions.js +++ b/src/NetscriptFunctions.js @@ -877,6 +877,7 @@ function NetscriptFunctions(workerScript) { var oldScript = destServer.scripts[i]; oldScript.code = sourceScript.code; oldScript.ramUsage = sourceScript.ramUsage; + oldScript.module = ""; return true; } } diff --git a/src/Terminal.js b/src/Terminal.js index d2f6bff69..1fe175872 100644 --- a/src/Terminal.js +++ b/src/Terminal.js @@ -304,7 +304,7 @@ $(document).keyup(function(e) { }) //Implements a tab completion feature for terminal -// command - Command (first arg only) +// command - Terminal command except for the last incomplete argument // arg - Incomplete argument string that the function will try to complete, or will display // a series of possible options for // allPossibilities - Array of strings containing all possibilities that the @@ -1466,6 +1466,7 @@ let Terminal = { var oldScript = destServer.scripts[i]; oldScript.code = sourceScript.code; oldScript.ramUsage = sourceScript.ramUsage; + oldScript.module = ""; post(scriptname + " overwriten on " + destServer.hostname); return; } diff --git a/utils/StringHelperFunctions.ts b/utils/StringHelperFunctions.ts index c0efbad32..a6526f830 100644 --- a/utils/StringHelperFunctions.ts +++ b/utils/StringHelperFunctions.ts @@ -49,14 +49,13 @@ function longestCommonStart(strings: string[]): string { if (!containsAllStrings(strings)) {return ""; } if (strings.length === 0) {return ""; } - const A: string[] = strings.concat() - .sort(); + const A: string[] = strings.concat().sort(); const a1: string = A[0]; const a2: string = A[A.length - 1]; const L: number = a1.length; let i: number = 0; const areEqualCaseInsensitive: EqualityFunc = (a: string, b: string) => a.toUpperCase() === b.toUpperCase(); - while (i < L && areEqualCaseInsensitive(a1, a2)) { + while (i < L && areEqualCaseInsensitive(a1.charAt(i), a2.charAt(i))) { i++; } @@ -133,7 +132,7 @@ function isHTML(str: string): boolean { const element: HTMLDivElement = document.createElement("div"); element.innerHTML = str; const c: NodeListOf = element.childNodes; - for (let i: number = c.length; i >= 0; i--) { + for (let i: number = c.length-1; i >= 0; i--) { if (c[i].nodeType === 1) { return true; }